class Async::HTTP::Internet
def call(method, url, headers = [], body = nil)
def call(method, url, headers = [], body = nil) endpoint = Endpoint.parse(url) key = host_key(endpoint) client = @clients.fetch(key) do @clients[key] = self.client_for(endpoint) end body = Body::Buffered.wrap(body) request = ::Protocol::HTTP::Request.new(client.scheme, endpoint.authority, method, endpoint.path, nil, headers, body) return client.call(request) end
def client_for(endpoint)
def client_for(endpoint) Client.new(endpoint, **@options) end
def close
def close @clients.each_value(&:close) @clients.clear end
def host_key(endpoint)
def host_key(endpoint) url = endpoint.url.dup url.path = "" url.fragment = nil url.query = nil return url end
def initialize(**options)
def initialize(**options) @clients = {} @options = options end