Class: MpesaStk::AccessToken
- Inherits:
-
Object
- Object
- MpesaStk::AccessToken
- Defined in:
- lib/mpesa_stk/access_token.rb
Class Method Summary collapse
Instance Method Summary collapse
- #access_token ⇒ Object
- #get_new_access_token ⇒ Object
- #has_token? ⇒ Boolean
-
#initialize(key = nil, secret = nil) ⇒ AccessToken
constructor
A new instance of AccessToken.
- #is_valid? ⇒ Boolean
- #load_from_redis ⇒ Object
- #refresh ⇒ Object
- #token_expired? ⇒ Boolean
Constructor Details
#initialize(key = nil, secret = nil) ⇒ AccessToken
Returns a new instance of AccessToken.
12 13 14 15 16 17 18 |
# 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 |
Class Method Details
.call(key = nil, secret = nil) ⇒ Object
7 8 9 |
# File 'lib/mpesa_stk/access_token.rb', line 7 def call(key = nil, secret = nil) new(key, secret).access_token end |
Instance Method Details
#access_token ⇒ Object
52 53 54 55 56 57 58 59 |
# 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 ⇒ Object
61 62 63 64 65 66 |
# 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? ⇒ Boolean
29 30 31 |
# File 'lib/mpesa_stk/access_token.rb', line 29 def has_token? return !@token.nil? end |
#is_valid? ⇒ Boolean
20 21 22 |
# File 'lib/mpesa_stk/access_token.rb', line 20 def is_valid? has_token? && !token_expired? end |
#load_from_redis ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 49 50 |
# 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 ⇒ Object
33 34 35 36 |
# File 'lib/mpesa_stk/access_token.rb', line 33 def refresh get_new_access_token load_from_redis end |
#token_expired? ⇒ Boolean
24 25 26 27 |
# 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 |