Class: Fopost::HTTP::NetHTTPTransport
- Inherits:
-
Object
- Object
- Fopost::HTTP::NetHTTPTransport
- Includes:
- Transport
- Defined in:
- lib/fopost/http/net_http_transport.rb
Overview
The default transport: Ruby's own net/http, so the gem needs no dependency of its own.
Constant Summary collapse
- METHODS =
{ 'GET' => Net::HTTP::Get, 'POST' => Net::HTTP::Post, 'PUT' => Net::HTTP::Put, 'PATCH' => Net::HTTP::Patch, 'DELETE' => Net::HTTP::Delete }.freeze
Instance Method Summary collapse
- #call(method:, url:, headers:, body:) ⇒ Object
-
#initialize(timeout: 30.0, open_timeout: nil) ⇒ NetHTTPTransport
constructor
A new instance of NetHTTPTransport.
Constructor Details
#initialize(timeout: 30.0, open_timeout: nil) ⇒ NetHTTPTransport
Returns a new instance of NetHTTPTransport.
23 24 25 26 |
# File 'lib/fopost/http/net_http_transport.rb', line 23 def initialize(timeout: 30.0, open_timeout: nil) @timeout = timeout @open_timeout = open_timeout || timeout end |
Instance Method Details
#call(method:, url:, headers:, body:) ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/fopost/http/net_http_transport.rb', line 28 def call(method:, url:, headers:, body:) uri = url.is_a?(URI) ? url : URI.parse(url) klass = METHODS.fetch(method.to_s.upcase) do raise ArgumentError, "fopost: unsupported HTTP method #{method}" end request = klass.new(uri) headers.each { |name, value| request[name] = value } request.body = body if body response = http_for(uri).request(request) Response.new(status: response.code.to_i, body: response.body || '', headers: response.to_hash.transform_values(&:first)) end |