/** * @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; }
/** * 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; }