class HubriseClient::Request

Constants

REQUESTS_HASH

Public Class Methods

new(hostname:, access_token: nil, use_https: false, logger: nil) click to toggle source
# File lib/hubrise_client/request.rb, line 10
def initialize(hostname:, access_token: nil, use_https: false, logger: nil)
  @hostname     = hostname
  @access_token = access_token
  @use_https    = use_https
  @protocol     = use_https ? "https" : "http"
  @logger       = logger
end

Public Instance Methods

perform(method, path, data, json: true, headers: {}, callback: nil) { |http_request, http_response| ... } click to toggle source
# File lib/hubrise_client/request.rb, line 18
def perform(method, path, data, json: true, headers: {}, callback: nil)
  uri           = URI.parse(@protocol + "://" + @hostname + path)
  http_request  = build_request(uri, method, data, json: json, headers: headers)
  http_response = perform_request(uri, http_request)

  case http_response
  when Net::HTTPUnauthorized
    raise InvalidHubriseToken
  else
    raise(HubriseError, "Unexpected error") if http_response.code.start_with?("5")

    Response.new(http_response)
  end
rescue Errno::ECONNREFUSED
  raise HubriseError, "API is not reachable"
ensure
  yield(http_request, http_response) if http_request && block_given?
end

Protected Instance Methods

add_params_to_uri(uri, params) click to toggle source
# File lib/hubrise_client/request.rb, line 58
def add_params_to_uri(uri, params)
  uri.query = [uri.query, URI.encode_www_form(params)].compact.join("&")
  uri
end
build_request(uri, method, data, json:, headers:) click to toggle source
# File lib/hubrise_client/request.rb, line 39
def build_request(uri, method, data, json:, headers:)
  headers["X-Access-Token"] = @access_token if @access_token

  if method == :get
    if data && data.count > 0
      uri = add_params_to_uri(uri, data)
    end

    data = nil
  elsif json
    headers["Content-Type"] ||= "application/json"
    data = data.to_json
  end

  REQUESTS_HASH[method].new(uri, headers).tap do |request|
    request.body = data
  end
end
perform_request(uri, request) click to toggle source
# File lib/hubrise_client/request.rb, line 63
def perform_request(uri, request)
  http          = Net::HTTP.new(uri.host, uri.port)
  http.use_ssl  = @use_https
  http.set_debug_output(@logger) if @logger
  http.request(request)
end