Mercurial > hg > cmmr2012-drupal-site
diff core/modules/jsonapi/src/JsonApiResource/JsonApiDocumentTopLevel.php @ 5:12f9dff5fda9 tip
Update to Drupal core 8.7.1
author | Chris Cannam |
---|---|
date | Thu, 09 May 2019 15:34:47 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/modules/jsonapi/src/JsonApiResource/JsonApiDocumentTopLevel.php Thu May 09 15:34:47 2019 +0100 @@ -0,0 +1,133 @@ +<?php + +namespace Drupal\jsonapi\JsonApiResource; + +use Drupal\Core\Field\EntityReferenceFieldItemListInterface; + +/** + * Represents a JSON:API document's "top level". + * + * @internal JSON:API maintains no PHP API. The API is the HTTP API. This class + * may change at any time and could break any dependencies on it. + * + * @see https://www.drupal.org/project/jsonapi/issues/3032787 + * @see jsonapi.api.php + * + * @see http://jsonapi.org/format/#document-top-level + * + * @todo Add support for the missing optional 'jsonapi' member or document why not. + */ +class JsonApiDocumentTopLevel { + + /** + * The data to normalize. + * + * @var \Drupal\jsonapi\JsonApiResource\ResourceIdentifierInterface|\Drupal\jsonapi\JsonApiResource\Data|\Drupal\jsonapi\JsonApiResource\ErrorCollection|\Drupal\Core\Field\EntityReferenceFieldItemListInterface + */ + protected $data; + + /** + * The metadata to normalize. + * + * @var array + */ + protected $meta; + + /** + * The links. + * + * @var \Drupal\jsonapi\JsonApiResource\LinkCollection + */ + protected $links; + + /** + * The includes to normalize. + * + * @var \Drupal\jsonapi\JsonApiResource\IncludedData + */ + protected $includes; + + /** + * Resource objects that will be omitted from the response for access reasons. + * + * @var \Drupal\jsonapi\JsonApiResource\OmittedData + */ + protected $omissions; + + /** + * Instantiates a JsonApiDocumentTopLevel object. + * + * @param \Drupal\jsonapi\JsonApiResource\ResourceIdentifierInterface|\Drupal\jsonapi\JsonApiResource\Data|\Drupal\jsonapi\JsonApiResource\ErrorCollection|\Drupal\Core\Field\EntityReferenceFieldItemListInterface $data + * The data to normalize. It can be either a ResourceObject, or a stand-in + * for one, or a collection of the same. + * @param \Drupal\jsonapi\JsonApiResource\IncludedData $includes + * A JSON:API Data object containing resources to be included in the + * response document or NULL if there should not be includes. + * @param \Drupal\jsonapi\JsonApiResource\LinkCollection $links + * A collection of links to resources related to the top-level document. + * @param array $meta + * (optional) The metadata to normalize. + */ + public function __construct($data, IncludedData $includes, LinkCollection $links, array $meta = []) { + assert($data instanceof ResourceIdentifierInterface || $data instanceof Data || $data instanceof ErrorCollection || $data instanceof EntityReferenceFieldItemListInterface); + assert(!$data instanceof ErrorCollection || $includes instanceof NullIncludedData); + $this->data = $data instanceof ResourceObjectData ? $data->getAccessible() : $data; + $this->includes = $includes->getAccessible(); + $this->links = $links->withContext($this); + $this->meta = $meta; + $this->omissions = $data instanceof ResourceObjectData + ? OmittedData::merge($data->getOmissions(), $includes->getOmissions()) + : $includes->getOmissions(); + } + + /** + * Gets the data. + * + * @return \Drupal\jsonapi\JsonApiResource\ResourceObject|\Drupal\jsonapi\JsonApiResource\Data|\Drupal\jsonapi\JsonApiResource\LabelOnlyResourceObject|\Drupal\jsonapi\JsonApiResource\ErrorCollection + * The data. + */ + public function getData() { + return $this->data; + } + + /** + * Gets the links. + * + * @return \Drupal\jsonapi\JsonApiResource\LinkCollection + * The top-level links. + */ + public function getLinks() { + return $this->links; + } + + /** + * Gets the metadata. + * + * @return array + * The metadata. + */ + public function getMeta() { + return $this->meta; + } + + /** + * Gets a JSON:API Data object of resources to be included in the response. + * + * @return \Drupal\jsonapi\JsonApiResource\IncludedData + * The includes. + */ + public function getIncludes() { + return $this->includes; + } + + /** + * Gets an OmittedData instance containing resources to be omitted. + * + * @return \Drupal\jsonapi\JsonApiResource\OmittedData + * The omissions. + */ + public function getOmissions() { + return $this->omissions; + } + +}