<?php
namespace App\Listener;
use FOS\RestBundle\View\ViewHandlerInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\Event\RequestEvent;
use FOS\RestBundle\View\ConfigurableViewHandlerInterface;
class VersionListener
{
private $viewHandler;
public function __construct(ViewHandlerInterface $viewHandler)
{
$this->viewHandler = $viewHandler;
}
private function resolveVersion(Request $request)
{
$version = $request->headers->get('X-Accept-Version');
return is_scalar($version) ? $version : strval($version);
}
public function onKernelRequest(RequestEvent $event)
{
$request = $event->getRequest();
$version = str_replace('v', '', $this->resolveVersion($request));
if($request->attributes->get('_route') != 'api_users_post_agreement') {
$request->attributes->set('version', $version);
}
if ($this->viewHandler instanceof ConfigurableViewHandlerInterface) {
$this->viewHandler->setExclusionStrategyVersion($version);
}
}
}