class Paysafe::Api::BaseApi

Constants

HEADERS

Public Class Methods

new(config) click to toggle source
# File lib/paysafe/api/base_api.rb, line 14
def initialize(config)
  @config = config
end

Protected Instance Methods

account_number() click to toggle source

Needed for some API URLs

# File lib/paysafe/api/base_api.rb, line 21
def account_number
  @config.account_number
end
http_client() click to toggle source
# File lib/paysafe/api/base_api.rb, line 25
def http_client
  HTTP
    .headers(HEADERS)
    .timeout(@config.timeout || :null)
    .basic_auth(user: @config.api_key, pass: @config.api_secret)
end
parse_response_body(body) click to toggle source
# File lib/paysafe/api/base_api.rb, line 62
def parse_response_body(body)
  return nil if body.strip.empty?
  JSON.parse(body, symbolize_names: true)&.to_snake_case
rescue JSON::ParserError
end
perform_delete(path) click to toggle source
# File lib/paysafe/api/base_api.rb, line 42
def perform_delete(path)
  response = http_client.delete("#{@config.api_base}#{path}")
  process_response(response)
end
perform_get_with_object(path, klass) click to toggle source
# File lib/paysafe/api/base_api.rb, line 37
def perform_get_with_object(path, klass)
  response = http_client.get("#{@config.api_base}#{path}")
  process_response(response, klass)
end
perform_post_with_object(path, data, klass) click to toggle source
# File lib/paysafe/api/base_api.rb, line 32
def perform_post_with_object(path, data, klass)
  response = http_client.post("#{@config.api_base}#{path}", json: data.to_camel_case)
  process_response(response, klass)
end
perform_put_with_object(path, data, klass) click to toggle source
# File lib/paysafe/api/base_api.rb, line 47
def perform_put_with_object(path, data, klass)
  response = http_client.put("#{@config.api_base}#{path}", json: data.to_camel_case)
  process_response(response, klass)
end
process_response(response, klass=nil) click to toggle source
# File lib/paysafe/api/base_api.rb, line 52
def process_response(response, klass=nil)
  data = parse_response_body(response.to_s)

  if response.status.success?
    klass&.new(data)
  else
    fail Error.from_response(data, response.code)
  end
end