Class: ShedCloud::PartnerApi::HttpTransport

Inherits:
Object
  • Object
show all
Defined in:
lib/shedcloud/partner_api/http_transport.rb

Constant Summary collapse

REQUEST_CLASS =
{
  '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

Instance Method Details

#send(method, url, headers, body) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/shedcloud/partner_api/http_transport.rb', line 18

def send(method, url, headers, body)
  uri = URI(url)
  request = build_request(method, uri, headers, body)

  response = Net::HTTP.start(
    uri.host,
    uri.port,
    use_ssl: uri.scheme == 'https',
    open_timeout: 30,
    read_timeout: 30
  ) do |http|
    http.request(request)
  end

  {
    status: response.code.to_i,
    body: response.body.to_s,
    headers: response.each_header.to_h.transform_values { |v| [v] }
  }
end