<?php
namespace Insurance\EventSubscriber;
use Insurance\Service\BcaRequestService;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Event\ResponseEvent;
use Symfony\Component\HttpKernel\KernelEvents;
class InsuranceSubscriber implements EventSubscriberInterface
{
/** @var BcaRequestService */
private $bcaRequestService;
public function __construct(BcaRequestService $bcaRequestService)
{
$this->bcaRequestService = $bcaRequestService;
}
public function onKernelResponse(ResponseEvent $event)
{
$request = $event->getRequest();
$response = $event->getResponse();
if (
strpos($request->getPathInfo(), '/subscribe/') !== false
&& $response->getStatusCode() === Response::HTTP_CREATED
) {
$jsonData = json_decode($request->getContent(), true);
$token = array_key_exists('token', $jsonData) ? $jsonData['token'] : null;
if ($token)
$this->bcaRequestService->disableToken($token);
}
}
public static function getSubscribedEvents()
{
return [
KernelEvents::RESPONSE => 'onKernelResponse',
];
}
}