Module: EzClient::HttprbCompatibility
- Defined in:
- lib/ezclient/httprb_compatibility.rb
Constant Summary collapse
- KEYWORD_PARAMETER_TYPES =
%i[key keyreq].freeze
Class Method Summary collapse
- .basic_auth(client, opts) ⇒ Object
- .build_request(client, verb, url, opts) ⇒ Object
- .client_supports_build_request? ⇒ Boolean
- .httprb_v6_or_later? ⇒ Boolean
- .keyword_initializer?(method) ⇒ Boolean
- .persistent_client(origin, keep_alive_timeout) ⇒ Object
- .redirector(opts) ⇒ Object
- .response(**attrs) ⇒ Object
Class Method Details
.basic_auth(client, opts) ⇒ Object
24 25 26 27 28 29 30 |
# File 'lib/ezclient/httprb_compatibility.rb', line 24 def basic_auth(client, opts) if keyword_initializer?(client.method(:basic_auth)) client.basic_auth(**opts) else client.basic_auth(opts) end end |
.build_request(client, verb, url, opts) ⇒ Object
16 17 18 19 20 21 22 |
# File 'lib/ezclient/httprb_compatibility.rb', line 16 def build_request(client, verb, url, opts) if client_supports_build_request? client.build_request(verb, url, opts) else HTTP::Request::Builder.new(client..merge(opts)).build(verb, url) end end |
.client_supports_build_request? ⇒ Boolean
8 9 10 |
# File 'lib/ezclient/httprb_compatibility.rb', line 8 def client_supports_build_request? HTTP::Client.method_defined?(:build_request) end |
.httprb_v6_or_later? ⇒ Boolean
12 13 14 |
# File 'lib/ezclient/httprb_compatibility.rb', line 12 def httprb_v6_or_later? Gem::Version.new(HTTP::VERSION) >= Gem::Version.new("6") end |
.keyword_initializer?(method) ⇒ Boolean
56 57 58 |
# File 'lib/ezclient/httprb_compatibility.rb', line 56 def keyword_initializer?(method) method.parameters.any? { |type, _name| KEYWORD_PARAMETER_TYPES.include?(type) } end |
.persistent_client(origin, keep_alive_timeout) ⇒ Object
40 41 42 43 44 45 46 |
# File 'lib/ezclient/httprb_compatibility.rb', line 40 def persistent_client(origin, keep_alive_timeout) if client_supports_build_request? HTTP.persistent(origin, timeout: keep_alive_timeout) else HTTP::Client.new(persistent: origin, keep_alive_timeout: keep_alive_timeout) end end |
.redirector(opts) ⇒ Object
32 33 34 35 36 37 38 |
# File 'lib/ezclient/httprb_compatibility.rb', line 32 def redirector(opts) if keyword_initializer?(HTTP::Redirector.instance_method(:initialize)) HTTP::Redirector.new(**opts) else HTTP::Redirector.new(opts) end end |
.response(**attrs) ⇒ Object
48 49 50 51 52 53 54 |
# File 'lib/ezclient/httprb_compatibility.rb', line 48 def response(**attrs) if keyword_initializer?(HTTP::Response.instance_method(:initialize)) HTTP::Response.new(**attrs) else HTTP::Response.new(attrs) end end |