diff core/modules/rest/rest.api.php @ 0:4c8ae668cc8c

Initial import (non-working)
author Chris Cannam
date Wed, 29 Nov 2017 16:09:58 +0000
parents
children 129ea1e6d783
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/core/modules/rest/rest.api.php	Wed Nov 29 16:09:58 2017 +0000
@@ -0,0 +1,90 @@
+<?php
+
+/**
+ * @file
+ * Describes hooks provided by the RESTful Web Services module.
+ */
+
+/**
+ * @addtogroup hooks
+ * @{
+ */
+
+/**
+ * Alter the resource plugin definitions.
+ *
+ * @param array $definitions
+ *   The collection of resource definitions.
+ */
+function hook_rest_resource_alter(&$definitions) {
+  if (isset($definitions['entity:node'])) {
+    // We want to handle REST requests regarding nodes with our own plugin
+    // class.
+    $definitions['entity:node']['class'] = 'Drupal\mymodule\Plugin\rest\resource\NodeResource';
+    // Serialized nodes should be expanded to my specific node class.
+    $definitions['entity:node']['serialization_class'] = 'Drupal\mymodule\Entity\MyNode';
+  }
+  // We don't want Views to show up in the array of plugins at all.
+  unset($definitions['entity:view']);
+}
+
+/**
+ * Alter the REST type URI.
+ *
+ * @deprecated in Drupal 8.3.x and will be removed before Drupal 9.0.0. Use
+ *   hook_serialization_type_uri_alter() instead. This exists solely for BC.
+ *
+ * @see https://www.drupal.org/node/2830467
+ *
+ * Modules may wish to alter the type URI generated for a resource based on the
+ * context of the serializer/normalizer operation.
+ *
+ * @param string $uri
+ *   The URI to alter.
+ * @param array $context
+ *   The context from the serializer/normalizer operation.
+ *
+ * @see \Symfony\Component\Serializer\SerializerInterface::serialize()
+ * @see \Symfony\Component\Serializer\SerializerInterface::deserialize()
+ * @see \Symfony\Component\Serializer\NormalizerInterface::normalize()
+ * @see \Symfony\Component\Serializer\DenormalizerInterface::denormalize()
+ */
+function hook_rest_type_uri_alter(&$uri, $context = []) {
+  if ($context['mymodule'] == TRUE) {
+    $base = \Drupal::config('serialization.settings')->get('link_domain');
+    $uri = str_replace($base, 'http://mymodule.domain', $uri);
+  }
+}
+
+
+/**
+ * Alter the REST relation URI.
+ *
+ * @deprecated in Drupal 8.3.x and will be removed before Drupal 9.0.0. Use
+ *   hook_serialization_relation_uri_alter() instead. This exists solely for BC.
+ *
+ * @see https://www.drupal.org/node/2830467
+ *
+ * Modules may wish to alter the relation URI generated for a resource based on
+ * the context of the serializer/normalizer operation.
+ *
+ * @param string $uri
+ *   The URI to alter.
+ * @param array $context
+ *   The context from the serializer/normalizer operation.
+ *
+ * @see \Symfony\Component\Serializer\SerializerInterface::serialize()
+ * @see \Symfony\Component\Serializer\SerializerInterface::deserialize()
+ * @see \Symfony\Component\Serializer\NormalizerInterface::normalize()
+ * @see \Symfony\Component\Serializer\DenormalizerInterface::denormalize()
+ */
+function hook_rest_relation_uri_alter(&$uri, $context = []) {
+  if ($context['mymodule'] == TRUE) {
+    $base = \Drupal::config('serialization.settings')->get('link_domain');
+    $uri = str_replace($base, 'http://mymodule.domain', $uri);
+  }
+}
+
+/**
+ * @} End of "addtogroup hooks".
+ */