Class: GeniusReferrals::NetHTTPTransport

Inherits:
Object
  • Object
show all
Defined in:
lib/genius_referrals/transport.rb

Instance Method Summary collapse

Instance Method Details

#request(method, url, headers:, body:, timeout:) ⇒ Object

Send one HTTP request using Ruby stdlib Net::HTTP.



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/genius_referrals/transport.rb', line 10

def request(method, url, headers:, body:, timeout:)
  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_class = Net::HTTP.const_get(method.capitalize)
  request = request_class.new(uri)
  headers.each { |key, value| request[key] = value }
  request.body = body if body

  response = http.request(request)
  TransportResponse.new(
    status_code: response.code.to_i,
    headers: response.each_header.to_h,
    body: response.body.to_s
  )
end