class HelpScout::API::AccessToken::Cache

Attributes

backend[R]
key[R]

Public Class Methods

new(backend: nil, key: nil) click to toggle source
# File lib/help_scout/api/access_token/cache.rb, line 9
def initialize(backend: nil, key: nil)
  @backend = backend || HelpScout.configuration.token_cache
  @key = key || HelpScout.configuration.token_cache_key
end

Public Instance Methods

configured?() click to toggle source
# File lib/help_scout/api/access_token/cache.rb, line 14
def configured?
  backend.present? && key.present?
end
delete() click to toggle source
# File lib/help_scout/api/access_token/cache.rb, line 18
def delete
  backend.delete(key)
end
fetch_token(&token_request) click to toggle source
# File lib/help_scout/api/access_token/cache.rb, line 22
def fetch_token(&token_request)
  raise ArgumentError, 'A request fallback block is required' unless block_given?

  if (cached_token_json = backend.read(key))
    AccessToken.new(JSON.parse(cached_token_json, symbolize_names: true))
  else
    token_request.call.tap { |token| write(token) }
  end
end

Private Instance Methods

write(token) click to toggle source
# File lib/help_scout/api/access_token/cache.rb, line 34
def write(token)
  backend.write(key, token.to_json, expires_in: token.expires_in)
end