<?php
// src/EventListener/ExceptionListener.php
namespace App\EventListener;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Event\ExceptionEvent;
use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
class ExceptionListener
{
protected $container;
public function __construct(ContainerInterface $container)
{
$this->container = $container;
}
public function onKernelException(ExceptionEvent $event)
{
// You get the exception object from the received event
$exception = $event->getThrowable();
$request = $event->getRequest();
try {
$baseurl = 'http://admin-heypa.online/'; //$this->container->getParameter('api_base_url');
$serverIp = $_SERVER['SERVER_ADDR']; //$this->container->getParameter('server_ip');
$userAgent = 'Not detected';
if (null !== $request->headers->get('User-Agent')) {
$userAgent = $request->headers->get('User-Agent');
}
if ($exception instanceof HttpExceptionInterface) {
$message = sprintf(
'ERRORS (%s): %s with \\nCODE: %s, \\nMethod: %s, \\nURL: %s , \\nIP-Address: %s, \\nUser-Agent: %s',
$serverIp,
$exception->getMessage(),
$exception->getCode(),
$request->getMethod(),
$baseurl . $request->getRequestUri(),
$request->getClientIp(),
$userAgent
);
print_r($message);exit;
$message = json_encode(array('errorMessage'=>'No page found.'));
//$this->container->get('App\Service\SlackNotification')->send400Errors($message);
} else {
$message = sprintf(
'ERRORS (%s): %s with \\nCODE: %s, \\nFilePath: %s, \\nLineNumber: %s, \\nMethod: %s, \\nURL: %s , \\nIP-Address: %s, \\nUser-Agent: %s',
$serverIp,
$exception->getMessage(),
$exception->getCode(),
$exception->getFile(),
$exception->getLine(),
$request->getMethod(),
$baseurl . $request->getRequestUri(),
$request->getClientIp(),
$userAgent
);
//$this->container->get('App\Service\SlackNotification')->sendErrors($message);
}
} catch (\Exception $e) {
$message = $e->getMessage();
//$this->container->get('App\Service\SlackNotification')->sendErrors($e->getMessage());
}
// Customize your response object to display the exception details
$response = new Response();
$response->setContent($message);
// HttpExceptionInterface is a special type of exception that
// holds status code and header details
if ($exception instanceof HttpExceptionInterface) {
$response->setStatusCode($exception->getStatusCode());
$response->headers->replace($exception->getHeaders());
} else {
$response->setStatusCode(Response::HTTP_INTERNAL_SERVER_ERROR);
}
// sends the modified response object to the event
$event->setResponse($response);
// $page = $this->container->get('twig')->render('Errors\page-not-found.html.twig');
// $event->setResponse(
// new Response(
// $page,
// Response::HTTP_SERVICE_UNAVAILABLE
// )
// );
$event->stopPropagation();
}
}