Files
alfa-bank-sdk/src/Http/Middleware/LoggingResponseMiddleware.php
2026-06-09 16:11:15 +03:00

53 lines
1.4 KiB
PHP

<?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
{
$pendingRequest = $response->getPendingRequest();
try {
$body = $this->maskBody($response->json());
} catch (\JsonException) {
$body = $response->body();
}
$this->logger->info(
"AlfaBank Response: {$response->status()} {$pendingRequest->getUrl()}",
[
'host' => $pendingRequest->getConnector()->resolveBaseUrl(),
'body' => $body,
]
);
}
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;
}
}