class Colppy::Core::Gateway

Constants

API_PATH
MIME_JSON
MODES
PRODUCTION_API_URL
SANDBOX_API_URL

Public Class Methods

new(mode = "sandbox") click to toggle source
# File lib/colppy/core/gateway.rb, line 10
def initialize(mode = "sandbox")
  @mode = mode
end

Public Instance Methods

call(payload = {}) click to toggle source
# File lib/colppy/core/gateway.rb, line 22
def call(payload = {})
  make_request(payload)
end

Private Instance Methods

connection() click to toggle source
# File lib/colppy/core/gateway.rb, line 57
def connection
  Faraday.new(endpoint_url) do |faraday|
    faraday.adapter(Faraday.default_adapter)
  end
end
endpoint_url() click to toggle source
# File lib/colppy/core/gateway.rb, line 63
def endpoint_url
  case @mode
  when "live" then PRODUCTION_API_URL
  when "sandbox" then SANDBOX_API_URL
  else
    SANDBOX_API_URL
  end
end
headers() click to toggle source
# File lib/colppy/core/gateway.rb, line 28
def headers
  {
    'User-Agent' => "Colppy Ruby Gem v#{Colppy::VERSION}",
    content_type: MIME_JSON,
    accept: MIME_JSON
  }
end
make_request(payload) click to toggle source
# File lib/colppy/core/gateway.rb, line 36
def make_request(payload)
  unless payload.empty?
    payload = MultiJson.dump(payload)
  end
  response = connection.post do |call|
    call.url API_PATH
    call.headers = headers
    unless payload.empty?
      call.body = payload
    end
  end

  MultiJson.load(response.body, symbolize_keys: true)
rescue Exception => e
  if e.respond_to?(:response)
    MultiJson.load(e.response, symbolize_keys: true)
  else
    raise e
  end
end