eZ\Bundle\EzPublishCoreBundle\EventListener\OriginalRequestListener::onKernelRequest PHP Method

onKernelRequest() public method

public onKernelRequest ( GetResponseEvent $event )
$event Symfony\Component\HttpKernel\Event\GetResponseEvent
    public function onKernelRequest(GetResponseEvent $event)
    {
        if ($event->getRequestType() !== HttpKernelInterface::MASTER_REQUEST) {
            return;
        }
        $request = $event->getRequest();
        if (!$request->headers->has('x-fos-original-url')) {
            return;
        }
        $originalRequest = Request::create($request->getSchemeAndHttpHost() . $request->headers->get('x-fos-original-url'), 'GET', array(), array(), array(), array('HTTP_ACCEPT' => $request->headers->get('x-fos-original-accept')));
        $originalRequest->headers->set('user-agent', $request->headers->get('user-agent'));
        $originalRequest->headers->set('accept-language', $request->headers->get('accept-language'));
        $request->attributes->set('_ez_original_request', $originalRequest);
    }

Usage Example

 public function testOnKernelRequestWithOriginalRequest()
 {
     $scheme = 'http';
     $host = 'phoenix-rises.fm';
     $port = 1234;
     $originalUri = '/foo/bar';
     $originalAccept = 'blabla';
     $expectedOriginalRequest = Request::create(sprintf('%s://%s:%d%s', $scheme, $host, $port, $originalUri));
     $expectedOriginalRequest->headers->set('accept', $originalAccept);
     $expectedOriginalRequest->server->set('HTTP_ACCEPT', $originalAccept);
     $request = Request::create(sprintf('%s://%s:%d', $scheme, $host, $port) . '/_fos_user_hash');
     $request->headers->set('x-fos-original-url', $originalUri);
     $request->headers->set('x-fos-original-accept', $originalAccept);
     $event = new GetResponseEvent($this->getMock('\\Symfony\\Component\\HttpKernel\\HttpKernelInterface'), $request, HttpKernelInterface::MASTER_REQUEST);
     $listener = new OriginalRequestListener();
     $listener->onKernelRequest($event);
     $this->assertEquals($expectedOriginalRequest, $request->attributes->get('_ez_original_request'));
 }