-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathconfiguration.py
124 lines (100 loc) · 4.77 KB
/
configuration.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
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
115
116
117
118
119
120
121
122
123
124
# -*- coding: utf-8 -*-
"""
paypalserversdk
This file was automatically generated by APIMATIC v3.0 (
https://www.apimatic.io ).
"""
from enum import Enum
from apimatic_core.http.configurations.http_client_configuration import HttpClientConfiguration
from apimatic_requests_client_adapter.requests_client import RequestsClient
class Environment(Enum):
"""An enum for SDK environments"""
# PayPal Live Environment
PRODUCTION = 0
# PayPal Sandbox Environment
SANDBOX = 1
class Server(Enum):
"""An enum for API servers"""
DEFAULT = 0
class Configuration(HttpClientConfiguration):
"""A class used for configuring the SDK by a user.
"""
@property
def environment(self):
return self._environment
@property
def client_credentials_auth_credentials(self):
return self._client_credentials_auth_credentials
def __init__(self, http_client_instance=None,
override_http_client_configuration=False, http_call_back=None,
timeout=60, max_retries=0, backoff_factor=2,
retry_statuses=None, retry_methods=None,
logging_configuration=None, environment=Environment.SANDBOX,
client_credentials_auth_credentials=None):
if retry_methods is None:
retry_methods = ['GET', 'PUT']
if retry_statuses is None:
retry_statuses = [408, 413, 429, 500, 502, 503, 504, 521, 522, 524]
super().__init__(http_client_instance,
override_http_client_configuration, http_call_back,
timeout, max_retries, backoff_factor, retry_statuses,
retry_methods, logging_configuration)
# Current API environment
self._environment = environment
self._client_credentials_auth_credentials = client_credentials_auth_credentials
# The Http Client to use for making requests.
self.set_http_client(self.create_http_client())
def clone_with(self, http_client_instance=None,
override_http_client_configuration=None, http_call_back=None,
timeout=None, max_retries=None, backoff_factor=None,
retry_statuses=None, retry_methods=None,
logging_configuration=None, environment=None,
client_credentials_auth_credentials=None):
http_client_instance = http_client_instance or self.http_client_instance
override_http_client_configuration = override_http_client_configuration or self.override_http_client_configuration
http_call_back = http_call_back or self.http_callback
timeout = timeout or self.timeout
max_retries = max_retries or self.max_retries
backoff_factor = backoff_factor or self.backoff_factor
retry_statuses = retry_statuses or self.retry_statuses
retry_methods = retry_methods or self.retry_methods
logging_configuration = logging_configuration or self.logging_configuration
environment = environment or self.environment
client_credentials_auth_credentials = client_credentials_auth_credentials or self.client_credentials_auth_credentials
return Configuration(
http_client_instance=http_client_instance,
override_http_client_configuration=override_http_client_configuration,
http_call_back=http_call_back, timeout=timeout, max_retries=max_retries,
backoff_factor=backoff_factor, retry_statuses=retry_statuses,
retry_methods=retry_methods,
logging_configuration=logging_configuration, environment=environment,
client_credentials_auth_credentials=client_credentials_auth_credentials
)
def create_http_client(self):
return RequestsClient(
timeout=self.timeout, max_retries=self.max_retries,
backoff_factor=self.backoff_factor, retry_statuses=self.retry_statuses,
retry_methods=self.retry_methods,
http_client_instance=self.http_client_instance,
override_http_client_configuration=self.override_http_client_configuration,
response_factory=self.http_response_factory
)
# All the environments the SDK can run in
environments = {
Environment.PRODUCTION: {
Server.DEFAULT: 'https://api-m.paypal.com'
},
Environment.SANDBOX: {
Server.DEFAULT: 'https://api-m.sandbox.paypal.com'
}
}
def get_base_uri(self, server=Server.DEFAULT):
"""Generates the appropriate base URI for the environment and the
server.
Args:
server (Configuration.Server): The server enum for which the base
URI is required.
Returns:
String: The base URI.
"""
return self.environments[self.environment][server]