src/Listener/VersionListener.php line 25

Open in your IDE?
  1. <?php
  2. namespace App\Listener;
  3. use FOS\RestBundle\View\ViewHandlerInterface;
  4. use Symfony\Component\HttpFoundation\Request;
  5. use Symfony\Component\HttpKernel\Event\RequestEvent;
  6. use FOS\RestBundle\View\ConfigurableViewHandlerInterface;
  7. class VersionListener
  8. {
  9.     private $viewHandler;
  10.     public function __construct(ViewHandlerInterface $viewHandler)
  11.     {
  12.         $this->viewHandler $viewHandler;
  13.     }
  14.     private function resolveVersion(Request $request)
  15.     {
  16.         $version $request->headers->get('X-Accept-Version');
  17.         return is_scalar($version) ? $version strval($version);
  18.     }
  19.     public function onKernelRequest(RequestEvent $event)
  20.     {
  21.         $request $event->getRequest();
  22.         $version str_replace('v'''$this->resolveVersion($request));
  23.         if($request->attributes->get('_route') != 'api_users_post_agreement') {
  24.             $request->attributes->set('version'$version);
  25.         }
  26.         if ($this->viewHandler instanceof ConfigurableViewHandlerInterface) {
  27.             $this->viewHandler->setExclusionStrategyVersion($version);
  28.         }
  29.     }
  30. }