Sha256: 2fc1e2d3e498c1a20a60f8b2ec3ac73e13ca5482c9c87acabda84c928f18769f
Contents?: true
Size: 1.16 KB
Versions: 4
Compression:
Stored size: 1.16 KB
Contents
# frozen_string_literal: true require 'creditsafe/authenticate' require 'creditsafe/version' require 'creditsafe/errors' module Creditsafe class FaradayAuth < Faraday::Middleware def initialize(app, username, password, options = {}) super(app) @username = username @password = password @token = nil @options = options end 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| raise Creditsafe::UnauthorizedError, resp.body if resp.status == 401 end rescue Creditsafe::UnauthorizedError => e retry_count += 1 raise e if retry_count > 1 authenticate! retry end end private def authenticate! @token = Authenticate.new.call(@username, @password) end end end
Version data entries
4 entries across 4 versions & 1 rubygems