コード例 #1
0
 /**
  * @param EntityResource $resource
  * @param ResourceRelationship $relationship
  * @return string
  */
 private function buildToManyUrlTemplate(EntityResource $resource, ResourceRelationship $relationship)
 {
     $metadata = $resource->getMetadata();
     return sprintf(self::TO_MANY_URL_PATTERN, $this->apiUrlPath, $metadata->type, $metadata->type, $relationship->name);
 }
コード例 #2
0
 /**
  * @param DocumentResource $resource
  * @return array
  */
 protected function serializeResourceObject(EntityResource $resource)
 {
     $metadata = $resource->getMetadata();
     $fields = isset($this->document->sparseFields[$metadata->type]) ? $this->document->sparseFields[$metadata->type] : [];
     $serializer = new ResourceObjectSerializer($resource, $this->securityContext, $fields);
     return $serializer->serialize();
 }
コード例 #3
0
 /**
  * @param ResourceEntityInterface $entity
  */
 private function getKeyFromEntity(ResourceEntityInterface $entity)
 {
     $class = $this->metadataCache->getReflection($entity);
     return $class->getName() . '-' . EntityResource::getStringId($entity);
 }
コード例 #4
0
 /**
  * @param ResourceEntityInterface $entity
  * @return boolean
  */
 protected function hasResourceForEntity(ResourceEntityInterface $entity)
 {
     $class = $this->metadataCache->getReflection($entity);
     $id = EntityResource::getStringId($entity);
     return isset(self::$resourcesByClass[$class->getName()][$id]);
 }
コード例 #5
0
 /**
  * @param EntityResource $resource
  * @param array $resourceObject
  * @return self
  */
 public function addLinkedResource(EntityResource $resource, array $resourceObject)
 {
     $this->linkedById[$resource->getMetadata()->type][$resource->id] = ['resource' => $resource, 'serialization' => $resourceObject];
 }
コード例 #6
0
 /**
  * Factory method para construir a partir de un EntityResource.
  * @param EntityResource $resource
  */
 public static function buildFromResource(EntityResource $resource)
 {
     return new static([$resource], $resource->getMetadata());
 }
コード例 #7
0
 private function getResourceLinks(EntityResource $resource)
 {
     $links = [];
     foreach ($this->resource->getMetadata()->relationships->toOne as $relationship => $relation) {
         $entity = $this->resource->callGetter($relationship);
         EntityResource::validateToOneRelation($entity, $relationship);
         $links[$relationship] = $this->securityContext->isGranted(static::ACCESS_VIEW, $entity) ? EntityResource::getStringId($entity) : NULL;
     }
     foreach ($this->resource->getMetadata()->relationships->toMany as $relationship => $relation) {
         $collection = $this->resource->callGetter($relationship);
         $collection = EntityResource::normalizeToManyRelation($collection, $relationship);
         $links[$relationship] = [];
         foreach ($collection as $entity) {
             if (!$this->securityContext->isGranted(static::ACCESS_VIEW, $entity)) {
                 continue;
             }
             $links[$relationship][] = EntityResource::getStringId($entity);
         }
     }
     return $links;
 }