Class: NodexPay::Transport::NetHTTP

Inherits:
Object
  • Object
show all
Includes:
_Transport
Defined in:
lib/nodex_pay/transport.rb,
sig/nodex_pay.rbs

Instance Method Summary collapse

Instance Method Details

#call(request) ⇒ Object



50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/nodex_pay/transport.rb', line 50

def call(request)
  http = Net::HTTP.new(request.uri.host, request.uri.port)
  http.use_ssl = request.uri.scheme == "https"
  http.verify_mode = OpenSSL::SSL::VERIFY_PEER if http.use_ssl?
  http.open_timeout = request.open_timeout
  http.read_timeout = request.read_timeout
  http.write_timeout = request.write_timeout
  http.max_retries = 0

  net_request = build_request(request)
  net_response = http.request(net_request)

  Response.new(
    status: net_response.code.to_i,
    headers: response_headers(net_response),
    body: net_response.body.to_s
  )
rescue Net::OpenTimeout, Net::ReadTimeout, Net::WriteTimeout => error
  raise TimeoutError.new("Nodex Pay request timed out for #{safe_target(request.uri)}"), cause: error
rescue SocketError, SystemCallError, IOError, EOFError, OpenSSL::SSL::SSLError => error
  raise TransportError.new("Nodex Pay request failed for #{safe_target(request.uri)}"), cause: error
end