1: | <?php |
2: | namespace Worldline\Acquiring\Sdk; |
3: | |
4: | use UnexpectedValueException; |
5: | use Worldline\Acquiring\Sdk\Domain\ShoppingCartExtension; |
6: | |
7: | /** |
8: | * Class CommunicatorConfiguration |
9: | * |
10: | * @package Worldline\Acquiring\Sdk |
11: | */ |
12: | class CommunicatorConfiguration |
13: | { |
14: | /** |
15: | * @var string |
16: | */ |
17: | private $authorizationId; |
18: | |
19: | /** |
20: | * @var string |
21: | */ |
22: | private $authorizationSecret; |
23: | |
24: | /** |
25: | * @var string|null |
26: | */ |
27: | private $oauth2Scopes; |
28: | |
29: | /** |
30: | * @var string |
31: | */ |
32: | private $apiEndpoint; |
33: | |
34: | /** |
35: | * @var int |
36: | */ |
37: | private $connectTimeout; |
38: | |
39: | /** |
40: | * @var int |
41: | */ |
42: | private $readTimeout; |
43: | |
44: | /** |
45: | * @var ProxyConfiguration|null |
46: | */ |
47: | private $proxyConfiguration; |
48: | |
49: | /** |
50: | * @var string |
51: | */ |
52: | private $integrator; |
53: | |
54: | /** |
55: | * @var ShoppingCartExtension|null |
56: | */ |
57: | private $shoppingCartExtension = null; |
58: | |
59: | /** |
60: | * @param string $authorizationId |
61: | * @param string $authorizationSecret |
62: | * @param string $apiEndpoint |
63: | * @param string $integrator |
64: | * @param ProxyConfiguration|null $proxyConfiguration |
65: | * @param int $connectTimeout |
66: | * @param int $readTimeout |
67: | */ |
68: | public function __construct( |
69: | $authorizationId, |
70: | $authorizationSecret, |
71: | $apiEndpoint, |
72: | $integrator, |
73: | ProxyConfiguration $proxyConfiguration = null, |
74: | $connectTimeout = -1, |
75: | $readTimeout = -1) |
76: | { |
77: | $this->validateApiEndpoint($apiEndpoint); |
78: | $this->validateIntegrator($integrator); |
79: | $this->authorizationId = $authorizationId; |
80: | $this->authorizationSecret = $authorizationSecret; |
81: | $this->apiEndpoint = $apiEndpoint; |
82: | $this->integrator = $integrator; |
83: | $this->proxyConfiguration = $proxyConfiguration; |
84: | $this->connectTimeout = $connectTimeout; |
85: | $this->readTimeout = $readTimeout; |
86: | } |
87: | |
88: | private function validateApiEndpoint($apiEndpoint) |
89: | { |
90: | $url = parse_url($apiEndpoint); |
91: | if ($url === false) { |
92: | throw new UnexpectedValueException('apiEndpoint is not a valid URL'); |
93: | } elseif (isset($url['path']) && $url['path'] !== '') { |
94: | throw new UnexpectedValueException('apiEndpoint should not contain a path'); |
95: | } elseif (isset($url['user']) || isset($url['query']) || isset($url['fragment'])) { |
96: | throw new UnexpectedValueException('apiEndpoint should not contain user info, query or fragment'); |
97: | } |
98: | } |
99: | |
100: | private function validateIntegrator($integrator) |
101: | { |
102: | if (is_null($integrator) || strlen(trim($integrator)) == 0) { |
103: | throw new UnexpectedValueException("integrator is required"); |
104: | } |
105: | } |
106: | |
107: | /** |
108: | * @return string An id used for authorization. This can be an OAuth2 client id, or something else. |
109: | */ |
110: | public function getAuthorizationId() |
111: | { |
112: | return $this->authorizationId; |
113: | } |
114: | |
115: | /** |
116: | * @param string $authorizationId |
117: | */ |
118: | public function setAuthorizationId($authorizationId) |
119: | { |
120: | $this->authorizationId = $authorizationId; |
121: | } |
122: | |
123: | /** |
124: | * @return string A secret used for authorization. This can be an OAuth2 client secret, or something else. |
125: | */ |
126: | public function getAuthorizationSecret() |
127: | { |
128: | return $this->authorizationSecret; |
129: | } |
130: | |
131: | /** |
132: | * @param string $authorizationSecret |
133: | */ |
134: | public function setAuthorizationSecret($authorizationSecret) |
135: | { |
136: | $this->authorizationSecret = $authorizationSecret; |
137: | } |
138: | |
139: | /** |
140: | * This method is an alias for getAuthorizationId. |
141: | * @return string |
142: | */ |
143: | public function getOAuth2ClientId() |
144: | { |
145: | return $this->getAuthorizationId(); |
146: | } |
147: | |
148: | /** |
149: | * This method is an alias for setAuthorizationId. |
150: | * @param string $oauth2ClientId |
151: | */ |
152: | public function setOAuth2ClientId($oauth2ClientId) |
153: | { |
154: | $this->setAuthorizationId($oauth2ClientId); |
155: | } |
156: | |
157: | /** |
158: | * This method is an alias for getAuthorizationSecret. |
159: | * @return string |
160: | */ |
161: | public function getOAuth2ClientSecret() |
162: | { |
163: | return $this->getAuthorizationSecret(); |
164: | } |
165: | |
166: | /** |
167: | * This method is an alias for setAuthorizationSecret. |
168: | * @param string $oauth2ClientSecret |
169: | */ |
170: | public function setOAuth2ClientSecret($oauth2ClientSecret) |
171: | { |
172: | $this->setAuthorizationSecret($oauth2ClientSecret); |
173: | } |
174: | |
175: | /** |
176: | * @return string|null A space-separated list of scopes to use. If empty or null the SDK will provide a set of defaults. |
177: | */ |
178: | public function getOAuth2Scopes(): ?string |
179: | { |
180: | return $this->oauth2Scopes; |
181: | } |
182: | |
183: | /** |
184: | * @param string|null $oauth2Scopes A space-separated list of scopes to use. If empty or null the SDK will provide a set of defaults. |
185: | */ |
186: | public function setOAuth2Scopes($oauth2Scopes) |
187: | { |
188: | $this->oauth2Scopes = $oauth2Scopes; |
189: | } |
190: | |
191: | /** |
192: | * @return string |
193: | */ |
194: | public function getApiEndpoint() |
195: | { |
196: | return $this->apiEndpoint; |
197: | } |
198: | |
199: | /** |
200: | * @param string $apiEndpoint |
201: | */ |
202: | public function setApiEndpoint($apiEndpoint) |
203: | { |
204: | $this->validateApiEndpoint($apiEndpoint); |
205: | $this->apiEndpoint = $apiEndpoint; |
206: | } |
207: | |
208: | /** |
209: | * @return ProxyConfiguration|null |
210: | */ |
211: | public function getProxyConfiguration() |
212: | { |
213: | return $this->proxyConfiguration; |
214: | } |
215: | |
216: | /** |
217: | * @param ProxyConfiguration|null $proxyConfiguration |
218: | */ |
219: | public function setProxyConfiguration(ProxyConfiguration $proxyConfiguration = null) |
220: | { |
221: | $this->proxyConfiguration = $proxyConfiguration; |
222: | } |
223: | |
224: | /** |
225: | * @return int |
226: | */ |
227: | public function getConnectTimeout() |
228: | { |
229: | return $this->connectTimeout; |
230: | } |
231: | |
232: | /** |
233: | * @param int $connectTimeout |
234: | */ |
235: | public function setConnectTimeout($connectTimeout) |
236: | { |
237: | $this->connectTimeout = $connectTimeout; |
238: | } |
239: | |
240: | /** |
241: | * @return int |
242: | */ |
243: | public function getReadTimeout() |
244: | { |
245: | return $this->readTimeout; |
246: | } |
247: | |
248: | /** |
249: | * @param int $readTimeout |
250: | */ |
251: | public function setReadTimeout($readTimeout) |
252: | { |
253: | $this->readTimeout = $readTimeout; |
254: | } |
255: | |
256: | /** |
257: | * @return string |
258: | */ |
259: | public function getIntegrator() |
260: | { |
261: | return $this->integrator; |
262: | } |
263: | |
264: | /** |
265: | * @param string $integrator |
266: | */ |
267: | public function setIntegrator($integrator) |
268: | { |
269: | $this->validateIntegrator($integrator); |
270: | $this->integrator = $integrator; |
271: | } |
272: | |
273: | /** |
274: | * @return ShoppingCartExtension|null |
275: | */ |
276: | public function getShoppingCartExtension() |
277: | { |
278: | return $this->shoppingCartExtension; |
279: | } |
280: | |
281: | /** |
282: | * @param ShoppingCartExtension|null $shoppingCartExtension |
283: | */ |
284: | public function setShoppingCartExtension(ShoppingCartExtension $shoppingCartExtension = null) |
285: | { |
286: | $this->shoppingCartExtension = $shoppingCartExtension; |
287: | } |
288: | } |
289: |