class MpesaStk::AccessToken
Public Class Methods
call(key = nil, secret = nil)
click to toggle source
# File lib/mpesa_stk/access_token.rb, line 7 def call(key = nil, secret = nil) new(key, secret).access_token end
new(key = nil, secret = nil)
click to toggle source
# File lib/mpesa_stk/access_token.rb, line 12 def initialize(key = nil, secret = nil) @key = key.nil? ? ENV['key'] : key @secret = secret.nil? ? ENV['secret'] : secret @redis = Redis.new load_from_redis end
Public Instance Methods
access_token()
click to toggle source
# File lib/mpesa_stk/access_token.rb, line 52 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_stk/access_token.rb, line 61 def get_new_access_token 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_stk/access_token.rb, line 29 def has_token? return !@token.nil? end
is_valid?()
click to toggle source
# File lib/mpesa_stk/access_token.rb, line 20 def is_valid? has_token? && !token_expired? end
load_from_redis()
click to toggle source
# File lib/mpesa_stk/access_token.rb, line 38 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_stk/access_token.rb, line 33 def refresh get_new_access_token load_from_redis end
token_expired?()
click to toggle source
# File lib/mpesa_stk/access_token.rb, line 24 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_stk/access_token.rb, line 81 def encode_credentials key, secret credentials = "#{key}:#{secret}" Base64.encode64(credentials).split("\n").join end
headers()
click to toggle source
# File lib/mpesa_stk/access_token.rb, line 74 def headers encode = encode_credentials @key, @secret { "Authorization" => "Basic #{encode}" } end
url()
click to toggle source
# File lib/mpesa_stk/access_token.rb, line 70 def url "#{ENV['base_url']}#{ENV['token_generator_url']}" end