class Airtel::Pesa::BalanceEnquiry

Constants

PRODUCTION_URL
STAGING_URL

Attributes

transaction_country_code[R]
transaction_currency_code[R]

Public Class Methods

call(transaction_country_code:, transaction_currency_code:) click to toggle source
# File lib/airtel/pesa/balance_enquiry.rb, line 17
def self.call(transaction_country_code:, transaction_currency_code:)
  new(transaction_country_code, transaction_currency_code).call
end
new(transaction_country_code, transaction_currency_code) click to toggle source
# File lib/airtel/pesa/balance_enquiry.rb, line 21
def initialize(transaction_country_code, transaction_currency_code)
  @transaction_country_code = transaction_country_code
  @transaction_currency_code = transaction_currency_code
end

Public Instance Methods

call() click to toggle source
# File lib/airtel/pesa/balance_enquiry.rb, line 26
def call
  url = URI("#{env_url}/standard/v1/users/balance")

  http = Net::HTTP.new(url.host, url.port)
  http.use_ssl = true
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE

  request = Net::HTTP::Get.new(url)
  request["Authorization"] = "Bearer #{token}"
  request["X-Country"] = transaction_country_code
  request["X-Currency"] = transaction_currency_code

  response = http.request(request)
  parsed_response = JSON.parse(response.read_body)
  result = Airtel::Pesa.to_recursive_ostruct(parsed_response)
  OpenStruct.new(result: result, error: nil)
rescue JSON::ParserError => error
  OpenStruct.new(result: nil, error: error)
end

Private Instance Methods

env_url() click to toggle source
# File lib/airtel/pesa/balance_enquiry.rb, line 48
def env_url
  return STAGING_URL Airtel::Pesa.configuration.env == 'staging'
  return PRODUCTION_URL Airtel::Pesa.configuration.env == 'production'
end
token() click to toggle source
# File lib/airtel/pesa/balance_enquiry.rb, line 53
def token
  Airtel::Pesa::Authorization.call.result.access_token
end