class Creditsafe::FaradayAuth
Public Class Methods
new(app, username, password, options = {})
click to toggle source
Calls superclass method
# File lib/creditsafe/faraday_auth.rb, line 9 def initialize(app, username, password, options = {}) super(app) @username = username @password = password @token = nil @options = options end
Public Instance Methods
call(env)
click to toggle source
# File lib/creditsafe/faraday_auth.rb, line 17 def call(env) retry_count = 0 request_body = env[:body] authenticate! unless @token begin env[:request_headers]['Authorization'] = @token env[:request_headers]['Content-Type'] = 'application/json' env[:request_headers]['User-Agent'] = "finpoint/#{Creditsafe::VERSION}" # after failure env[:body] is set to the response body env[:body] = request_body @app.call(env).tap do |resp| if resp.status == 401 raise Creditsafe::UnauthorizedError, resp.body end end rescue Creditsafe::UnauthorizedError => e retry_count += 1 if retry_count <= 1 authenticate! retry else raise e end end end
Private Instance Methods
authenticate!()
click to toggle source
# File lib/creditsafe/faraday_auth.rb, line 50 def authenticate! @token = Authenticate.new.call(@username, @password) end