Class: RideBuilder::Affiliate::NetHttpTransport
- Inherits:
-
Object
- Object
- RideBuilder::Affiliate::NetHttpTransport
- Defined in:
- lib/ridebuilder/affiliate/transport.rb
Overview
Default transport, backed by the stdlib Net::HTTP — zero third-party dependencies. Inject any object that responds to #call(method, url, headers, body) to route through your own HTTP client.
Instance Method Summary collapse
- #call(method, url, headers, body) ⇒ Object
-
#initialize(timeout_ms = 10_000) ⇒ NetHttpTransport
constructor
A new instance of NetHttpTransport.
Constructor Details
#initialize(timeout_ms = 10_000) ⇒ NetHttpTransport
Returns a new instance of NetHttpTransport.
26 27 28 |
# File 'lib/ridebuilder/affiliate/transport.rb', line 26 def initialize(timeout_ms = 10_000) @timeout = timeout_ms / 1000.0 end |
Instance Method Details
#call(method, url, headers, body) ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/ridebuilder/affiliate/transport.rb', line 30 def call(method, url, headers, body) uri = URI(url) http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = uri.scheme == "https" http.open_timeout = @timeout http.read_timeout = @timeout request = build_request(method, uri) headers.each { |k, v| request[k] = v } request.body = body if body response = http.request(request) Response.new(response.code.to_i, response.body) rescue SocketError, SystemCallError, IOError, Timeout::Error => e raise TransportError, e. end |