Example #1
0
 /**
  * Handle POST requests
  *
  * @param EventInterface $event The current event
  */
 public function post(EventInterface $event)
 {
     $request = $event->getRequest();
     $event->getManager()->trigger('db.metadata.update', ['metadata' => json_decode($request->getContent(), true)]);
     $model = new Model\Metadata();
     $model->setData($event->getDatabase()->getMetadata($request->getUser(), $request->getImageIdentifier()));
     $event->getResponse()->setModel($model);
 }
Example #2
0
 /**
  * Get data from the cache
  *
  * @param EventInterface $event The event instance
  */
 public function loadFromCache(EventInterface $event)
 {
     $request = $event->getRequest();
     $response = $event->getResponse();
     $cacheKey = $this->getCacheKey($request->getPublicKey(), $request->getImageIdentifier());
     $result = $this->cache->get($cacheKey);
     if (is_array($result) && isset($result['lastModified']) && $result['lastModified'] instanceof DateTime && isset($result['metadata'])) {
         $model = new Model\Metadata();
         $model->setData($result['metadata']);
         $response->setModel($model)->setLastModified($result['lastModified']);
         $response->headers->set('X-Imbo-MetadataCache', 'Hit');
         // Stop propagation of listeners for this event
         $event->stopPropagation();
         return;
     } else {
         if ($result) {
             // Invalid result stored in the cache. Delete
             $this->cache->delete($cacheKey);
         }
     }
     $response->headers->set('X-Imbo-MetadataCache', 'Miss');
 }
Example #3
0
 /**
  * Load metadata
  *
  * @param EventInterface $event An event instance
  */
 public function loadMetadata(EventInterface $event)
 {
     $request = $event->getRequest();
     $response = $event->getResponse();
     $publicKey = $request->getPublicKey();
     $imageIdentifier = $request->getImageIdentifier();
     $database = $event->getDatabase();
     $model = new Model\Metadata();
     $model->setData($database->getMetadata($publicKey, $imageIdentifier));
     $response->setModel($model)->setLastModified($database->getLastModified($publicKey, $imageIdentifier));
 }