refactor: dto, requests, connector
This commit is contained in:
36
src/Http/Middleware/VerifyJwsResponseMiddleware.php
Normal file
36
src/Http/Middleware/VerifyJwsResponseMiddleware.php
Normal file
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Apoloz\AlfaBank\Http\Middleware;
|
||||
|
||||
use Apoloz\AlfaBank\Utils\JwsSigner;
|
||||
use Saloon\Http\Response;
|
||||
|
||||
class VerifyJwsResponseMiddleware
|
||||
{
|
||||
public function __construct(
|
||||
protected ?string $publicKey = null
|
||||
) {}
|
||||
|
||||
public function __invoke(Response $response): Response
|
||||
{
|
||||
$contentType = $response->header('Content-Type');
|
||||
|
||||
if (str_contains((string)$contentType, 'application/jose')) {
|
||||
if (!$this->publicKey) {
|
||||
return $response;
|
||||
}
|
||||
|
||||
$jws = $response->body();
|
||||
$decoded = JwsSigner::verify($jws, $this->publicKey);
|
||||
|
||||
if ($decoded) {
|
||||
// We create a new response with the decoded JSON body
|
||||
return $response->fake(json_encode($decoded), $response->status(), $response->headers()->all());
|
||||
}
|
||||
}
|
||||
|
||||
return $response;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user