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));
}
}
}
