<?php
declare(strict_types=1);
namespace App\Subscriber;
use App\Action\Query\Software\GetSoftwareVersionQuery;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\Event\RequestEvent;
use Symfony\Component\HttpKernel\KernelEvents;
use Symfony\Component\Messenger\MessageBusInterface;
use Symfony\Component\Messenger\Stamp\HandledStamp;
class SwaggerSubscriber implements EventSubscriberInterface
{
const ALLOWED_CONTROLLER_NAMES = [
'nelmio_api_doc.controller.swagger_ui',
'nelmio_api_doc.controller.swagger',
];
/**
* @var MessageBusInterface
*/
private $messageBus;
public function __construct(MessageBusInterface $messageBus)
{
$this->messageBus = $messageBus;
}
public function onKernelRequest(RequestEvent $event)
{
$request = $event->getRequest();
//TODO throw Exception not expected value of xmlns param
if (
isset($request->attributes->all()['_controller'])
&& in_array($request->attributes->all()['_controller'], self::ALLOWED_CONTROLLER_NAMES, true)
) {
$_ENV['CONNECTED_SOFT_VERSION'] = $this->messageBus->dispatch(new GetSoftwareVersionQuery())
->last(HandledStamp::class)->getResult();
}
}
public static function getSubscribedEvents()
{
return [
KernelEvents::REQUEST => [['onKernelRequest', 19]],
];
}
}