/**
  * Tries to handle the options request.
  *
  * @param \Symfony\Component\HttpKernel\Event\GetResponseEvent $event
  *   The request event.
  */
 public function onRequest(GetResponseEvent $event)
 {
     if ($event->getRequest()->isMethod('OPTIONS')) {
         $routes = $this->routeProvider->getRouteCollectionForRequest($event->getRequest());
         // In case we don't have any routes, a 403 should be thrown by the normal
         // request handling.
         if (count($routes) > 0) {
             $methods = array_map(function (Route $route) {
                 return $route->getMethods();
             }, $routes->all());
             // Flatten and unique the available methods.
             $methods = array_unique(call_user_func_array('array_merge', $methods));
             $response = new Response('', 200, ['Allow' => implode(', ', $methods)]);
             $event->setResponse($response);
         }
     }
 }
Esempio n. 2
0
 /**
  * {@inheritdoc}
  */
 public function matchRequest(Request $request)
 {
     $collection = $this->routeProvider->getRouteCollectionForRequest($request);
     if (!count($collection)) {
         throw new ResourceNotFoundException();
     }
     // Route filters are expected to throw an exception themselves if they
     // end up filtering the list down to 0.
     foreach ($this->getRouteFilters() as $filter) {
         $collection = $filter->filter($collection, $request);
     }
     $attributes = $this->finalMatcher->finalMatch($collection, $request);
     return $attributes;
 }