headless_cms-1.0.3/modules/headless_cms_notify/src/HeadlessNotifyTransportService.php

modules/headless_cms_notify/src/HeadlessNotifyTransportService.php
<?php

declare(strict_types=1);

namespace Drupal\headless_cms_notify;

use Drupal\Core\Config\ConfigFactoryInterface;
use Drupal\headless_cms_notify\Entity\HeadlessNotifyTransportInterface;
use Drupal\headless_cms_notify\NotifyMessage\HeadlessNotifyMessageInterface;

/**
 * Provides a service for HeadlessNotifyTransport plugins.
 */
class HeadlessNotifyTransportService implements HeadlessNotifyTransportServiceInterface {

  public function __construct(
    protected readonly HeadlessNotifyTransportPluginManager $pluginManager,
    protected readonly ConfigFactoryInterface $configFactory,
  ) {}

  /**
   * {@inheritdoc}
   */
  public function loadTransportPlugins(): array {
    return $this->pluginManager->getDefinitions();
  }

  /**
   * {@inheritdoc}
   */
  public function send(HeadlessNotifyMessageInterface $message, HeadlessNotifyTransportInterface $transport): void {
    $this->validate($transport);

    $transport->getTransportPlugin()->send($message);
  }

  /**
   * {@inheritdoc}
   */
  public function validate(HeadlessNotifyTransportInterface $transport): void {
    $errors = $transport->validate();
    if ($errors) {
      throw new \Exception(implode(';', $errors));
    }
  }

}

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

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