ServiceDefinitionEntityRequestContentBase.php in Services 8.4
File
src/ServiceDefinitionEntityRequestContentBase.php
View source
<?php
namespace Drupal\services;
use Drupal\Core\Entity\EntityTypeManagerInterface;
use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
use Drupal\Core\Routing\RouteMatchInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Serializer\SerializerInterface;
class ServiceDefinitionEntityRequestContentBase extends ServiceDefinitionBase implements ContainerFactoryPluginInterface {
protected $manager;
public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
return new static($configuration, $plugin_id, $plugin_definition, $container
->get('entity_type.manager'));
}
public function __construct(array $configuration, $plugin_id, $plugin_definition, EntityTypeManagerInterface $manager) {
parent::__construct($configuration, $plugin_id, $plugin_definition);
$this->manager = $manager;
}
public function processRequest(Request $request, RouteMatchInterface $route_match, SerializerInterface $serializer) {
$content = $request
->getContent();
if (!empty($content)) {
$entity_type_id = $this
->getDerivativeId();
$entity_type = $this->manager
->getDefinition($entity_type_id);
return $serializer
->deserialize($content, $entity_type
->getClass(), $request
->getContentType(), [
'entity_type' => $entity_type_id,
]);
}
return [];
}
}