/**
  * Add rel=schema Link header for most routes
  *
  * This does not add a link to routes used by the schema bundle
  * itself.
  *
  * @param FilterResponseEvent $event response event
  *
  * @return void
  */
 public function onKernelResponse(FilterResponseEvent $event)
 {
     $request = $event->getRequest();
     $response = $event->getResponse();
     $type = $response->headers->get('Content-Type');
     if ($type !== null && substr(strtolower($type), 0, 16) !== 'application/json') {
         return;
     }
     // build content-type string
     $contentType = 'application/json; charset=UTF-8';
     if ($request->get('_route') != 'graviton.core.static.main.all') {
         try {
             $schemaRoute = SchemaUtils::getSchemaRouteName($request->get('_route'));
             $contentType .= sprintf('; profile=%s', $this->router->generate($schemaRoute, array(), true));
         } catch (\Exception $e) {
             return true;
         }
     }
     // replace content-type if a schema was requested
     if ($request->attributes->get('schemaRequest')) {
         $contentType = 'application/schema+json';
     }
     $response->headers->set('Content-Type', $contentType);
     $event->setResponse($response);
 }
 /**
  * add a rel=self Link header to the response
  *
  * @param FilterResponseEvent $event response listener event
  *
  * @return void
  */
 public function onKernelResponse(FilterResponseEvent $event)
 {
     $request = $event->getRequest();
     if ($request->attributes->get('schemaRequest', false)) {
         $response = $event->getResponse();
         $linkHeader = LinkHeader::fromResponse($response);
         $routeName = SchemaUtils::getSchemaRouteName($request->get('_route'));
         $url = $this->router->generate($routeName, array(), true);
         // append rel=canonical link to link headers
         $linkHeader->add(new LinkHeaderItem($url, array('rel' => 'canonical')));
         // overwrite link headers with new headers
         $response->headers->set('Link', (string) $linkHeader);
         $event->setResponse($response);
     }
 }