/**
  * @param string  $build
  * @param Request $request
  * @return Response
  */
 public function manifestAction($build, Request $request)
 {
     $this->closeSession($request);
     try {
         $manifest = $this->application->getManifest($build);
     } catch (FileNotFoundException $e) {
         throw new NotFoundHttpException('Not Found', $e);
     }
     $response = new StreamedResponse(function () {
         echo '';
     });
     $response->setETag($manifest->computeETag())->setLastModified(\DateTime::createFromFormat('U', $manifest->getMTime()))->setPublic();
     if ($response->isNotModified($request)) {
         return $response;
     }
     $response->setCallback(function () use($manifest) {
         echo $manifest->getContent();
     });
     $response->headers->set('Content-Type', 'application/json');
     return $response;
 }
Пример #2
0
 /**
  * The controller for serving static files.
  *
  * @param Request $request
  * the current request
  * @param Application $app
  * the Silex application
  *
  * @return Response
  * redirects to the instance details page or 404 on invalid input
  */
 public function staticFile(Request $request, Application $app)
 {
     $fileParam = str_replace('..', '', $request->get('file'));
     $file = __DIR__ . '/../static/' . $fileParam;
     if (!$fileParam || !file_exists($file)) {
         return $this->getNotFoundPage($app, $app['translator']->trans('crudlex.resourceNotFound'));
     }
     $mimeTypes = new MimeTypes();
     $mimeType = $mimeTypes->getMimeType($file);
     $size = filesize($file);
     $streamedFileResponse = new StreamedFileResponse();
     $response = new StreamedResponse($streamedFileResponse->getStreamedFileFunction($file), 200, ['Content-Type' => $mimeType, 'Content-Disposition' => 'attachment; filename="' . basename($file) . '"', 'Content-length' => $size]);
     $response->setETag(filemtime($file))->setPublic()->isNotModified($request);
     $response->send();
     return $response;
 }