|
32 | 32 | use Vonage\Client\Credentials\Basic; |
33 | 33 | use Vonage\Client\Credentials\Container; |
34 | 34 | use Vonage\Client\Credentials\CredentialsInterface; |
| 35 | +use Vonage\Client\Credentials\Handler\BasicHandler; |
| 36 | +use Vonage\Client\Credentials\Handler\KeypairHandler; |
| 37 | +use Vonage\Client\Credentials\Handler\SignatureBodyFormHandler; |
| 38 | +use Vonage\Client\Credentials\Handler\SignatureBodyHandler; |
| 39 | +use Vonage\Client\Credentials\Handler\SignatureQueryHandler; |
| 40 | +use Vonage\Client\Credentials\Handler\TokenBodyFormHandler; |
| 41 | +use Vonage\Client\Credentials\Handler\TokenBodyHandler; |
| 42 | +use Vonage\Client\Credentials\Handler\TokenQueryHandler; |
35 | 43 | use Vonage\Client\Credentials\Keypair; |
36 | 44 | use Vonage\Client\Credentials\OAuth; |
37 | 45 | use Vonage\Client\Credentials\SignatureSecret; |
@@ -297,97 +305,44 @@ public static function signRequest(RequestInterface $request, SignatureSecret $c |
297 | 305 | { |
298 | 306 | switch ($request->getHeaderLine('content-type')) { |
299 | 307 | case 'application/json': |
300 | | - $body = $request->getBody(); |
301 | | - $body->rewind(); |
302 | | - $content = $body->getContents(); |
303 | | - $params = json_decode($content, true); |
304 | | - $params['api_key'] = $credentials['api_key']; |
305 | | - $signature = new Signature($params, $credentials['signature_secret'], $credentials['signature_method']); |
306 | | - $body->rewind(); |
307 | | - $body->write(json_encode($signature->getSignedParams())); |
| 308 | + $handler = new SignatureBodyHandler(); |
308 | 309 | break; |
309 | 310 | case 'application/x-www-form-urlencoded': |
310 | | - $body = $request->getBody(); |
311 | | - $body->rewind(); |
312 | | - $content = $body->getContents(); |
313 | | - $params = []; |
314 | | - parse_str($content, $params); |
315 | | - $params['api_key'] = $credentials['api_key']; |
316 | | - $signature = new Signature($params, $credentials['signature_secret'], $credentials['signature_method']); |
317 | | - $params = $signature->getSignedParams(); |
318 | | - $body->rewind(); |
319 | | - $body->write(http_build_query($params, '', '&')); |
| 311 | + $handler = new SignatureBodyFormHandler(); |
320 | 312 | break; |
321 | 313 | default: |
322 | | - $query = []; |
323 | | - parse_str($request->getUri()->getQuery(), $query); |
324 | | - $query['api_key'] = $credentials['api_key']; |
325 | | - $signature = new Signature($query, $credentials['signature_secret'], $credentials['signature_method']); |
326 | | - $request = $request->withUri( |
327 | | - $request->getUri()->withQuery(http_build_query($signature->getSignedParams())) |
328 | | - ); |
| 314 | + $handler = new SignatureQueryHandler(); |
329 | 315 | break; |
330 | 316 | } |
331 | 317 |
|
332 | | - return $request; |
| 318 | + return $handler($request, $credentials); |
333 | 319 | } |
334 | 320 |
|
335 | 321 | public static function authRequest(RequestInterface $request, Basic $credentials): RequestInterface |
336 | 322 | { |
337 | 323 | switch ($request->getHeaderLine('content-type')) { |
338 | 324 | case 'application/json': |
339 | 325 | if (static::requiresBasicAuth($request)) { |
340 | | - $c = $credentials->asArray(); |
341 | | - $cx = base64_encode($c['api_key'] . ':' . $c['api_secret']); |
342 | | - |
343 | | - $request = $request->withHeader('Authorization', 'Basic ' . $cx); |
| 326 | + $handler = new BasicHandler(); |
344 | 327 | } elseif (static::requiresAuthInUrlNotBody($request)) { |
345 | | - $query = []; |
346 | | - parse_str($request->getUri()->getQuery(), $query); |
347 | | - $query = array_merge($query, $credentials->asArray()); |
348 | | - |
349 | | - $request = $request->withUri($request->getUri()->withQuery(http_build_query($query))); |
| 328 | + $handler = new TokenQueryHandler(); |
350 | 329 | } else { |
351 | | - $body = $request->getBody(); |
352 | | - $body->rewind(); |
353 | | - $content = $body->getContents(); |
354 | | - $params = json_decode($content, true); |
355 | | - |
356 | | - if (!$params) { |
357 | | - $params = []; |
358 | | - } |
359 | | - |
360 | | - $params = array_merge($params, $credentials->asArray()); |
361 | | - $body->rewind(); |
362 | | - $body->write(json_encode($params)); |
| 330 | + $handler = new TokenBodyHandler(); |
363 | 331 | } |
364 | 332 | break; |
365 | 333 | case 'application/x-www-form-urlencoded': |
366 | | - $body = $request->getBody(); |
367 | | - $body->rewind(); |
368 | | - $content = $body->getContents(); |
369 | | - $params = []; |
370 | | - parse_str($content, $params); |
371 | | - $params = array_merge($params, $credentials->asArray()); |
372 | | - $body->rewind(); |
373 | | - $body->write(http_build_query($params, '', '&')); |
| 334 | + $handler = new TokenBodyFormHandler(); |
374 | 335 | break; |
375 | 336 | default: |
376 | 337 | if (static::requiresBasicAuth($request)) { |
377 | | - $c = $credentials->asArray(); |
378 | | - $cx = base64_encode($c['api_key'] . ':' . $c['api_secret']); |
379 | | - |
380 | | - $request = $request->withHeader('Authorization', 'Basic ' . $cx); |
| 338 | + $handler = new BasicHandler(); |
381 | 339 | } else { |
382 | | - $query = []; |
383 | | - parse_str($request->getUri()->getQuery(), $query); |
384 | | - $query = array_merge($query, $credentials->asArray()); |
385 | | - $request = $request->withUri($request->getUri()->withQuery(http_build_query($query))); |
| 340 | + $handler = new TokenQueryHandler(); |
386 | 341 | } |
387 | 342 | break; |
388 | 343 | } |
389 | 344 |
|
390 | | - return $request; |
| 345 | + return $handler($request, $credentials); |
391 | 346 | } |
392 | 347 |
|
393 | 348 | /** |
@@ -504,16 +459,14 @@ public function send(RequestInterface $request): ResponseInterface |
504 | 459 | { |
505 | 460 | if ($this->credentials instanceof Container) { |
506 | 461 | if ($this->needsKeypairAuthentication($request)) { |
507 | | - $token = $this->credentials->get(Keypair::class)->generateJwt(); |
508 | | - |
509 | | - $request = $request->withHeader('Authorization', 'Bearer ' . $token->toString()); |
| 462 | + $handler = new KeypairHandler(); |
| 463 | + $request = $handler($request, $this->getCredentials()); |
510 | 464 | } else { |
511 | 465 | $request = self::authRequest($request, $this->credentials->get(Basic::class)); |
512 | 466 | } |
513 | 467 | } elseif ($this->credentials instanceof Keypair) { |
514 | | - $token = $this->credentials->generateJwt(); |
515 | | - |
516 | | - $request = $request->withHeader('Authorization', 'Bearer ' . $token->toString()); |
| 468 | + $handler = new KeypairHandler(); |
| 469 | + $request = $handler($request, $this->getCredentials()); |
517 | 470 | } elseif ($this->credentials instanceof SignatureSecret) { |
518 | 471 | $request = self::signRequest($request, $this->credentials); |
519 | 472 | } elseif ($this->credentials instanceof Basic) { |
@@ -696,4 +649,9 @@ public function getLogger(): ?LoggerInterface |
696 | 649 |
|
697 | 650 | return $this->logger; |
698 | 651 | } |
| 652 | + |
| 653 | + public function getCredentials(): CredentialsInterface |
| 654 | + { |
| 655 | + return $this->credentials; |
| 656 | + } |
699 | 657 | } |
0 commit comments