/** * @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); }
/** * @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(); }
/** * @param ResourceEntityInterface $entity */ private function getKeyFromEntity(ResourceEntityInterface $entity) { $class = $this->metadataCache->getReflection($entity); return $class->getName() . '-' . EntityResource::getStringId($entity); }
/** * @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]); }
/** * @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]; }
/** * Factory method para construir a partir de un EntityResource. * @param EntityResource $resource */ public static function buildFromResource(EntityResource $resource) { return new static([$resource], $resource->getMetadata()); }
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; }