Sha256: 57a36565ca9e481f9de8f23041bc314e6ab0f6e68b200e4255a86910932854ff
Contents?: true
Size: 1.14 KB
Versions: 1
Compression:
Stored size: 1.14 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(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.0 | lib/httpx/chainable.rb |