class MpesaConnect::AccessToken
Public Class Methods
new(key, secret)
click to toggle source
# File lib/mpesa_connect/access_token.rb, line 6 def initialize key, secret @key = key @secret = secret @redis = Redis.new load_from_redis end
Public Instance Methods
access_token()
click to toggle source
# File lib/mpesa_connect/access_token.rb, line 46 def access_token if is_valid? return @token else refresh return @token end end
get_new_access_token()
click to toggle source
# File lib/mpesa_connect/access_token.rb, line 55 def get_new_access_token encode = encode_credentials @key, @secret headers = { "Authorization" => "Basic #{encode}" } url = "https://sandbox.safaricom.co.ke/oauth/v1/generate?grant_type=client_credentials" response = HTTParty.get(url, headers: headers) hash = JSON.parse(response.body).merge(Hash['time_stamp',Time.now.to_i]) @redis.set @key, hash.to_json end
has_token?()
click to toggle source
# File lib/mpesa_connect/access_token.rb, line 23 def has_token? return !@token.nil? end
is_valid?()
click to toggle source
# File lib/mpesa_connect/access_token.rb, line 14 def is_valid? has_token? && !token_expired? end
load_from_redis()
click to toggle source
# File lib/mpesa_connect/access_token.rb, line 32 def load_from_redis data = @redis.get(@key) if (data.nil? || data.empty?) @token = nil @timestamp = nil @expires_in = nil else parsed = JSON.parse(data) @token = parsed['access_token'] @timestamp = parsed['time_stamp'] @expires_in = parsed['expires_in'] end end
refresh()
click to toggle source
# File lib/mpesa_connect/access_token.rb, line 27 def refresh get_new_access_token load_from_redis end
token_expired?()
click to toggle source
# File lib/mpesa_connect/access_token.rb, line 18 def token_expired? expire_time = @timestamp.to_i + @expires_in.to_i return expire_time < Time.now.to_i + 58 end
Private Instance Methods
encode_credentials(key, secret)
click to toggle source
# File lib/mpesa_connect/access_token.rb, line 68 def encode_credentials key, secret credentials = "#{key}:#{secret}" encoded_credentials = Base64.encode64(credentials).split("\n").join end