entity_change_notifier-8.x-1.0/src/Plugin/MessageDestination/MessageGenerator.php
src/Plugin/MessageDestination/MessageGenerator.php
<?php namespace Drupal\entity_change_notifier\Plugin\MessageDestination; use Drupal\Core\DependencyInjection\DependencySerializationTrait; use Drupal\Core\Entity\EntityInterface; use Drupal\jsonapi\LinkManager\LinkManager; use Drupal\jsonapi\ResourceType\ResourceType; /** * Generate the message body to send to a destination. */ class MessageGenerator { use DependencySerializationTrait; /** * The link manager used to generate URIs. * * @var \Drupal\jsonapi\LinkManager\LinkManager */ protected $jsonApiLinkManager; /** * Construct a message generator object. * * @param \Drupal\jsonapi\LinkManager\LinkManager $jsonapi_link_manager * The link manager used to generate the URI to the json-api representation * of an entity. */ public function __construct(LinkManager $jsonapi_link_manager) { $this->jsonApiLinkManager = $jsonapi_link_manager; } /** * Create a message to send to a destination. * * @param string $action * The action associated with the entity, from one of the * MessageDestinationInterface constants. * @param \Drupal\Core\Entity\EntityInterface $entity * The entity the message is for. * * @return array * An array matching the * * @see \Drupal\entity_change_notifier\Plugin\MessageDestination\MessageDestinationInterface */ public function createMessage($action, EntityInterface $entity) { $resourceType = new ResourceType( $entity->getEntityTypeId(), $entity->bundle(), get_class($entity) ); $uri = $this->jsonApiLinkManager->getEntityLink($entity->uuid(), $resourceType, [], 'individual'); $message = [ 'action' => $action, 'uri' => $uri, 'entity_id' => $entity->id(), 'entity_uuid' => $entity->uuid(), 'entity_type' => $entity->getEntityTypeId(), 'bundle' => $entity->bundle(), ]; return $message; } }