Sha256: 3b8dafebdd0f61e916d5f05704731326ea28098d46c2c67d6ce0d5a53b25bf30

Contents?: true

Size: 1.9 KB

Versions: 15

Compression:

Stored size: 1.9 KB

Contents

require 'faraday'

module AvaTax

  module Connection
    private
    AUTHORIZATION_FILTER_REGEX = /(Authorization)([^&]+)/
    REMOVED_LABEL = '\1 [REMOVED]'

    def connection
      client_id = "#{app_name};#{app_version};RubySdk;API_VERSION;#{machine_name}"
      options = {
        :headers =>
          {
           'Accept' => "application/json; charset=utf-8",
           'User-Agent' => user_agent,
           'X-Avalara-Client' => client_id
          },
        :url => endpoint,
        :proxy => proxy
      }.merge(connection_options)

      Faraday.new(options) do |faraday|
        if Gem::Version.new(RUBY_VERSION) > Gem::Version.new('2.2.2') and response_big_decimal_conversion
          Oj.default_options = {
            bigdecimal_load: :bigdecimal
          }
        end
        faraday.request :instrumentation
        if Gem::Version.new(Faraday::VERSION) >= Gem::Version.new('2.0.0')
          # Use the following after upgrading to faraday 2.0
          # see https://github.com/lostisland/faraday/blob/main/docs/middleware/request/authentication.md
          faraday.request :authorization, :basic, username, password
        else
          faraday.request :basic_auth, username, password
        end

        default_logger_options = { headers: true, bodies: log_request_and_response_info }
        if logger
          faraday.response :logger, nil, default_logger_options do |logger|
            logger.filter(AUTHORIZATION_FILTER_REGEX, REMOVED_LABEL)
          end
        end

        if custom_logger
          faraday.response :logger, custom_logger, default_logger_options.merge(custom_logger_options) do |logger|
            logger.filter(AUTHORIZATION_FILTER_REGEX, REMOVED_LABEL)
          end
        end

        faraday.adapter Faraday.default_adapter

        # Use Faraday's built-in response parser
        faraday.response :json, parser_options: { symbolize_names: false }
      end
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
avatax-25.3.0 lib/avatax/connection.rb
avatax-25.2.2 lib/avatax/connection.rb
avatax-25.1.0 lib/avatax/connection.rb
avatax-24.12.0 lib/avatax/connection.rb
avatax-24.11.2 lib/avatax/connection.rb
avatax-24.10.0 lib/avatax/connection.rb
avatax-24.8.2 lib/avatax/connection.rb
avatax-24.6.3 lib/avatax/connection.rb
avatax-24.6.1 lib/avatax/connection.rb
avatax-24.4.2 lib/avatax/connection.rb
avatax-24.2.0 lib/avatax/connection.rb
avatax-23.11.0 lib/avatax/connection.rb
avatax-23.10.1 lib/avatax/connection.rb
avatax-23.8.1 lib/avatax/connection.rb
avatax-23.7.1 lib/avatax/connection.rb