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