cloudinary-8.x-1.x-dev/modules/cloudinary_media_library_widget/src/Controller/MediaController.php

modules/cloudinary_media_library_widget/src/Controller/MediaController.php
<?php

namespace Drupal\cloudinary_media_library_widget\Controller;

use Drupal\cloudinary_media_library_widget\Model\Asset;
use Drupal\Component\Serialization\Json;
use Drupal\Core\Controller\ControllerBase;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;

/**
 * Media controller.
 *
 * @deprecated in cloudinary:3.0.0 and is removed from cloudinary:4.0.0. Use
 *   a dedicated source plugin instead.
 *
 * @see https://www.drupal.org/project/cloudinary/issues/3314722
 */
class MediaController extends ControllerBase {

  /**
   * The serializer which serializes the views result.
   *
   * @var \Symfony\Component\Serializer\Serializer
   */
  protected $serializer;

  /**
   * The Cloudinary media manager.
   *
   * @var \Drupal\cloudinary_media_library_widget\CloudinaryMediaManagerInterface
   */
  protected $cloudinaryMediaManager;

  /**
   * {@inheritdoc}
   */
  public static function create(ContainerInterface $container) {
    $instance = parent::create($container);

    $instance->serializer = $container->get('serializer');
    $instance->cloudinaryMediaManager = $container->get('cloudinary_media_library_widget.manager.cloudinary_media');

    return $instance;
  }

  /**
   * Returns Ajax Response containing the media id and preview.
   *
   * @param \Symfony\Component\HttpFoundation\Request $request
   *   The current request object.
   * @param string $bundle
   *   Media bundle type.
   *
   * @return \Symfony\Component\HttpFoundation\JsonResponse
   *   The json response.
   *
   * @throws \Symfony\Component\Serializer\Exception\ExceptionInterface
   */
  public function createMedia(Request $request, string $bundle): JsonResponse {
    $assets_data = Json::decode($request->getContent());

    if (is_null($assets_data)) {
      throw new \InvalidArgumentException('Assert data have not been provided');
    }

    $ids = [];

    foreach ($assets_data as $asset_data) {
      /** @var \Drupal\cloudinary_media_library_widget\Model\Asset $asset */
      $asset = $this->serializer->denormalize($asset_data, Asset::class);

      $cloudinary_media_plugin = $this->cloudinaryMediaManager->createInstanceByType($asset->getResourceType());
      $media = $cloudinary_media_plugin->createMedia($asset, $bundle);
      $ids[] = $media->id();
    }

    return new JsonResponse([
      'ids' => $ids,
    ]);
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc