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)
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