Class: MpesaConnect::AccessToken
- Inherits:
-
Object
- Object
- MpesaConnect::AccessToken
- Defined in:
- lib/mpesa_connect/access_token.rb
Instance Method Summary collapse
- #access_token ⇒ Object
- #get_new_access_token ⇒ Object
- #has_token? ⇒ Boolean
-
#initialize(key, secret) ⇒ AccessToken
constructor
A new instance of AccessToken.
- #is_valid? ⇒ Boolean
- #load_from_redis ⇒ Object
- #refresh ⇒ Object
- #token_expired? ⇒ Boolean
Constructor Details
#initialize(key, secret) ⇒ AccessToken
Returns a new instance of AccessToken.
6 7 8 9 10 11 12 |
# File 'lib/mpesa_connect/access_token.rb', line 6 def initialize key, secret @key = key @secret = secret @redis = Redis.new load_from_redis end |
Instance Method Details
#access_token ⇒ Object
46 47 48 49 50 51 52 53 |
# 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 ⇒ Object
55 56 57 58 59 60 61 62 63 64 65 |
# 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? ⇒ Boolean
23 24 25 |
# File 'lib/mpesa_connect/access_token.rb', line 23 def has_token? return !@token.nil? end |
#is_valid? ⇒ Boolean
14 15 16 |
# File 'lib/mpesa_connect/access_token.rb', line 14 def is_valid? has_token? && !token_expired? end |
#load_from_redis ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/mpesa_connect/access_token.rb', line 32 def load_from_redis data = @redis.get(@key) if (data.nil? || data.empty?) @token = nil = nil @expires_in = nil else parsed = JSON.parse(data) @token = parsed['access_token'] = parsed['time_stamp'] @expires_in = parsed['expires_in'] end end |
#refresh ⇒ Object
27 28 29 30 |
# File 'lib/mpesa_connect/access_token.rb', line 27 def refresh get_new_access_token load_from_redis end |
#token_expired? ⇒ Boolean
18 19 20 21 |
# File 'lib/mpesa_connect/access_token.rb', line 18 def token_expired? expire_time = .to_i + @expires_in.to_i return expire_time < Time.now.to_i + 58 end |