paypal-server-sdk 2.0.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +73 -23
- data/bin/console +15 -0
- data/lib/paypal_server_sdk/client.rb +11 -0
- data/lib/paypal_server_sdk/configuration.rb +66 -0
- data/lib/paypal_server_sdk/controllers/base_controller.rb +1 -1
- data/lib/paypal_server_sdk/http/auth/o_auth2.rb +15 -0
- data/lib/paypal_server_sdk/http/proxy_settings.rb +9 -0
- data/lib/paypal_server_sdk/logging/configuration/api_logging_configuration.rb +181 -109
- data/lib/paypal_server_sdk/models/apple_pay_payment_data_type.rb +13 -0
- data/lib/paypal_server_sdk/models/application_context_user_action.rb +13 -0
- data/lib/paypal_server_sdk/models/authorization_incomplete_reason.rb +13 -0
- data/lib/paypal_server_sdk/models/authorization_status.rb +17 -0
- data/lib/paypal_server_sdk/models/avs_code.rb +35 -0
- data/lib/paypal_server_sdk/models/callback_events.rb +13 -0
- data/lib/paypal_server_sdk/models/capture_incomplete_reason.rb +23 -0
- data/lib/paypal_server_sdk/models/capture_status.rb +17 -0
- data/lib/paypal_server_sdk/models/capture_type.rb +6 -0
- data/lib/paypal_server_sdk/models/card_brand.rb +41 -0
- data/lib/paypal_server_sdk/models/card_type.rb +16 -0
- data/lib/paypal_server_sdk/models/card_verification_status.rb +13 -0
- data/lib/paypal_server_sdk/models/checkout_payment_intent.rb +13 -0
- data/lib/paypal_server_sdk/models/cvv_code.rb +25 -0
- data/lib/paypal_server_sdk/models/disbursement_mode.rb +13 -0
- data/lib/paypal_server_sdk/models/dispute_category.rb +13 -0
- data/lib/paypal_server_sdk/models/eci_flag.rb +17 -0
- data/lib/paypal_server_sdk/models/enrollment_status.rb +15 -0
- data/lib/paypal_server_sdk/models/experience_context_shipping_preference.rb +14 -0
- data/lib/paypal_server_sdk/models/experience_status.rb +15 -0
- data/lib/paypal_server_sdk/models/fulfillment_type.rb +15 -0
- data/lib/paypal_server_sdk/models/google_pay_authentication_method.rb +13 -0
- data/lib/paypal_server_sdk/models/google_pay_payment_method.rb +6 -0
- data/lib/paypal_server_sdk/models/interval_unit.rb +15 -0
- data/lib/paypal_server_sdk/models/item_category.rb +14 -0
- data/lib/paypal_server_sdk/models/liability_shift_indicator.rb +14 -0
- data/lib/paypal_server_sdk/models/link_http_method.rb +19 -0
- data/lib/paypal_server_sdk/models/mobile_return_flow.rb +13 -0
- data/lib/paypal_server_sdk/models/o_auth_provider_error.rb +17 -0
- data/lib/paypal_server_sdk/models/order_application_context_landing_page.rb +14 -0
- data/lib/paypal_server_sdk/models/order_application_context_shipping_preference.rb +14 -0
- data/lib/paypal_server_sdk/models/order_application_context_user_action.rb +13 -0
- data/lib/paypal_server_sdk/models/order_status.rb +17 -0
- data/lib/paypal_server_sdk/models/order_tracker_status.rb +13 -0
- data/lib/paypal_server_sdk/models/orders_card_verification_method.rb +15 -0
- data/lib/paypal_server_sdk/models/os_type.rb +14 -0
- data/lib/paypal_server_sdk/models/pa_res_status.rb +19 -0
- data/lib/paypal_server_sdk/models/patch_op.rb +17 -0
- data/lib/paypal_server_sdk/models/payee_payment_method_preference.rb +13 -0
- data/lib/paypal_server_sdk/models/payment_advice_code.rb +26 -0
- data/lib/paypal_server_sdk/models/payment_initiator.rb +13 -0
- data/lib/paypal_server_sdk/models/payment_token_status.rb +16 -0
- data/lib/paypal_server_sdk/models/paypal_experience_landing_page.rb +15 -0
- data/lib/paypal_server_sdk/models/paypal_experience_user_action.rb +13 -0
- data/lib/paypal_server_sdk/models/paypal_payment_token_customer_type.rb +13 -0
- data/lib/paypal_server_sdk/models/paypal_payment_token_usage_type.rb +13 -0
- data/lib/paypal_server_sdk/models/paypal_reference_id_type.rb +15 -0
- data/lib/paypal_server_sdk/models/paypal_wallet_account_verification_status.rb +13 -0
- data/lib/paypal_server_sdk/models/paypal_wallet_contact_preference.rb +14 -0
- data/lib/paypal_server_sdk/models/paypal_wallet_context_shipping_preference.rb +14 -0
- data/lib/paypal_server_sdk/models/paypal_wallet_vault_status.rb +14 -0
- data/lib/paypal_server_sdk/models/phone_type.rb +16 -0
- data/lib/paypal_server_sdk/models/plan_request_status.rb +14 -0
- data/lib/paypal_server_sdk/models/pricing_model.rb +14 -0
- data/lib/paypal_server_sdk/models/processor_response_code.rb +165 -0
- data/lib/paypal_server_sdk/models/reason_code.rb +19 -0
- data/lib/paypal_server_sdk/models/refund_incomplete_reason.rb +6 -0
- data/lib/paypal_server_sdk/models/refund_status.rb +15 -0
- data/lib/paypal_server_sdk/models/return_flow.rb +13 -0
- data/lib/paypal_server_sdk/models/seller_protection_status.rb +14 -0
- data/lib/paypal_server_sdk/models/setup_fee_failure_action.rb +13 -0
- data/lib/paypal_server_sdk/models/shipment_carrier.rb +1428 -1
- data/lib/paypal_server_sdk/models/shipping_type.rb +15 -0
- data/lib/paypal_server_sdk/models/standard_entry_class_code.rb +15 -0
- data/lib/paypal_server_sdk/models/store_in_vault_instruction.rb +6 -0
- data/lib/paypal_server_sdk/models/stored_payment_source_payment_type.rb +14 -0
- data/lib/paypal_server_sdk/models/stored_payment_source_usage_type.rb +14 -0
- data/lib/paypal_server_sdk/models/subscription_plan_status.rb +14 -0
- data/lib/paypal_server_sdk/models/subscription_pricing_model.rb +13 -0
- data/lib/paypal_server_sdk/models/subscriptions_card_brand.rb +36 -0
- data/lib/paypal_server_sdk/models/tax_id_type.rb +13 -0
- data/lib/paypal_server_sdk/models/tenure_type.rb +13 -0
- data/lib/paypal_server_sdk/models/token_type.rb +6 -0
- data/lib/paypal_server_sdk/models/upc_type.rb +18 -0
- data/lib/paypal_server_sdk/models/usage_pattern.rb +23 -0
- data/lib/paypal_server_sdk/models/vault_card_verification_method.rb +13 -0
- data/lib/paypal_server_sdk/models/vault_instruction_action.rb +13 -0
- data/lib/paypal_server_sdk/models/vault_status.rb +14 -0
- data/lib/paypal_server_sdk/models/vault_token_request_type.rb +6 -0
- data/lib/paypal_server_sdk/models/vault_user_action.rb +13 -0
- data/lib/paypal_server_sdk/models/venmo_payment_token_customer_type.rb +13 -0
- data/lib/paypal_server_sdk/models/venmo_payment_token_usage_pattern.rb +17 -0
- data/lib/paypal_server_sdk/models/venmo_payment_token_usage_type.rb +13 -0
- data/lib/paypal_server_sdk/models/venmo_vault_response_status.rb +14 -0
- data/lib/paypal_server_sdk/models/venmo_wallet_experience_context_shipping_preference.rb +14 -0
- data/lib/paypal_server_sdk/models/venmo_wallet_experience_context_user_action.rb +13 -0
- metadata +3 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 716ca4b1a12121acd6e221becbf2d29c55063b4f8b46eb68b499a84d6c22a175
|
|
4
|
+
data.tar.gz: c875e40983c4bb398f4d40849540c2e3e8a612f94383ca70326bd7a5a24f7223
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 96c1fd80ecdf37001dc6e351e81677e02740414aba53b4913a71c56a82a1bafcc5d5f55caf6af264a5e065fdbcfcb7ddd07875358c09b893087277016371a6a3
|
|
7
|
+
data.tar.gz: 0d5bb3db5f27cddfff1c1712fd14d0519108a9d5239605615f6ade8aa5c452cdf5b2cb59986e9e99066e44ea04042867c5c79491b4e21f10be0db6eddb228ebc
|
data/README.md
CHANGED
|
@@ -22,20 +22,55 @@ The PayPal Server SDK provides integration access to the PayPal REST APIs. The A
|
|
|
22
22
|
Install the gem from the command line:
|
|
23
23
|
|
|
24
24
|
```bash
|
|
25
|
-
gem install paypal-server-sdk -v 2.
|
|
25
|
+
gem install paypal-server-sdk -v 2.1.0
|
|
26
26
|
```
|
|
27
27
|
|
|
28
28
|
Or add the gem to your Gemfile and run `bundle`:
|
|
29
29
|
|
|
30
30
|
```ruby
|
|
31
|
-
gem 'paypal-server-sdk', '2.
|
|
31
|
+
gem 'paypal-server-sdk', '2.1.0'
|
|
32
32
|
```
|
|
33
33
|
|
|
34
|
-
For additional gem details, see the [RubyGems page for the paypal-server-sdk gem](https://rubygems.org/gems/paypal-server-sdk/versions/2.
|
|
34
|
+
For additional gem details, see the [RubyGems page for the paypal-server-sdk gem](https://rubygems.org/gems/paypal-server-sdk/versions/2.1.0).
|
|
35
|
+
|
|
36
|
+
## IRB Console Usage
|
|
37
|
+
|
|
38
|
+
You can explore the SDK interactively using IRB in two ways
|
|
39
|
+
|
|
40
|
+
### 1. Use IRB with Installed Gem
|
|
41
|
+
|
|
42
|
+
Open your system terminal (Command Prompt, Git Bash or macOS Terminal) and type the following command to start the irb console.
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
irb
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Now you can load the SDK in the IRB
|
|
49
|
+
|
|
50
|
+
```ruby
|
|
51
|
+
require 'paypal_server_sdk'
|
|
52
|
+
include PaypalServerSdk
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### 2. Use IRB within SDK
|
|
56
|
+
|
|
57
|
+
Open your system terminal (Command Prompt, Git Bash or macOS Terminal) and navigate to the root folder of SDK.
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
cd path/to/paypal_server_sdk
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Now you can start the preconfigured irb console by running the following command
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
ruby bin/console
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
**_Note:_** This automatically loads the SDK from lib/
|
|
35
70
|
|
|
36
71
|
## Initialize the API Client
|
|
37
72
|
|
|
38
|
-
**_Note:_** Documentation for the client can be found [here.](https://www.github.com/paypal/PayPal-Ruby-Server-SDK/tree/2.
|
|
73
|
+
**_Note:_** Documentation for the client can be found [here.](https://www.github.com/paypal/PayPal-Ruby-Server-SDK/tree/2.1.0/doc/client.md)
|
|
39
74
|
|
|
40
75
|
The following parameters are configurable for the API Client:
|
|
41
76
|
|
|
@@ -51,12 +86,14 @@ The following parameters are configurable for the API Client:
|
|
|
51
86
|
| retry_statuses | `Array` | A list of HTTP statuses to retry. <br> **Default: [408, 413, 429, 500, 502, 503, 504, 521, 522, 524]** |
|
|
52
87
|
| retry_methods | `Array` | A list of HTTP methods to retry. <br> **Default: %i[get put]** |
|
|
53
88
|
| http_callback | `HttpCallBack` | The Http CallBack allows defining callables for pre and post API calls. |
|
|
54
|
-
| proxy_settings | [`ProxySettings`](https://www.github.com/paypal/PayPal-Ruby-Server-SDK/tree/2.
|
|
55
|
-
| logging_configuration | [`LoggingConfiguration`](https://www.github.com/paypal/PayPal-Ruby-Server-SDK/tree/2.
|
|
56
|
-
| client_credentials_auth_credentials | [`ClientCredentialsAuthCredentials`](https://www.github.com/paypal/PayPal-Ruby-Server-SDK/tree/2.
|
|
89
|
+
| proxy_settings | [`ProxySettings`](https://www.github.com/paypal/PayPal-Ruby-Server-SDK/tree/2.1.0/doc/proxy-settings.md) | Optional proxy configuration to route HTTP requests through a proxy server. |
|
|
90
|
+
| logging_configuration | [`LoggingConfiguration`](https://www.github.com/paypal/PayPal-Ruby-Server-SDK/tree/2.1.0/doc/logging-configuration.md) | The SDK logging configuration for API calls |
|
|
91
|
+
| client_credentials_auth_credentials | [`ClientCredentialsAuthCredentials`](https://www.github.com/paypal/PayPal-Ruby-Server-SDK/tree/2.1.0/doc/auth/oauth-2-client-credentials-grant.md) | The credential object for OAuth 2 Client Credentials Grant |
|
|
57
92
|
|
|
58
93
|
The API client can be initialized as follows:
|
|
59
94
|
|
|
95
|
+
### Code-Based Client Initialization
|
|
96
|
+
|
|
60
97
|
```ruby
|
|
61
98
|
require 'paypal_server_sdk'
|
|
62
99
|
include PaypalServerSdk
|
|
@@ -79,6 +116,18 @@ client = Client.new(
|
|
|
79
116
|
)
|
|
80
117
|
```
|
|
81
118
|
|
|
119
|
+
### Environment-Based Client Initialization
|
|
120
|
+
|
|
121
|
+
```ruby
|
|
122
|
+
require 'paypal_server_sdk'
|
|
123
|
+
include PaypalServerSdk
|
|
124
|
+
|
|
125
|
+
# Create client from environment
|
|
126
|
+
client = Client.from_env
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
See the [`Environment-Based Client Initialization`](https://www.github.com/paypal/PayPal-Ruby-Server-SDK/tree/2.1.0/doc/environment-based-client-initialization.md) section for details.
|
|
130
|
+
|
|
82
131
|
## Environments
|
|
83
132
|
|
|
84
133
|
The SDK can be configured to use a different environment for making API calls. Available environments are:
|
|
@@ -94,34 +143,35 @@ The SDK can be configured to use a different environment for making API calls. A
|
|
|
94
143
|
|
|
95
144
|
This API uses the following authentication schemes.
|
|
96
145
|
|
|
97
|
-
* [`Oauth2 (OAuth 2 Client Credentials Grant)`](https://www.github.com/paypal/PayPal-Ruby-Server-SDK/tree/2.
|
|
146
|
+
* [`Oauth2 (OAuth 2 Client Credentials Grant)`](https://www.github.com/paypal/PayPal-Ruby-Server-SDK/tree/2.1.0/doc/auth/oauth-2-client-credentials-grant.md)
|
|
98
147
|
|
|
99
148
|
## List of APIs
|
|
100
149
|
|
|
101
|
-
* [
|
|
102
|
-
* [
|
|
103
|
-
* [
|
|
104
|
-
* [
|
|
105
|
-
* [Subscriptions](https://www.github.com/paypal/PayPal-Ruby-Server-SDK/tree/2.
|
|
150
|
+
* [Orders](https://www.github.com/paypal/PayPal-Ruby-Server-SDK/tree/2.1.0/doc/controllers/orders.md)
|
|
151
|
+
* [Payments](https://www.github.com/paypal/PayPal-Ruby-Server-SDK/tree/2.1.0/doc/controllers/payments.md)
|
|
152
|
+
* [Vault](https://www.github.com/paypal/PayPal-Ruby-Server-SDK/tree/2.1.0/doc/controllers/vault.md)
|
|
153
|
+
* [Transaction Search](https://www.github.com/paypal/PayPal-Ruby-Server-SDK/tree/2.1.0/doc/controllers/transaction-search.md)
|
|
154
|
+
* [Subscriptions](https://www.github.com/paypal/PayPal-Ruby-Server-SDK/tree/2.1.0/doc/controllers/subscriptions.md)
|
|
106
155
|
|
|
107
156
|
## SDK Infrastructure
|
|
108
157
|
|
|
109
158
|
### Configuration
|
|
110
159
|
|
|
111
|
-
* [ProxySettings](https://www.github.com/paypal/PayPal-Ruby-Server-SDK/tree/2.
|
|
112
|
-
* [
|
|
113
|
-
* [
|
|
114
|
-
* [
|
|
115
|
-
* [
|
|
160
|
+
* [ProxySettings](https://www.github.com/paypal/PayPal-Ruby-Server-SDK/tree/2.1.0/doc/proxy-settings.md)
|
|
161
|
+
* [Environment-Based Client Initialization](https://www.github.com/paypal/PayPal-Ruby-Server-SDK/tree/2.1.0/doc/environment-based-client-initialization.md)
|
|
162
|
+
* [AbstractLogger](https://www.github.com/paypal/PayPal-Ruby-Server-SDK/tree/2.1.0/doc/abstract-logger.md)
|
|
163
|
+
* [LoggingConfiguration](https://www.github.com/paypal/PayPal-Ruby-Server-SDK/tree/2.1.0/doc/logging-configuration.md)
|
|
164
|
+
* [RequestLoggingConfiguration](https://www.github.com/paypal/PayPal-Ruby-Server-SDK/tree/2.1.0/doc/request-logging-configuration.md)
|
|
165
|
+
* [ResponseLoggingConfiguration](https://www.github.com/paypal/PayPal-Ruby-Server-SDK/tree/2.1.0/doc/response-logging-configuration.md)
|
|
116
166
|
|
|
117
167
|
### HTTP
|
|
118
168
|
|
|
119
|
-
* [HttpResponse](https://www.github.com/paypal/PayPal-Ruby-Server-SDK/tree/2.
|
|
120
|
-
* [HttpRequest](https://www.github.com/paypal/PayPal-Ruby-Server-SDK/tree/2.
|
|
169
|
+
* [HttpResponse](https://www.github.com/paypal/PayPal-Ruby-Server-SDK/tree/2.1.0/doc/http-response.md)
|
|
170
|
+
* [HttpRequest](https://www.github.com/paypal/PayPal-Ruby-Server-SDK/tree/2.1.0/doc/http-request.md)
|
|
121
171
|
|
|
122
172
|
### Utilities
|
|
123
173
|
|
|
124
|
-
* [ApiResponse](https://www.github.com/paypal/PayPal-Ruby-Server-SDK/tree/2.
|
|
125
|
-
* [ApiHelper](https://www.github.com/paypal/PayPal-Ruby-Server-SDK/tree/2.
|
|
126
|
-
* [DateTimeHelper](https://www.github.com/paypal/PayPal-Ruby-Server-SDK/tree/2.
|
|
174
|
+
* [ApiResponse](https://www.github.com/paypal/PayPal-Ruby-Server-SDK/tree/2.1.0/doc/api-response.md)
|
|
175
|
+
* [ApiHelper](https://www.github.com/paypal/PayPal-Ruby-Server-SDK/tree/2.1.0/doc/api-helper.md)
|
|
176
|
+
* [DateTimeHelper](https://www.github.com/paypal/PayPal-Ruby-Server-SDK/tree/2.1.0/doc/date-time-helper.md)
|
|
127
177
|
|
data/bin/console
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
# Load the lib folder into Ruby's load path
|
|
4
|
+
$LOAD_PATH.unshift(File.expand_path('../lib', __dir__))
|
|
5
|
+
|
|
6
|
+
# Require the gem
|
|
7
|
+
require 'paypal_server_sdk'
|
|
8
|
+
|
|
9
|
+
puts 'PaypalServerSdk SDK loaded!'
|
|
10
|
+
puts 'You can now create a client with: client = PaypalServerSdk::Client.new'
|
|
11
|
+
puts 'Or use from_env: client = PaypalServerSdk::Client.from_env'
|
|
12
|
+
|
|
13
|
+
# Start an interactive IRB session
|
|
14
|
+
require 'irb'
|
|
15
|
+
IRB.start
|
|
@@ -8,6 +8,10 @@ module PaypalServerSdk
|
|
|
8
8
|
class Client
|
|
9
9
|
include CoreLibrary
|
|
10
10
|
attr_reader :config, :auth_managers
|
|
11
|
+
|
|
12
|
+
def user_agent_detail
|
|
13
|
+
config.user_agent_detail
|
|
14
|
+
end
|
|
11
15
|
|
|
12
16
|
# Returns the configured authentication Oauth2 instance.
|
|
13
17
|
def oauth2
|
|
@@ -94,5 +98,12 @@ module PaypalServerSdk
|
|
|
94
98
|
@auth_managers['Oauth2'] = OAuth2.new(http_client_config.client_credentials_auth_credentials,
|
|
95
99
|
global_config)
|
|
96
100
|
end
|
|
101
|
+
|
|
102
|
+
# Creates a client directly from environment variables.
|
|
103
|
+
def self.from_env(**overrides)
|
|
104
|
+
default_config = Configuration.build_default_config_from_env
|
|
105
|
+
new_config = default_config.clone_with(**overrides)
|
|
106
|
+
new(config: new_config)
|
|
107
|
+
end
|
|
97
108
|
end
|
|
98
109
|
end
|
|
@@ -12,6 +12,21 @@ module PaypalServerSdk
|
|
|
12
12
|
PRODUCTION = 'Production'.freeze,
|
|
13
13
|
SANDBOX = 'Sandbox'.freeze
|
|
14
14
|
].freeze
|
|
15
|
+
|
|
16
|
+
# Converts a string or symbol into a valid Environment constant.
|
|
17
|
+
def self.from_value(value, default_value = PRODUCTION)
|
|
18
|
+
return default_value if value.nil?
|
|
19
|
+
|
|
20
|
+
str = value.to_s.strip.downcase
|
|
21
|
+
case str
|
|
22
|
+
when 'production' then PRODUCTION
|
|
23
|
+
when 'sandbox' then SANDBOX
|
|
24
|
+
|
|
25
|
+
else
|
|
26
|
+
warn "[Environment] Unknown environment '#{value}', falling back to #{default_value} "
|
|
27
|
+
default_value
|
|
28
|
+
end
|
|
29
|
+
end
|
|
15
30
|
end
|
|
16
31
|
|
|
17
32
|
# An enum for API servers.
|
|
@@ -19,6 +34,13 @@ module PaypalServerSdk
|
|
|
19
34
|
SERVER = [
|
|
20
35
|
DEFAULT = 'default'.freeze
|
|
21
36
|
].freeze
|
|
37
|
+
|
|
38
|
+
# Converts a string or symbol into a valid Server constant.
|
|
39
|
+
def self.from_value(value, default_value = DEFAULT)
|
|
40
|
+
return default_value if value.nil?
|
|
41
|
+
|
|
42
|
+
default_value
|
|
43
|
+
end
|
|
22
44
|
end
|
|
23
45
|
|
|
24
46
|
# All configuration including auth info and base URI for the API access
|
|
@@ -107,5 +129,49 @@ module PaypalServerSdk
|
|
|
107
129
|
def get_base_uri(server = Server::DEFAULT)
|
|
108
130
|
ENVIRONMENTS[environment][server].clone
|
|
109
131
|
end
|
|
132
|
+
|
|
133
|
+
# Builds a Configuration instance using environment variables.
|
|
134
|
+
def self.build_default_config_from_env
|
|
135
|
+
# === Core environment ===
|
|
136
|
+
environment = Environment.from_value(ENV.fetch('ENVIRONMENT', 'sandbox'))
|
|
137
|
+
timeout = (ENV['TIMEOUT'] || 60).to_f
|
|
138
|
+
max_retries = (ENV['MAX_RETRIES'] || 0).to_i
|
|
139
|
+
retry_interval = (ENV['RETRY_INTERVAL'] || 1).to_f
|
|
140
|
+
backoff_factor = (ENV['BACKOFF_FACTOR'] || 2).to_f
|
|
141
|
+
retry_statuses = ENV.fetch('RETRY_STATUSES',
|
|
142
|
+
'[408, 413, 429, 500, 502, 503, 504, 521, 522, 524]').gsub(/[\[\]]/, '')
|
|
143
|
+
.split(',')
|
|
144
|
+
.map(&:strip)
|
|
145
|
+
.map do |item|
|
|
146
|
+
item.match?(/\A\d+\z/) ? item.to_i : item.downcase
|
|
147
|
+
end
|
|
148
|
+
retry_methods = ENV.fetch('RETRY_METHODS', '%i[get put]').gsub(/[\[\]]/, '')
|
|
149
|
+
.split(',')
|
|
150
|
+
.map(&:strip)
|
|
151
|
+
.map do |item|
|
|
152
|
+
item.match?(/\A\d+\z/) ? item.to_i : item.downcase
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
# === Authentication credentials ===
|
|
156
|
+
client_credentials_auth_credentials = ClientCredentialsAuthCredentials.from_env
|
|
157
|
+
|
|
158
|
+
# === Proxy settings ===
|
|
159
|
+
proxy_settings = ProxySettings.from_env
|
|
160
|
+
# === Logging Configuration ===
|
|
161
|
+
logging_configuration = LoggingConfiguration.from_env if LoggingConfiguration.any_logging_configured?
|
|
162
|
+
|
|
163
|
+
Configuration.new(
|
|
164
|
+
environment: environment,
|
|
165
|
+
timeout: timeout,
|
|
166
|
+
max_retries: max_retries,
|
|
167
|
+
retry_interval: retry_interval,
|
|
168
|
+
backoff_factor: backoff_factor,
|
|
169
|
+
retry_statuses: retry_statuses,
|
|
170
|
+
retry_methods: retry_methods,
|
|
171
|
+
client_credentials_auth_credentials: client_credentials_auth_credentials,
|
|
172
|
+
proxy_settings: proxy_settings,
|
|
173
|
+
logging_configuration: logging_configuration
|
|
174
|
+
)
|
|
175
|
+
end
|
|
110
176
|
end
|
|
111
177
|
end
|
|
@@ -10,7 +10,7 @@ module PaypalServerSdk
|
|
|
10
10
|
attr_accessor :config, :http_call_back
|
|
11
11
|
|
|
12
12
|
def self.user_agent
|
|
13
|
-
'PayPal REST API Ruby SDK, Version: 2.
|
|
13
|
+
'PayPal REST API Ruby SDK, Version: 2.1.0, on OS {os-info}'
|
|
14
14
|
end
|
|
15
15
|
|
|
16
16
|
def self.user_agent_parameters
|
|
@@ -114,6 +114,21 @@ module PaypalServerSdk
|
|
|
114
114
|
@o_auth_clock_skew = o_auth_clock_skew
|
|
115
115
|
end
|
|
116
116
|
|
|
117
|
+
def self.from_env
|
|
118
|
+
o_auth_client_id = ENV['O_AUTH_CLIENT_ID']
|
|
119
|
+
o_auth_client_secret = ENV['O_AUTH_CLIENT_SECRET']
|
|
120
|
+
o_auth_clock_skew = ENV['O_AUTH_CLOCK_SKEW']
|
|
121
|
+
all_nil = [
|
|
122
|
+
o_auth_client_id,
|
|
123
|
+
o_auth_client_secret
|
|
124
|
+
].all?(&:nil?)
|
|
125
|
+
return nil if all_nil
|
|
126
|
+
|
|
127
|
+
new(o_auth_client_id: o_auth_client_id,
|
|
128
|
+
o_auth_client_secret: o_auth_client_secret,
|
|
129
|
+
o_auth_clock_skew: o_auth_clock_skew)
|
|
130
|
+
end
|
|
131
|
+
|
|
117
132
|
def clone_with(o_auth_client_id: nil, o_auth_client_secret: nil,
|
|
118
133
|
o_auth_token: nil, o_auth_token_provider: nil,
|
|
119
134
|
o_auth_on_token_update: nil, o_auth_clock_skew: nil)
|
|
@@ -9,5 +9,14 @@ module PaypalServerSdk
|
|
|
9
9
|
# including optional basic authentication.
|
|
10
10
|
#
|
|
11
11
|
class ProxySettings < CoreLibrary::ProxySettings
|
|
12
|
+
def self.from_env
|
|
13
|
+
address = ENV['PROXY_ADDRESS']
|
|
14
|
+
port = ENV['PROXY_PORT']
|
|
15
|
+
username = ENV['PROXY_USERNAME']
|
|
16
|
+
password = ENV['PROXY_PASSWORD']
|
|
17
|
+
return nil if address.nil? || address.strip.empty?
|
|
18
|
+
|
|
19
|
+
new(address: address, port: port, username: username, password: password)
|
|
20
|
+
end
|
|
12
21
|
end
|
|
13
22
|
end
|
|
@@ -3,112 +3,184 @@
|
|
|
3
3
|
# This file was automatically generated by APIMATIC v3.0
|
|
4
4
|
# ( https://www.apimatic.io ).
|
|
5
5
|
|
|
6
|
-
module PaypalServerSdk
|
|
7
|
-
# Initializes a new instance of RequestLoggingConfiguration.
|
|
8
|
-
class RequestLoggingConfiguration < CoreLibrary::ApiRequestLoggingConfiguration
|
|
9
|
-
# @param log_body [Boolean] Indicates whether the message body should be logged. Default is false.
|
|
10
|
-
# @param log_headers [Boolean] Indicates whether the message headers should be logged. Default is false.
|
|
11
|
-
# @param headers_to_exclude [Array<String>] Array of headers not displayed in logging. Default is an empty array.
|
|
12
|
-
# @param headers_to_include [Array<String>] Array of headers to be displayed in logging. Default is an empty array.
|
|
13
|
-
# @param headers_to_unmask [Array<String>] Array of headers which values are non-sensitive to display in logging.
|
|
14
|
-
# Default is an empty array.
|
|
15
|
-
def initialize(log_body: false, log_headers: false, headers_to_include: nil,
|
|
16
|
-
headers_to_exclude: nil, headers_to_unmask: nil,
|
|
17
|
-
include_query_in_path: false)
|
|
18
|
-
super(
|
|
19
|
-
log_body,
|
|
20
|
-
log_headers,
|
|
21
|
-
headers_to_exclude,
|
|
22
|
-
headers_to_include,
|
|
23
|
-
headers_to_unmask,
|
|
24
|
-
include_query_in_path
|
|
25
|
-
)
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
def clone_with(log_body: nil, log_headers: nil, headers_to_include: nil,
|
|
29
|
-
headers_to_exclude: nil, headers_to_unmask: nil, include_query_in_path: nil)
|
|
30
|
-
log_body ||= self.log_body
|
|
31
|
-
log_headers ||= self.log_headers
|
|
32
|
-
headers_to_include ||= self.headers_to_include
|
|
33
|
-
headers_to_exclude ||= self.headers_to_exclude
|
|
34
|
-
headers_to_unmask ||= self.headers_to_unmask
|
|
35
|
-
include_query_in_path ||= self.include_query_in_path
|
|
36
|
-
|
|
37
|
-
RequestLoggingConfiguration.
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
log_body,
|
|
57
|
-
log_headers,
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
headers_to_unmask
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
6
|
+
module PaypalServerSdk
|
|
7
|
+
# Initializes a new instance of RequestLoggingConfiguration.
|
|
8
|
+
class RequestLoggingConfiguration < CoreLibrary::ApiRequestLoggingConfiguration
|
|
9
|
+
# @param log_body [Boolean] Indicates whether the message body should be logged. Default is false.
|
|
10
|
+
# @param log_headers [Boolean] Indicates whether the message headers should be logged. Default is false.
|
|
11
|
+
# @param headers_to_exclude [Array<String>] Array of headers not displayed in logging. Default is an empty array.
|
|
12
|
+
# @param headers_to_include [Array<String>] Array of headers to be displayed in logging. Default is an empty array.
|
|
13
|
+
# @param headers_to_unmask [Array<String>] Array of headers which values are non-sensitive to display in logging.
|
|
14
|
+
# Default is an empty array.
|
|
15
|
+
def initialize(log_body: false, log_headers: false, headers_to_include: nil,
|
|
16
|
+
headers_to_exclude: nil, headers_to_unmask: nil,
|
|
17
|
+
include_query_in_path: false)
|
|
18
|
+
super(
|
|
19
|
+
log_body,
|
|
20
|
+
log_headers,
|
|
21
|
+
headers_to_exclude,
|
|
22
|
+
headers_to_include,
|
|
23
|
+
headers_to_unmask,
|
|
24
|
+
include_query_in_path
|
|
25
|
+
)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def clone_with(log_body: nil, log_headers: nil, headers_to_include: nil,
|
|
29
|
+
headers_to_exclude: nil, headers_to_unmask: nil, include_query_in_path: nil)
|
|
30
|
+
log_body ||= self.log_body
|
|
31
|
+
log_headers ||= self.log_headers
|
|
32
|
+
headers_to_include ||= self.headers_to_include
|
|
33
|
+
headers_to_exclude ||= self.headers_to_exclude
|
|
34
|
+
headers_to_unmask ||= self.headers_to_unmask
|
|
35
|
+
include_query_in_path ||= self.include_query_in_path
|
|
36
|
+
|
|
37
|
+
RequestLoggingConfiguration.new(
|
|
38
|
+
log_body: log_body,
|
|
39
|
+
log_headers: log_headers,
|
|
40
|
+
headers_to_include: headers_to_include,
|
|
41
|
+
headers_to_exclude: headers_to_exclude,
|
|
42
|
+
headers_to_unmask: headers_to_unmask,
|
|
43
|
+
include_query_in_path: include_query_in_path
|
|
44
|
+
)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def self.from_env
|
|
48
|
+
log_body = ENV['REQUEST_LOG_BODY']
|
|
49
|
+
log_headers = ENV['REQUEST_LOG_HEADERS']
|
|
50
|
+
headers_to_include = ENV['REQUEST_HEADERS_TO_INCLUDE']
|
|
51
|
+
headers_to_exclude = ENV['REQUEST_HEADERS_TO_EXCLUDE']
|
|
52
|
+
headers_to_unmask = ENV['REQUEST_HEADERS_TO_UNMASK']
|
|
53
|
+
include_query_in_path = ENV['REQUEST_INCLUDE_QUERY_IN_PATH']
|
|
54
|
+
|
|
55
|
+
new(
|
|
56
|
+
log_body: log_body,
|
|
57
|
+
log_headers: log_headers,
|
|
58
|
+
headers_to_include: headers_to_include,
|
|
59
|
+
headers_to_exclude: headers_to_exclude,
|
|
60
|
+
headers_to_unmask: headers_to_unmask,
|
|
61
|
+
include_query_in_path: include_query_in_path
|
|
62
|
+
)
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def self.any_logging_configured?
|
|
66
|
+
%w[
|
|
67
|
+
REQUEST_LOG_BODY
|
|
68
|
+
REQUEST_LOG_HEADERS
|
|
69
|
+
REQUEST_HEADERS_TO_INCLUDE
|
|
70
|
+
REQUEST_HEADERS_TO_EXCLUDE
|
|
71
|
+
REQUEST_HEADERS_TO_UNMASK
|
|
72
|
+
REQUEST_INCLUDE_QUERY_IN_PATH
|
|
73
|
+
].any? { |key| ENV.key?(key) && !ENV[key].nil? && !ENV[key].empty? }
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
# Initializes a new instance of ResponseLoggingConfiguration.
|
|
78
|
+
class ResponseLoggingConfiguration < CoreLibrary::ApiResponseLoggingConfiguration
|
|
79
|
+
def initialize(log_body: false, log_headers: false, headers_to_include: nil,
|
|
80
|
+
headers_to_exclude: nil, headers_to_unmask: nil)
|
|
81
|
+
super(
|
|
82
|
+
log_body,
|
|
83
|
+
log_headers,
|
|
84
|
+
headers_to_exclude,
|
|
85
|
+
headers_to_include,
|
|
86
|
+
headers_to_unmask
|
|
87
|
+
)
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
def clone_with(log_body: nil, log_headers: nil, headers_to_include: nil,
|
|
91
|
+
headers_to_exclude: nil, headers_to_unmask: nil)
|
|
92
|
+
log_body ||= self.log_body
|
|
93
|
+
log_headers ||= self.log_headers
|
|
94
|
+
headers_to_include ||= self.headers_to_include
|
|
95
|
+
headers_to_exclude ||= self.headers_to_exclude
|
|
96
|
+
headers_to_unmask ||= self.headers_to_unmask
|
|
97
|
+
|
|
98
|
+
ResponseLoggingConfiguration.new(
|
|
99
|
+
log_body: log_body,
|
|
100
|
+
log_headers: log_headers,
|
|
101
|
+
headers_to_include: headers_to_include,
|
|
102
|
+
headers_to_exclude: headers_to_exclude,
|
|
103
|
+
headers_to_unmask: headers_to_unmask
|
|
104
|
+
)
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
def self.from_env
|
|
108
|
+
log_body = ENV['RESPONSE_LOG_BODY']
|
|
109
|
+
log_headers = ENV['RESPONSE_LOG_HEADERS']
|
|
110
|
+
headers_to_include = ENV['RESPONSE_HEADERS_TO_INCLUDE']
|
|
111
|
+
headers_to_exclude = ENV['RESPONSE_HEADERS_TO_EXCLUDE']
|
|
112
|
+
headers_to_unmask = ENV['RESPONSE_HEADERS_TO_UNMASK']
|
|
113
|
+
|
|
114
|
+
new(
|
|
115
|
+
log_body: log_body,
|
|
116
|
+
log_headers: log_headers,
|
|
117
|
+
headers_to_include: headers_to_include,
|
|
118
|
+
headers_to_exclude: headers_to_exclude,
|
|
119
|
+
headers_to_unmask: headers_to_unmask
|
|
120
|
+
)
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
def self.any_logging_configured?
|
|
124
|
+
%w[
|
|
125
|
+
RESPONSE_LOG_BODY
|
|
126
|
+
RESPONSE_LOG_HEADERS
|
|
127
|
+
RESPONSE_HEADERS_TO_INCLUDE
|
|
128
|
+
RESPONSE_HEADERS_TO_EXCLUDE
|
|
129
|
+
RESPONSE_HEADERS_TO_UNMASK
|
|
130
|
+
].any? { |key| ENV.key?(key) && !ENV[key].nil? && !ENV[key].empty? }
|
|
131
|
+
end
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
# Initializes a new instance of LoggingConfiguration.
|
|
135
|
+
class LoggingConfiguration < CoreLibrary::ApiLoggingConfiguration
|
|
136
|
+
def initialize(logger: nil, log_level: nil, mask_sensitive_headers: true,
|
|
137
|
+
request_logging_config: nil,
|
|
138
|
+
response_logging_config: nil)
|
|
139
|
+
request_logging_config ||= RequestLoggingConfiguration.new
|
|
140
|
+
response_logging_config ||= ResponseLoggingConfiguration.new
|
|
141
|
+
super(
|
|
142
|
+
logger,
|
|
143
|
+
log_level,
|
|
144
|
+
request_logging_config,
|
|
145
|
+
response_logging_config,
|
|
146
|
+
mask_sensitive_headers
|
|
147
|
+
)
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
def clone_with(logger: nil, log_level: nil, mask_sensitive_headers: nil,
|
|
151
|
+
request_logging_config: nil, response_logging_config: nil)
|
|
152
|
+
logger ||= self.logger
|
|
153
|
+
log_level ||= self.log_level
|
|
154
|
+
mask_sensitive_headers ||= self.mask_sensitive_headers
|
|
155
|
+
request_logging_config ||= self.request_logging_config.clone
|
|
156
|
+
response_logging_config ||= self.response_logging_config.clone
|
|
157
|
+
|
|
158
|
+
LoggingConfiguration.new(
|
|
159
|
+
logger: logger,
|
|
160
|
+
log_level: log_level,
|
|
161
|
+
mask_sensitive_headers: mask_sensitive_headers,
|
|
162
|
+
request_logging_config: request_logging_config,
|
|
163
|
+
response_logging_config: response_logging_config
|
|
164
|
+
)
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
def self.from_env
|
|
168
|
+
log_level = ENV['LOG_LEVEL']
|
|
169
|
+
mask_sensitive_headers = ENV['MASK_SENSITIVE_HEADERS']
|
|
170
|
+
|
|
171
|
+
new(
|
|
172
|
+
log_level: log_level,
|
|
173
|
+
mask_sensitive_headers: mask_sensitive_headers,
|
|
174
|
+
request_logging_config: RequestLoggingConfiguration.from_env,
|
|
175
|
+
response_logging_config: ResponseLoggingConfiguration.from_env
|
|
176
|
+
)
|
|
177
|
+
end
|
|
178
|
+
|
|
179
|
+
def self.any_logging_configured?
|
|
180
|
+
RequestLoggingConfiguration.any_logging_configured? ||
|
|
181
|
+
ResponseLoggingConfiguration.any_logging_configured? ||
|
|
182
|
+
ENV.key?('LOG_LEVEL') ||
|
|
183
|
+
ENV.key?('MASK_SENSITIVE_HEADERS')
|
|
184
|
+
end
|
|
185
|
+
end
|
|
186
|
+
end
|
|
@@ -24,5 +24,18 @@ module PaypalServerSdk
|
|
|
24
24
|
|
|
25
25
|
true
|
|
26
26
|
end
|
|
27
|
+
|
|
28
|
+
def self.from_value(value, default_value = ENUM_3DSECURE)
|
|
29
|
+
return default_value if value.nil?
|
|
30
|
+
|
|
31
|
+
str = value.to_s.strip
|
|
32
|
+
|
|
33
|
+
case str.downcase
|
|
34
|
+
when 'enum_3dsecure' then ENUM_3DSECURE
|
|
35
|
+
when 'emv' then EMV
|
|
36
|
+
else
|
|
37
|
+
default_value
|
|
38
|
+
end
|
|
39
|
+
end
|
|
27
40
|
end
|
|
28
41
|
end
|