Ejemplo n.º 1
0
 /**
  * @covers ::store
  * @covers ::delete
  * @covers ::getImagePath
  * @covers ::createDirectoryRecursively
  */
 public function testStoreAndDelete()
 {
     $id = 'someId';
     $ext = 'ext';
     $name = 'filename.' . $ext;
     $path = sprintf('d/I/%s.%s', $id, $ext);
     $resource = 'someResource';
     $image = $this->getMockBuilder(ImageEntity::class)->setMethods(['getResource'])->getMock();
     $image->setId($id);
     $image->setName($name);
     $image->method('getResource')->willReturn($resource);
     $this->manager->store($image);
     $root = vfsStreamWrapper::getRoot();
     $this->assertTrue($root->hasChild($path));
     $this->assertEquals($resource, $root->getChild($path)->getContent());
     $this->manager->delete($image);
     $this->assertFalse($root->hasChild($path));
 }
Ejemplo n.º 2
-1
 /**
  * @param MvcEvent $event
  */
 public function onDispatchError(MvcEvent $event)
 {
     if (Application::ERROR_ROUTER_NO_MATCH != $event->getError()) {
         // ignore other than 'no route' errors
         return;
     }
     // get URI stripped of a base URL
     $request = $event->getRequest();
     $uri = str_replace($request->getBaseUrl(), '', $request->getRequestUri());
     // try get image ID from URI
     $id = $this->manager->matchUri($uri);
     if (!$id) {
         // abort if URI does not match
         return;
     }
     // try get image from repository
     $image = $this->repository->find($id);
     if (!$image) {
         // abort if image does not exist
         return;
     }
     // store image
     $this->manager->store($image);
     // return image in response as a stream
     $headers = new Headers();
     $headers->addHeaders(['Content-Type' => $image->getType(), 'Content-Length' => $image->getLength()]);
     $response = new Stream();
     $response->setStatusCode(Response::STATUS_CODE_200);
     $response->setStream($image->getResource());
     $response->setStreamName($image->getName());
     $response->setHeaders($headers);
     $event->setResponse($response);
 }