Async::HTTP::Internet (original) (raw)
class Internet
Nested
Definitions
def self.instance
The global instance of the internet.
Implementation
def self.instance
::Thread.current.async_http_internet_instance ||= self.new
end
attr :clients
A cache of clients.
Signature
attribute Hash(URI, [Client](../Client/index.html "Async::HTTP::Client"))
def call(verb, url, *arguments, **options, &block)
Make a request to the internet with the given method
and url
.
If you provide non-frozen headers, they may be mutated.
Signature
parameter method
String
The request method, e.g. GET
.
parameter url
String
The URL to request, e.g. https://www.codeotaku.com
.
parameter headers
Hash | Protocol::HTTP::Headers
The headers to send with the request.
parameter body
String | Protocol::HTTP::Body
The body to send with the request.
Implementation
def call(verb, url, *arguments, **options, &block)
endpoint = Endpoint[url]
client = self.client_for(endpoint)
options[:authority] ||= endpoint.authority
options[:scheme] ||= endpoint.scheme
request = ::Protocol::HTTP::Request[verb, endpoint.path, *arguments, **options]
response = client.call(request)
return response unless block_given?
begin
yield response
ensure
response.close
end
end