<?php declare(strict_types=1);
namespace Bpa\VideoIframeCookieHandler\Subscriber;
use Bpa\VideoIframeCookieHandler\Service\DomModifier;
use Shopware\Core\PlatformRequest;
use Shopware\Core\System\SalesChannel\SalesChannelContext;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\Event\ResponseEvent;
use Symfony\Component\HttpKernel\KernelEvents;
class ResponseSubscriber implements EventSubscriberInterface
{
/**
* @var DomModifier
*/
private DomModifier $domModifier;
/**
* @param DomModifier $domModifier
*/
public function __construct(DomModifier $domModifier)
{
$this->domModifier = $domModifier;
}
/**
* @return string[]
*/
public static function getSubscribedEvents(): array
{
return [
KernelEvents::RESPONSE => 'handleResponse',
];
}
/**
* @param ResponseEvent $event
* @return void
*/
public function handleResponse(ResponseEvent $event): void
{
$request = $event->getRequest();
$response = $event->getResponse();
$context = $request->attributes->get(PlatformRequest::ATTRIBUTE_SALES_CHANNEL_CONTEXT_OBJECT);
if (!$context instanceof SalesChannelContext) {
return;
}
$response->setContent(
$this->domModifier->process($response->getContent(), $context)
);
}
}