Sha256: 364ff8a0ef9aea975876c42a2d8b63d293e2bb43f8c6e9c377839314453b6cb5

Contents?: true

Size: 1.67 KB

Versions: 10

Compression:

Stored size: 1.67 KB

Contents

# frozen_string_literal: false

require 'paypalhttp'
require 'openssl'

module PayPal
  class PayPalHttpClient < PayPalHttp::HttpClient
    attr_accessor :refresh_token

    def initialize(environment, refresh_token = nil)
      super(environment)
      @refresh_token = refresh_token

      add_injector { |r| _sign_request(r) }
      add_injector { |r| _add_headers(r) }
    end

    def user_agent
      library_details ||= "ruby #{RUBY_VERSION}p#{RUBY_PATCHLEVEL}-#{RUBY_PLATFORM}"
      begin
        library_details << ";#{OpenSSL::OPENSSL_LIBRARY_VERSION}"
      rescue NameError
        library_details << ";OpenSSL #{OpenSSL::OPENSSL_VERSION}"
      end

      "PayPalSDK-FORK/rest-sdk-ruby (#{library_details})"
    end

    def _sign_request(request)
      return if _has_auth_header(request) || _is_auth_request(request)

      if !@access_token || @access_token.expired?
        access_token_request = PayPal::AccessTokenRequest.new(@environment, @refresh_token)
        token_response = execute(access_token_request)
        @access_token = PayPal::AccessToken.new(token_response.result)
      end
      request.headers["Authorization"] = @access_token.authorization_string
    end

    def _add_headers(request)
      request.headers["Accept-Encoding"] = "gzip"
      request.headers["sdk_name"] = "Checkout SDK"
      request.headers["sdk_tech_stack"] = "Ruby#{RUBY_VERSION}"
      request.headers["api_integration_type"] = "PAYPALSDK"
    end

    def _is_auth_request(request)
      request.path == '/v1/oauth2/token' ||
        request.path == '/v1/identity/openidconnect/tokenservice'
    end

    def _has_auth_header(request)
      request.headers.key?("Authorization")
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
solidus_paypal_commerce_platform-1.0.3 lib/paypal/paypal_http_client.rb
solidus_paypal_commerce_platform-1.0.2 lib/paypal/paypal_http_client.rb
solidus_paypal_commerce_platform-0.7.1 lib/paypal/paypal_http_client.rb
solidus_paypal_commerce_platform-1.0.1 lib/paypal/paypal_http_client.rb
solidus_paypal_commerce_platform-1.0.0 lib/paypal/paypal_http_client.rb
solidus_paypal_commerce_platform-0.7.0 lib/paypal/paypal_http_client.rb
solidus_paypal_commerce_platform-1.0.0.beta3 lib/paypal/paypal_http_client.rb
solidus_paypal_commerce_platform-1.0.0.beta2 lib/paypal/paypal_http_client.rb
solidus_paypal_commerce_platform-1.0.0.beta1 lib/paypal/paypal_http_client.rb
solidus_paypal_commerce_platform-0.6.0 lib/paypal/paypal_http_client.rb