<?php
declare(strict_types=1);
namespace App\Subscriber;
use App\Event\Webhook\WebhookTriggeredEvent;
use Psr\Log\LoggerInterface;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class WebhookSubscriber implements EventSubscriberInterface
{
/**
* @var LoggerInterface
*/
private $logger;
/**
* @param LoggerInterface $webhookLogger
*/
public function __construct(LoggerInterface $webhookLogger)
{
$this->logger = $webhookLogger;
}
public static function getSubscribedEvents()
{
return [
WebhookTriggeredEvent::class => 'onTriggered'
];
}
public function onTriggered(WebhookTriggeredEvent $event) : void
{
$webhookName = $event->getWebhookName();
$actionName = $event->getAction();
$data = $event->getData();
if (isset($data['error']) && $data['error']) {
$this->logger->error(\sprintf('[webhook.triggerred] webhook \'%s\' triggered on action \'%s\' with data \'%s\'',
$webhookName,
$actionName,
\is_scalar($data) ? $data : \json_encode($data)
));
} else {
$this->logger->info(\sprintf('[webhook.triggerred] webhook \'%s\' triggered on action \'%s\' with data \'%s\'',
$webhookName,
$actionName,
\is_scalar($data) ? $data : \json_encode($data)
));
}
}
}