vendor/eightpoints/guzzle-bundle/src/Middleware/SymfonyLogMiddleware.php line 39

Open in your IDE?
  1. <?php
  2. namespace EightPoints\Bundle\GuzzleBundle\Middleware;
  3. use GuzzleHttp\Exception\RequestException;
  4. use GuzzleHttp\MessageFormatter;
  5. use Psr\Log\LoggerInterface;
  6. class SymfonyLogMiddleware
  7. {
  8.     /** @var \GuzzleHttp\MessageFormatter */
  9.     protected $formatter;
  10.     /** @var \Psr\Log\LoggerInterface */
  11.     protected $logger;
  12.     /**
  13.      * @param \Psr\Log\LoggerInterface $logger
  14.      * @param \GuzzleHttp\MessageFormatter $formatter
  15.      */
  16.     public function __construct(LoggerInterface $loggerMessageFormatter $formatter)
  17.     {
  18.         $this->logger    $logger;
  19.         $this->formatter $formatter;
  20.     }
  21.     /**
  22.      * @param callable $handler
  23.      *
  24.      * @return \Closure
  25.      */
  26.     public function __invoke(callable $handler) : \Closure
  27.     {
  28.         $logger    $this->logger;
  29.         $formatter $this->formatter;
  30.         return function ($request, array $options) use ($handler$logger$formatter) {
  31.             return $handler($request$options)->then(
  32.                 function ($response) use ($logger$request$formatter) {
  33.                     $message $formatter->format($request$response);
  34.                     $logger->info($message);
  35.                     return $response;
  36.                 },
  37.                 function ($reason) use ($logger$request$formatter) {
  38.                     $response $reason instanceof RequestException $reason->getResponse() : null;
  39.                     $message  $formatter->format($request$response$reason);
  40.                     $logger->notice($message);
  41.                     return \GuzzleHttp\Promise\Create::rejectionFor($reason);
  42.                 }
  43.             );
  44.         };
  45.     }
  46. }