Sha256: bbc2269ecb21138f5729b7b41f3e6e0039058763cd4ab3e9d4c7a0fc339fce5e

Contents?: true

Size: 1.01 KB

Versions: 3

Compression:

Stored size: 1.01 KB

Contents

# frozen_string_literal: true

require 'creditsafe/client'
require 'creditsafe/errors'
require 'creditsafe/version'

module Creditsafe
  class Authenticate
    def call(username, password)
      response = post('authenticate', username: username, password: password)

      if response.success?
        response.body[:token]
      elsif response.status == 401
        raise UnauthorizedError, response.body
      else
        raise GenericError, response.body
      end
    end

    private

    def post(path, params = {})
      connection.post(path, MultiJson.dump(params))
    end

    def connection
      api_url = Client.new.api_url

      @connection ||= Faraday.new(url: api_url) do |conn|
        conn.headers.merge!(
          content_type: 'application/json',
          user_agent: "finpoint/#{Creditsafe::VERSION}"
        )
        conn.response :multi_json, symbolize_keys: true
        conn.response :logger if Creditsafe.configuration.debug
        conn.adapter Faraday.default_adapter
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
creditsafe_connect-0.1.2 lib/creditsafe/authenticate.rb
creditsafe_connect-0.1.1 lib/creditsafe/authenticate.rb
creditsafe_connect-0.1.0 lib/creditsafe/authenticate.rb