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));
 }
Example #4
0
File: XML.php Project: ASP96/imbo
    /**
     * {@inheritdoc}
     */
    public function formatMetadata(Model\Metadata $model)
    {
        $metadata = '';
        foreach ($model->getData() as $key => $value) {
            $metadata .= '<tag key="' . $key . '">' . $value . '</tag>';
        }
        return <<<METADATA
<?xml version="1.0" encoding="UTF-8"?>
<imbo>
  <metadata>{$metadata}</metadata>
</imbo>
METADATA;
    }
Example #5
0
File: XML.php Project: imbo/imbo
    /**
     * {@inheritdoc}
     */
    public function formatMetadataModel(Model\Metadata $model)
    {
        $metadata = $this->formatMetadata($model->getData());
        return <<<METADATA
<?xml version="1.0" encoding="UTF-8"?>
<imbo>
  <metadata>{$metadata}</metadata>
</imbo>
METADATA;
    }
Example #6
0
File: JSON.php Project: ASP96/imbo
 /**
  * {@inheritdoc}
  */
 public function formatMetadata(Model\Metadata $model)
 {
     return $this->encode($model->getData() ?: new stdClass());
 }