Class: Sendgo::TokenManager
- Inherits:
-
Object
- Object
- Sendgo::TokenManager
- Includes:
- MonitorMixin
- Defined in:
- lib/sendgo/token_manager.rb
Overview
토큰 발급 및 캐시 관리.
Instance Method Summary collapse
- #get_token ⇒ Object
-
#initialize(base_url:, access_key:, secret_key:, api_version:) ⇒ TokenManager
constructor
A new instance of TokenManager.
- #invalidate ⇒ Object
- #should_refresh?(status, error_code) ⇒ Boolean
Constructor Details
#initialize(base_url:, access_key:, secret_key:, api_version:) ⇒ TokenManager
Returns a new instance of TokenManager.
19 20 21 22 23 24 25 26 27 |
# File 'lib/sendgo/token_manager.rb', line 19 def initialize(base_url:, access_key:, secret_key:, api_version:) super() @base_url = base_url @access_key = access_key @secret_key = secret_key @api_version = api_version @token = nil @expires_at = Time.at(0) end |
Instance Method Details
#get_token ⇒ Object
29 30 31 32 33 34 |
# File 'lib/sendgo/token_manager.rb', line 29 def get_token synchronize do return @token if @token && Time.now < @expires_at fetch_token end end |
#invalidate ⇒ Object
36 37 38 |
# File 'lib/sendgo/token_manager.rb', line 36 def invalidate synchronize { @token = nil; @expires_at = Time.at(0) } end |
#should_refresh?(status, error_code) ⇒ Boolean
40 41 42 43 44 |
# File 'lib/sendgo/token_manager.rb', line 40 def should_refresh?(status, error_code) return false unless [401, 403].include?(status) return false if @api_version == "v2" && NO_REFRESH_CODES.include?(error_code) true end |