%PDF- %PDF-
| Direktori : /home/graphicd/public_html/vebto/vendor/kreait/firebase-php/src/Firebase/Http/ |
| Current File : /home/graphicd/public_html/vebto/vendor/kreait/firebase-php/src/Firebase/Http/Middleware.php |
<?php
declare(strict_types=1);
namespace Kreait\Firebase\Http;
use GuzzleHttp;
use Psr\Http\Message\RequestInterface;
use Psr\Http\Message\ResponseInterface;
use Psr\Log\LoggerInterface;
final class Middleware
{
/**
* Ensures that the ".json" suffix is added to URIs and that the content type is set correctly.
*/
public static function ensureJsonSuffix(): callable
{
return static function (callable $handler) {
return static function (RequestInterface $request, ?array $options = null) use ($handler) {
$uri = $request->getUri();
$path = $uri->getPath();
if (\mb_substr($path, -5) !== '.json') {
$uri = $uri->withPath($path.'.json');
$request = $request->withUri($uri);
}
return $handler($request, $options ?: []);
};
};
}
/**
* Parses multi-requests and multi-responses.
*/
public static function responseWithSubResponses(): callable
{
return static function (callable $handler) {
return static function (RequestInterface $request, ?array $options = null) use ($handler) {
return $handler($request, $options ?: [])
->then(static function (ResponseInterface $response) {
$isMultiPart = \mb_stristr($response->getHeaderLine('Content-Type'), 'multipart') !== false;
$hasMultipleStartLines = ((int) \preg_match_all('@http/[\S]+\s@i', (string) $response->getBody())) >= 1;
if ($isMultiPart && $hasMultipleStartLines) {
return new ResponseWithSubResponses($response);
}
return $response;
});
};
};
}
public static function log(LoggerInterface $logger, GuzzleHttp\MessageFormatter $formatter, string $logLevel, string $errorLogLevel): callable
{
return static function (callable $handler) use ($logger, $formatter, $logLevel, $errorLogLevel) {
return static function ($request, array $options) use ($handler, $logger, $formatter, $logLevel, $errorLogLevel) {
return $handler($request, $options)->then(
static function (ResponseInterface $response) use ($logger, $request, $formatter, $logLevel, $errorLogLevel) {
$message = $formatter->format($request, $response);
$messageLogLevel = $response->getStatusCode() >= 400 ? $errorLogLevel : $logLevel;
$logger->log($messageLogLevel, $message);
return $response;
},
static function (\Exception $reason) use ($logger, $request, $formatter, $errorLogLevel) {
$response = $reason instanceof GuzzleHttp\Exception\RequestException ? $reason->getResponse() : null;
$message = $formatter->format($request, $response, $reason);
$logger->log($errorLogLevel, $message, ['request' => $request, 'response' => $response]);
return GuzzleHttp\Promise\Create::rejectionFor($reason);
}
);
};
};
}
}