コード例 #1
0
ファイル: Renderer.php プロジェクト: kankje/xi-filelib
 /**
  * Renders a file to a response
  *
  * @param mixed $file
  * @param mixed $version Version string or object
  * @param array $options
  * @return mixed
  */
 public function render($file, $version, array $options = array())
 {
     $version = Version::get($version);
     $response = new Response();
     if (!$file instanceof File) {
         $file = $this->fileRepository->find($file);
         if (!$file) {
             return $this->adaptResponse($response->setStatusCode(404), $version, null);
         }
     }
     // Renderer / authorization evil tag team
     try {
         $event = new FileEvent($file);
         $this->eventDispatcher->dispatch(Events::RENDERER_BEFORE_RENDER, $event);
     } catch (AccessDeniedException $e) {
         return $this->adaptResponse($response->setStatusCode(403), $version, $file);
     }
     try {
         $provider = $this->profiles->getVersionProvider($file, $version);
         $version = $provider->ensureValidVersion($version);
     } catch (InvalidVersionException $e) {
         return $this->adaptResponse($response->setStatusCode(404), $version, null);
     }
     if (!$this->versionIsObtainable($file, $version)) {
         return $this->adaptResponse($response->setStatusCode(404), $version, $file);
     }
     $options = $this->mergeOptions($options);
     if ($options['download'] == true) {
         $response->setHeader('Content-disposition', "attachment; filename={$file->getName()}");
     }
     $retrieved = new FileObject($this->retrieve($file, $version));
     $response->setHeader('Content-Type', $retrieved->getMimetype());
     $this->injectContentToResponse($retrieved, $response);
     return $this->adaptResponse($response, $version, $file);
 }
コード例 #2
0
 /**
  * @test
  */
 public function findShouldReturnFileInstanceIfFileIsFound()
 {
     $upload = ROOT_TESTS . '/data/self-lussing-manatee.jpg';
     $file = $this->filelib->getFileRepository()->upload($upload, null);
     $ret = $this->op->find($file->getId());
     $this->assertEquals($file, $ret);
 }