diff core/modules/jsonapi/src/Revisions/VersionNegotiatorInterface.php @ 18:af1871eacc83

Update to Drupal core 8.7.1
author Chris Cannam
date Thu, 09 May 2019 15:33:08 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/core/modules/jsonapi/src/Revisions/VersionNegotiatorInterface.php	Thu May 09 15:33:08 2019 +0100
@@ -0,0 +1,49 @@
+<?php
+
+namespace Drupal\jsonapi\Revisions;
+
+use Drupal\Core\Entity\EntityInterface;
+
+/**
+ * Defines the common interface for all version negotiators.
+ *
+ * @internal JSON:API maintains no PHP API since its API is the HTTP API. This
+ *   class may change at any time and this will break any dependencies on it.
+ *
+ * @see https://www.drupal.org/project/jsonapi/issues/3032787
+ * @see jsonapi.api.php
+ *
+ * @see \Drupal\jsonapi\Revisions\VersionNegotiator
+ */
+interface VersionNegotiatorInterface {
+
+  /**
+   * Gets the identified revision.
+   *
+   * The JSON:API module exposes revisions in terms of RFC5829. As such, the
+   * public API always refers to "versions" and "working copies" instead of
+   * "revisions". There are multiple ways to request a specific revision. For
+   * example, one might like to load a particular revision by its ID. On the
+   * other hand, it may be useful if an HTTP consumer is able to always request
+   * the "latest version" regardless of its ID. It is possible to imagine other
+   * scenarios as well, like fetching a revision based on a date or time.
+   *
+   * Each version negotiator provides one of these strategies and is able to map
+   * a version argument to an existing revision.
+   *
+   * @param \Drupal\Core\Entity\EntityInterface $entity
+   *   The entity for which a revision should be resolved.
+   * @param string $version_argument
+   *   A value used to derive a revision for the given entity.
+   *
+   * @return \Drupal\Core\Entity\EntityInterface
+   *   The identified entity revision.
+   *
+   * @throws \Drupal\jsonapi\Revisions\VersionNotFoundException
+   *   When the revision does not exist.
+   * @throws \Drupal\jsonapi\Revisions\InvalidVersionIdentifierException
+   *   When the revision ID is invalid.
+   */
+  public function getRevision(EntityInterface $entity, $version_argument);
+
+}