<?php
declare(strict_types=1);
namespace App\DataCollector;
use App\Event\Webhook\WebhookTriggeredEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\DataCollector\DataCollector;
class WebhookDataCollector extends DataCollector implements EventSubscriberInterface
{
protected $data = [
'calls' => []
];
public function collect(Request $request,
Response $response,
\Throwable $exception = null)
{
//nothing to do here, please look into onTriggered method
}
public function getName()
{
return 'webhook.collector';
}
public function reset()
{
// TODO: Implement reset() method.
}
public static function getSubscribedEvents()
{
return [
WebhookTriggeredEvent::class => 'onTriggered'
];
}
public function onTriggered(WebhookTriggeredEvent $event) : void
{
$this->data['calls'][] = [
'webhookName' => $event->getWebhookName(),
'actionName' => $event->getAction(),
'date' => date('c'),
'data' => $event->getData(),
'data_json' => \json_encode($event->getData(), JSON_PRETTY_PRINT),
];
}
/**
* Get all soap calls
* @return array
*/
public function getCalls()
{
return $this->data['calls'];
}
}