vendor/sentry/sentry-symfony/src/Integration/RequestFetcher.php line 51

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace Sentry\SentryBundle\Integration;
  4. use Http\Discovery\Psr17FactoryDiscovery;
  5. use Psr\Http\Message\ServerRequestInterface;
  6. use Sentry\Integration\RequestFetcherInterface;
  7. use Symfony\Bridge\PsrHttpMessage\Factory\PsrHttpFactory;
  8. use Symfony\Bridge\PsrHttpMessage\HttpMessageFactoryInterface;
  9. use Symfony\Component\HttpFoundation\RequestStack;
  10. /**
  11.  * This class fetches the server request from the request stack and converts it
  12.  * into a PSR-7 request that is suitable to be used by the {@see \Sentry\Integration\RequestIntegration}
  13.  * integration.
  14.  */
  15. final class RequestFetcher implements RequestFetcherInterface
  16. {
  17.     /**
  18.      * @var RequestStack The request stack
  19.      */
  20.     private $requestStack;
  21.     /**
  22.      * @var HttpMessageFactoryInterface The factory to convert Symfony requests to PSR-7 requests
  23.      */
  24.     private $httpMessageFactory;
  25.     /**
  26.      * Class constructor.
  27.      *
  28.      * @param RequestStack                     $requestStack       The request stack
  29.      * @param HttpMessageFactoryInterface|null $httpMessageFactory The factory to convert Symfony requests to PSR-7 requests
  30.      */
  31.     public function __construct(RequestStack $requestStack, ?HttpMessageFactoryInterface $httpMessageFactory null)
  32.     {
  33.         $this->requestStack $requestStack;
  34.         $this->httpMessageFactory $httpMessageFactory ?? new PsrHttpFactory(
  35.             Psr17FactoryDiscovery::findServerRequestFactory(),
  36.             Psr17FactoryDiscovery::findStreamFactory(),
  37.             Psr17FactoryDiscovery::findUploadedFileFactory(),
  38.             Psr17FactoryDiscovery::findResponseFactory()
  39.         );
  40.     }
  41.     /**
  42.      * {@inheritdoc}
  43.      */
  44.     public function fetchRequest(): ?ServerRequestInterface
  45.     {
  46.         $request $this->requestStack->getCurrentRequest();
  47.         if (null === $request) {
  48.             return null;
  49.         }
  50.         try {
  51.             return $this->httpMessageFactory->createRequest($request);
  52.         } catch (\Throwable $exception) {
  53.             return null;
  54.         }
  55.     }
  56. }