Class: Sendgo::TokenManager

Inherits:
Object
  • Object
show all
Includes:
MonitorMixin
Defined in:
lib/sendgo/token_manager.rb

Overview

토큰 발급 및 캐시 관리.

Instance Method Summary collapse

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_tokenObject



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

#invalidateObject



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

Returns:

  • (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