Class: PayPal::PayPalHttpClient

Inherits:
PayPalHttp::HttpClient
  • Object
show all
Defined in:
lib/paypal/paypal_http_client.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(environment, refresh_token = nil) ⇒ PayPalHttpClient

Returns a new instance of PayPalHttpClient.



10
11
12
13
14
15
16
# File 'lib/paypal/paypal_http_client.rb', line 10

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

Instance Attribute Details

#refresh_tokenObject

Returns the value of attribute refresh_token.



8
9
10
# File 'lib/paypal/paypal_http_client.rb', line 8

def refresh_token
  @refresh_token
end

Instance Method Details

#_add_headers(request) ⇒ Object



40
41
42
43
44
45
# File 'lib/paypal/paypal_http_client.rb', line 40

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

#_has_auth_header(request) ⇒ Object



52
53
54
# File 'lib/paypal/paypal_http_client.rb', line 52

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

#_is_auth_request(request) ⇒ Object



47
48
49
50
# File 'lib/paypal/paypal_http_client.rb', line 47

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

#_sign_request(request) ⇒ Object



29
30
31
32
33
34
35
36
37
38
# File 'lib/paypal/paypal_http_client.rb', line 29

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

#user_agentObject



18
19
20
21
22
23
24
25
26
27
# File 'lib/paypal/paypal_http_client.rb', line 18

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