WIP
This commit is contained in:
37
src/Http/Middleware/LoggingResponseMiddleware.php
Normal file
37
src/Http/Middleware/LoggingResponseMiddleware.php
Normal file
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Apoloz\AlfaBank\Http\Middleware;
|
||||
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Saloon\Contracts\ResponseMiddleware;
|
||||
use Saloon\Http\Response;
|
||||
|
||||
class LoggingResponseMiddleware implements ResponseMiddleware
|
||||
{
|
||||
public function __construct(protected LoggerInterface $logger) {}
|
||||
|
||||
public function __invoke(Response $response): void
|
||||
{
|
||||
$this->logger->info("AlfaBank Response: {$response->status()}", [
|
||||
'body' => $this->maskBody($response->json()),
|
||||
]);
|
||||
}
|
||||
|
||||
protected function maskBody(mixed $body): mixed
|
||||
{
|
||||
if (!is_array($body)) return $body;
|
||||
|
||||
$sensitiveKeys = ['pan', 'cvc', 'digestSignatures', 'client_secret', 'refresh_token', 'access_token'];
|
||||
|
||||
foreach ($body as $key => $value) {
|
||||
if (in_array($key, $sensitiveKeys, true)) {
|
||||
$body[$key] = '*****';
|
||||
} elseif (is_array($value)) {
|
||||
$body[$key] = $this->maskBody($value);
|
||||
}
|
||||
}
|
||||
return $body;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user