mirror of
https://github.com/HoneyryderChuck/httpx.git
synced 2025-09-01 00:00:35 -04:00
allow client to be loggable; add to change the @default_options thing though
This commit is contained in:
parent
2a2d5e0b7a
commit
10146be1bc
@ -36,7 +36,7 @@ module HTTPX
|
||||
private
|
||||
|
||||
def default_options
|
||||
@default_options || Options.new
|
||||
@options || Options.new
|
||||
end
|
||||
|
||||
# :nodoc:
|
||||
|
@ -2,11 +2,12 @@
|
||||
|
||||
module HTTPX
|
||||
class Client
|
||||
include Loggable
|
||||
include Chainable
|
||||
|
||||
def initialize(options = {})
|
||||
@default_options = self.class.default_options.merge(options)
|
||||
@connection = Connection.new(@default_options)
|
||||
@options = self.class.default_options.merge(options)
|
||||
@connection = Connection.new(@options)
|
||||
@responses = {}
|
||||
if block_given?
|
||||
begin
|
||||
@ -95,8 +96,8 @@ module HTTPX
|
||||
end
|
||||
|
||||
def __build_req(verb, uri, options = {})
|
||||
rklass = @default_options.request_class
|
||||
rklass.new(verb, uri, @default_options.merge(options))
|
||||
rklass = @options.request_class
|
||||
rklass.new(verb, uri, @options.merge(options))
|
||||
end
|
||||
|
||||
@default_options = Options.new
|
||||
|
@ -18,7 +18,7 @@ module HTTPX
|
||||
keep_open = @keep_open
|
||||
@keep_open = true
|
||||
|
||||
max_redirects = @default_options.max_redirects || MAX_REDIRECTS
|
||||
max_redirects = @options.max_redirects || MAX_REDIRECTS
|
||||
requests = __build_reqs(*args, **options)
|
||||
responses = __send_reqs(*requests)
|
||||
|
||||
|
@ -18,7 +18,7 @@ module HTTPX
|
||||
upgrade_request.headers["upgrade"] = "h2c"
|
||||
upgrade_request.headers.add("connection", "upgrade")
|
||||
upgrade_request.headers.add("connection", "http2-settings")
|
||||
upgrade_request.headers["http2-settings"] = HTTP2::Client.settings_header(@default_options.http2_settings)
|
||||
upgrade_request.headers["http2-settings"] = HTTP2::Client.settings_header(@options.http2_settings)
|
||||
# TODO: validate!
|
||||
upgrade_response = __send_reqs(*upgrade_request).first
|
||||
|
||||
|
@ -34,7 +34,7 @@ module HTTPX
|
||||
private
|
||||
|
||||
def proxy_params(uri)
|
||||
return @default_options.proxy if @default_options.proxy
|
||||
return @options.proxy if @options.proxy
|
||||
uri = URI(uri).find_proxy
|
||||
return unless uri
|
||||
{ uri: uri }
|
||||
@ -44,16 +44,19 @@ module HTTPX
|
||||
uri = URI(request.uri)
|
||||
proxy = proxy_params(uri)
|
||||
return super unless proxy
|
||||
@connection.find_channel(proxy) ||
|
||||
build_proxy_channel(proxy)
|
||||
@connection.find_channel(proxy) || begin
|
||||
channel = build_proxy_channel(proxy)
|
||||
set_channel_callbacks(channel)
|
||||
channel
|
||||
end
|
||||
end
|
||||
|
||||
def build_proxy_channel(proxy)
|
||||
parameters = Parameters.new(**proxy)
|
||||
uri = parameters.uri
|
||||
io = TCP.new(uri.host, uri.port, @default_options)
|
||||
io = TCP.new(uri.host, uri.port, @options)
|
||||
proxy_type = Parameters.registry(parameters.uri.scheme)
|
||||
channel = proxy_type.new(io, parameters, @default_options, &method(:on_response))
|
||||
channel = proxy_type.new(io, parameters, @options, &method(:on_response))
|
||||
@connection.__send__(:register_channel, channel)
|
||||
channel
|
||||
end
|
||||
|
@ -49,11 +49,11 @@ class ClientTest < Minitest::Test
|
||||
end
|
||||
|
||||
def options
|
||||
@default_options
|
||||
@options
|
||||
end
|
||||
|
||||
def response(*args)
|
||||
@default_options.response_class.new(*args, @default_options)
|
||||
@options.response_class.new(*args, @options)
|
||||
end
|
||||
end
|
||||
self::OptionsClassMethods = Module.new do
|
||||
|
Loading…
x
Reference in New Issue
Block a user