/** * Validate the json input to prevent errors in the following components * * @param RestEvent $event Event * * @return void|null */ public function onKernelRequest(RestEvent $event) { $request = $event->getRequest(); if ($request->headers->has('Accept')) { $format = $request->getFormat($request->headers->get('Accept')); if (!empty($format)) { $request->setRequestFormat($format); } } }
/** * Test RqlAllowedOperatorRequestListener::onKernelRequest() with exception * * @param Query $query Query * @return void * * @dataProvider dataOnKernelRequestWithException */ public function testOnKernelRequestWithException(Query $query) { $this->setExpectedException(RqlOperatorNotAllowedException::class); $request = new Request(); $request->attributes->set('rqlQuery', $query); $request->attributes->set('_route', 'model.get'); $event = new RestEvent(); $event->setRequest($request); $listener = new RqlAllowedOperatorRequestListener(); $listener->onKernelRequest($event); }
/** * Adds the configured formats and mimetypes to the request. * * @param RestEvent $event Event * * @return void|null */ public function onKernelRequest(RestEvent $event) { $request = $event->getRequest(); if ($request->headers->has('Accept')) { $format = $request->getFormat($request->headers->get('Accept')); if (empty($format)) { foreach ($this->container->getParameter('graviton.rest.special_mimetypes') as $format => $types) { $mimetypes = $request->getMimeType($format); if (!empty($mimetypes)) { $mimetypes = is_array($mimetypes) ? $mimetypes : array($mimetypes); $types = array_unique(array_merge_recursive($mimetypes, $types)); } $request->setFormat($format, $types); } } } }
/** * Process RQL query if it is allowed for current route * * @param RestEvent $event Event * @return void */ public function onKernelRequest(RestEvent $event) { $rqlQuery = $event->getRequest()->attributes->get('rqlQuery'); if ($rqlQuery === null) { return; } $route = $event->getRequest()->attributes->get('_route'); if (substr($route, -4) !== '.get') { return; } foreach (['getQuery', 'getSort', 'getLimit'] as $method) { /** @var AbstractNode $node */ $node = $rqlQuery->{$method}(); if ($node === null) { continue; } throw new RqlOperatorNotAllowedException($node->getNodeName()); } }