Sha256: 8d0ac8943b7255260ef337b9ac945cfa858fbeebf00314e5a12c40cd9a97f24b
Contents?: true
Size: 1.27 KB
Versions: 1
Compression:
Stored size: 1.27 KB
Contents
# frozen_string_literal: true require 'uri' require 'net/http' require 'openssl' require 'ostruct' require 'json' module Mobile module Pesa class Authorization def initialize; end 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 end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
mobile-pesa-0.1.1 | lib/mobile/pesa/authorization.rb |