Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 3 |
CRAP | |
0.00% |
0 / 12 |
FileEntityNormalizer | |
0.00% |
0 / 1 |
|
0.00% |
0 / 3 |
12 | |
0.00% |
0 / 12 |
__construct | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
normalize | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 4 |
|||
denormalize | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 5 |
<?php | |
/** | |
* @file | |
* Contains \Drupal\hal\Normalizer\FileEntityNormalizer. | |
*/ | |
namespace Drupal\hal\Normalizer; | |
use Drupal\Core\Entity\EntityManagerInterface; | |
use Drupal\Core\Extension\ModuleHandlerInterface; | |
use Drupal\rest\LinkManager\LinkManagerInterface; | |
use GuzzleHttp\ClientInterface; | |
/** | |
* Converts the Drupal entity object structure to a HAL array structure. | |
*/ | |
class FileEntityNormalizer extends ContentEntityNormalizer { | |
/** | |
* The interface or class that this Normalizer supports. | |
* | |
* @var string | |
*/ | |
protected $supportedInterfaceOrClass = 'Drupal\file\FileInterface'; | |
/** | |
* The HTTP client. | |
* | |
* @var \GuzzleHttp\ClientInterface | |
*/ | |
protected $httpClient; | |
/** | |
* Constructs a FileEntityNormalizer object. | |
* | |
* @param \Drupal\Core\Entity\EntityManagerInterface $entity_manager | |
* The entity manager. | |
* @param \GuzzleHttp\ClientInterface $http_client | |
* The HTTP Client. | |
* @param \Drupal\rest\LinkManager\LinkManagerInterface $link_manager | |
* The hypermedia link manager. | |
* @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler | |
* The module handler. | |
*/ | |
public function __construct(EntityManagerInterface $entity_manager, ClientInterface $http_client, LinkManagerInterface $link_manager, ModuleHandlerInterface $module_handler) { | |
parent::__construct($link_manager, $entity_manager, $module_handler); | |
$this->httpClient = $http_client; | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function normalize($entity, $format = NULL, array $context = array()) { | |
$data = parent::normalize($entity, $format, $context); | |
// Replace the file url with a full url for the file. | |
$data['uri'][0]['value'] = $this->getEntityUri($entity); | |
return $data; | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function denormalize($data, $class, $format = NULL, array $context = array()) { | |
$file_data = (string) $this->httpClient->get($data['uri'][0]['value'])->getBody(); | |
$path = 'temporary://' . drupal_basename($data['uri'][0]['value']); | |
$data['uri'] = file_unmanaged_save_data($file_data, $path); | |
return $this->entityManager->getStorage('file')->create($data); | |
} | |
} |