logger = $logger; } public static function getSubscribedEvents(): array { return [ KernelEvents::VIEW => ['onKernelView', EventPriorities::POST_WRITE], ]; } public function onKernelView(ViewEvent $event): void { if ('test' === $this->kernel->getEnvironment()) { return; } $request = $event->getRequest(); $method = $request->getMethod(); $clientOutput = $event->getControllerResult(); if (!in_array($method, ['POST', 'PUT', 'PATCH', 'DELETE'])) { return; } $method = $event->getRequest()->getMethod(); if (!$clientOutput instanceof ClientOutput || (Request::METHOD_POST !== $method && Request::METHOD_PUT !== $method && Request::METHOD_PATCH !== $method)) { return; } /** @var Client $client */ $client = $clientOutput->getEntity(); $data[] = [ '@id' => '/clients/' . $client->getUuid(), 'status' => $client->getStatus(), ]; $update = new Update( 'clients', json_encode($data) ); $this->hub->publish($update); $this->logger->info('Evento Mercure disparado', [ 'method' => $method, 'path' => $request->getPathInfo() ]); } }