Class: Berbix::NetHTTPClient

Inherits:
HTTPClient show all
Defined in:
lib/berbix.rb

Instance Method Summary collapse

Instance Method Details

#request(method, url, headers, opts = {}) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/berbix.rb', line 13

def request(method, url, headers, opts={})
  uri = URI(url)
  klass = if method == :post
    Net::HTTP::Post
  else
    Net::HTTP::Get
  end
  req = klass.new(uri.to_s, headers)
  unless opts[:data].nil?
    req.body = opts[:data].to_json
  end
  unless opts[:auth].nil?
    req.basic_auth(opts[:auth][:user], opts[:auth][:pass])
  end
  cli = Net::HTTP.new(uri.host, uri.port).tap do |http|
    http.use_ssl = true
  end
  res = cli.request(req)
  code = res.code.to_i
  if code < 200 || code >= 300
    raise 'unexpected status code returned'
  end
  JSON.parse(res.body)
end