class Berbix::NetHTTPClient

Attributes

open_timeout[R]
read_timeout[R]

Public Class Methods

new(opts={}) click to toggle source
# File lib/berbix.rb, line 18
def initialize(opts={})
  # Sets the defaults to align with the Net::HTTP defaults
  @open_timeout = opts[:open_timeout] || 60
  @read_timeout = opts[:read_timeout] || 60
end

Public Instance Methods

request(method, url, headers, opts={}) click to toggle source
# File lib/berbix.rb, line 24
def request(method, url, headers, opts={})
  uri = URI(url)
  klass = if method == :post
    Net::HTTP::Post
  elsif method == :patch
    Net::HTTP::Patch
  elsif method == :delete
    Net::HTTP::Delete
  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
    http.read_timeout = read_timeout
    http.open_timeout = open_timeout
  end
  res = cli.request(req)
  code = res.code.to_i
  if code < 200 || code >= 300
    raise(Berbix::BerbixError, "unexpected status code returned: #{code}")
  end
  if code == 204
    return
  end
  JSON.parse(res.body)
end