You are here

protected function ImageEntityNormalizer::buildVariantValues in Consumer Image Styles 8.2

Same name and namespace in other branches
  1. 8 src/Normalizer/ImageEntityNormalizer.php \Drupal\consumer_image_styles\Normalizer\ImageEntityNormalizer::buildVariantValues()

Parameters

\Drupal\Core\Entity\EntityInterface $entity:

array $context:

Return value

\Drupal\jsonapi\Normalizer\Value\ValueExtractorInterface

1 call to ImageEntityNormalizer::buildVariantValues()
ImageEntityNormalizer::normalize in src/Normalizer/ImageEntityNormalizer.php
Normalizes an object into a set of arrays/scalars.

File

src/Normalizer/ImageEntityNormalizer.php, line 131

Class

ImageEntityNormalizer

Namespace

Drupal\consumer_image_styles\Normalizer

Code

protected function buildVariantValues(EntityInterface $entity, array $context = []) {
  $request = empty($context['request']) ? NULL : $context['request'];
  $consumer = $this->consumerNegotiator
    ->negotiateFromRequest($request);

  // Bail-out if no consumer is found.
  if (!$consumer) {
    $access = $entity
      ->access('view', $context['account'], TRUE);
    return new NullFieldNormalizerValue($access, 'attributes');
  }

  // Prepare some utils.
  $uri = $entity
    ->get('uri')->value;
  $get_image_url = function ($image_style) use ($uri) {
    return file_create_url($image_style
      ->buildUrl($uri));
  };

  // Generate derivatives only for the found ones.
  $image_styles = $this->imageStylesProvider
    ->loadStyles($consumer);
  $keys = array_keys($image_styles);
  $values = array_map($get_image_url, array_values($image_styles));
  $value = array_combine($keys, $values);
  return new ImageVariantItemNormalizerValue($value, new CacheableMetadata());
}