14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
# 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
|