Class: Lucerna::HTTP::NetHttpTransport

Inherits:
Object
  • Object
show all
Defined in:
lib/lucerna/http.rb

Overview

Default transport: one fresh Net::HTTP connection per call. Fine at a 10s poll cadence; connection reuse is a future optimization. Any object responding to call(request, timeout:) and returning a Response can replace it (the test seam).

Instance Method Summary collapse

Instance Method Details

#call(request, timeout:) ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/lucerna/http.rb', line 33

def call(request, timeout:)
  uri = URI.parse(request.url)
  http = Net::HTTP.new(uri.host, uri.port)
  http.use_ssl = uri.scheme == "https"
  http.open_timeout = timeout
  http.read_timeout = timeout
  http.write_timeout = timeout

  klass = request.method == :post ? Net::HTTP::Post : Net::HTTP::Get
  net_request = klass.new(uri, request.headers)
  net_request.body = request.body if request.body

  net_response = http.request(net_request)
  headers = {}
  net_response.each_header { |key, value| headers[key.downcase] = value }
  Response.new(net_response.code.to_i, headers, net_response.body)
end