class Payrix::Http::Request

Public Class Methods

new() click to toggle source
# File lib/payrix/http/request.rb, line 12
def initialize
end

Public Instance Methods

send_http(method, base_url, endpoint, data = {}, headers = {}, timeout = 30) click to toggle source
# File lib/payrix/http/request.rb, line 15
def send_http(method, base_url, endpoint, data = {}, headers = {}, timeout = 30)
  conn = Faraday.new(url: base_url) do |conn|
    conn.use FaradayMiddleware::FollowRedirects, limit: 3

    conn.headers = headers
    conn.options.timeout = timeout
    conn.options.open_timeout = timeout

    conn.request :json
    conn.adapter Faraday.default_adapter
  end

  begin
    response = conn.send(method.downcase.to_sym, endpoint, data)

    body = response.body
    status = response.status

    raise Payrix::Exceptions::InvalidRequest.new("Invalid request, status code: #{status}") if status == 400 || status == 404
    raise Payrix::Exceptions::Base.new(body) if status < 200 || status > 299

    json = JSON.parse(body)

    return json, status
  rescue Faraday::ClientError => e
    raise Payrix::Exceptions::Connection.new('')
  rescue JSON::ParserError
    raise Payrix::Exceptions::InvalidResponse.new('Invalid response object') if Payrix.configuration.exception_enabled
  end
end