Sha256: 9d27116fc5396f75f201d80416eb49a69c651bda551699e1a0f38c0df20710bb
Contents?: true
Size: 1.48 KB
Versions: 2
Compression:
Stored size: 1.48 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 wrap(&blk) branch(default_options).wrap(&blk) end def plugin(*args, **opts) klass = is_a?(Session) ? self.class : Session klass = Class.new(klass) klass.instance_variable_set(:@default_options, klass.default_options.merge(default_options)) klass.plugin(*args, **opts).new end # deprecated def plugins(*args, **opts) klass = is_a?(Session) ? self.class : Session klass = Class.new(klass) klass.instance_variable_set(:@default_options, klass.default_options.merge(default_options)) klass.plugins(*args, **opts).new end 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?(Session) Session.new(options, &blk) end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
httpx-0.6.7 | lib/httpx/chainable.rb |
httpx-0.6.6 | lib/httpx/chainable.rb |