class Faraday::OAuth2CachedToken

Constants

INVALID_TOKEN_STATUS

Attributes

provider[R]

Public Class Methods

new(app, options = {}) click to toggle source
Calls superclass method
# File lib/faraday/oauth2_cached_token.rb, line 11
def initialize(app, options = {})
  super(app)
  @provider = options[:provider] || Provider.new(options[:provider_options] || {})
  @logger = options[:logger]
end

Public Instance Methods

call(request_env) click to toggle source
# File lib/faraday/oauth2_cached_token.rb, line 17
def call(request_env)
  inject_header(request_env, @provider.get_token.headers)

  @app.call(request_env).on_complete do |response_env|
    on_complete(request_env, response_env)
  end
end

Private Instance Methods

inject_header(request_env, header) click to toggle source
# File lib/faraday/oauth2_cached_token.rb, line 35
def inject_header(request_env, header)
  request_env[:request_headers].merge!(header)
end
on_complete(request_env, response_env) click to toggle source
# File lib/faraday/oauth2_cached_token.rb, line 27
def on_complete(request_env, response_env)
  if response_env.status == INVALID_TOKEN_STATUS
    @logger.try(:warn, 'Invalid Token. refreshing and retrying request...')
    inject_header(request_env, @provider.get_fresh_token.headers)
    @app.call(request_env)
  end
end