class Mobile::Pesa::Authorization

Public Class Methods

call() click to toggle source
# File lib/mobile/pesa/authorization.rb, line 14
def self.call
  url = URI("https://sandbox.safaricom.co.ke/oauth/v1/generate?grant_type=client_credentials")

  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.basic_auth(Mobile::Pesa.configuration.consumer_key, Mobile::Pesa.configuration.consumer_secret)

  response = http.request(request)
  parsed_body = JSON.parse(response.read_body)

  if parsed_body.key?("errorCode")
    error = OpenStruct.new(
      error_code: parsed_body["errorCode"],
      error_message: parsed_body["errorMessage"],
      request_id: parsed_body["requestId"]
    )
    OpenStruct.new(result: nil, error: error)
  else
    result = OpenStruct.new(access_token: parsed_body["access_token"], expires_in: parsed_body["expires_in"])
    OpenStruct.new(result: result, error: nil)
  end
rescue JSON::ParserError => error
  OpenStruct.new(result: nil, error: error)
end
new() click to toggle source
# File lib/mobile/pesa/authorization.rb, line 12
def initialize; end