Sha256: 20fc3abde9471145663e0e21854e243543fa7e8e77c6f6cb5c9c4494305ec078
Contents?: true
Size: 1.16 KB
Versions: 1
Compression:
Stored size: 1.16 KB
Contents
# frozen_string_literal: true module HTTPX module Chainable %i[head get post put delete trace options connect patch].each do |meth| define_method meth do |*uri, **options| request(meth, uri, **options) end end def request(verb, uri, **options) branch(default_options).request(verb, uri, **options) end def timeout(**args) branch(default_options.with_timeout(args)) end def headers(headers) branch(default_options.with_headers(headers)) end def accept(type) headers("accept" => String(type)) end def plugin(*plugins) klass = is_a?(Client) ? self.class : Client klass = Class.new(klass) klass.instance_variable_set(:@default_options, klass.default_options.merge(default_options)) klass.plugins(plugins).new end alias_method :plugins, :plugin def with(options, &blk) branch(default_options.merge(options), &blk) end private def default_options @options || Options.new end # :nodoc: def branch(options, &blk) return self.class.new(options, &blk) if is_a?(Client) Client.new(options, &blk) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
httpx-0.2.1 | lib/httpx/chainable.rb |