media_mpx-8.x-1.x-dev/src/Service/UpdateVideoItem/UpdateVideoItem.php

src/Service/UpdateVideoItem/UpdateVideoItem.php
<?php

declare(strict_types = 1);

namespace Drupal\media_mpx\Service\UpdateVideoItem;

use Drupal\Core\DependencyInjection\DependencySerializationTrait;
use Drupal\media_mpx\DataObjectFactoryCreator;
use Drupal\media_mpx\DataObjectImporter;
use Drupal\media_mpx\Repository\MpxMediaType;

/**
 * Updates a media entity with the associated data from mpx.
 *
 * @package Drupal\media_mpx\Service\ImportVideoItem
 */
class UpdateVideoItem {
  use DependencySerializationTrait;

  /**
   * The Data Object Importer.
   *
   * @var \Drupal\media_mpx\DataObjectImporter
   */
  private $importer;

  /**
   * The Data Object Factory Creator.
   *
   * @var \Drupal\media_mpx\DataObjectFactoryCreator
   */
  private $objectFactoryCreator;

  /**
   * The mpx Media Type Repository.
   *
   * @var \Drupal\media_mpx\Repository\MpxMediaType
   */
  private $mpxMediaTypeRepository;

  /**
   * UpdateVideoItem constructor.
   */
  public function __construct(MpxMediaType $mpxMediaTypeRepository, DataObjectImporter $importer, DataObjectFactoryCreator $creator) {
    $this->mpxMediaTypeRepository = $mpxMediaTypeRepository;
    $this->importer = $importer;
    $this->objectFactoryCreator = $creator;
  }

  /**
   * Performs the update (import) of a video item into Drupal.
   *
   * @param \Drupal\media_mpx\Service\UpdateVideoItem\UpdateVideoItemRequest $request
   *   The request object.
   *
   * @return \Drupal\media_mpx\Service\UpdateVideoItem\UpdateVideoItemResponse
   *   A response object holding data about the items that were updated.
   *
   * @throws \Drupal\Component\Plugin\Exception\InvalidPluginDefinitionException
   * @throws \Drupal\Component\Plugin\Exception\PluginNotFoundException
   * @throws \Drupal\media_mpx\Exception\MediaTypeDoesNotExistException
   * @throws \Drupal\media_mpx\Exception\MediaTypeNotAssociatedWithMpxException
   */
  public function execute(UpdateVideoItemRequest $request): UpdateVideoItemResponse {
    $mpx_id = $request->getMpxId();
    $media_type_id = $request->getMediaTypeId();

    $media_type = $this->mpxMediaTypeRepository->findByTypeId($media_type_id);

    $media_source = $this->importer->loadMediaSource($media_type);
    $factory = $this->objectFactoryCreator->fromMediaSource($media_source);
    $results = $factory->loadByNumericId($mpx_id, FALSE, ['headers' => ['Cache-Control' => 'no-cache']]);
    $mpx_media = $results->wait();
    $saved = $this->importer->importItem($mpx_media, $media_type);

    $response = new UpdateVideoItemResponse($mpx_media, $saved);
    return $response;
  }

}

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

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