diff --git a/src/EventListener/ErrorListener.php b/src/EventListener/ErrorListener.php index 5d220fa5..dc9cd338 100644 --- a/src/EventListener/ErrorListener.php +++ b/src/EventListener/ErrorListener.php @@ -22,7 +22,7 @@ public function __construct(HubInterface $hub) $this->hub = $hub; // not used, needed to trigger instantiation } - public function onException(ExceptionEvent $event): void + public function onException(ErrorListenerExceptionEvent $event): void { \Sentry\captureException($event->getThrowable()); } @@ -30,7 +30,7 @@ public function onException(ExceptionEvent $event): void /** * BC layer for Symfony < 4.3 */ - public function onKernelException(GetResponseForExceptionEvent $event): void + public function onKernelException(ErrorListenerExceptionEvent $event): void { \Sentry\captureException($event->getException()); } @@ -48,3 +48,9 @@ public function onConsoleException(ConsoleExceptionEvent $event): void \Sentry\captureException($event->getException()); } } + +if (\class_exists(ExceptionEvent::class)) { + \class_alias(ExceptionEvent::class, ErrorListenerExceptionEvent::class); +} else { + \class_alias(GetResponseForExceptionEvent::class, ErrorListenerExceptionEvent::class); +} diff --git a/src/EventListener/RequestListener.php b/src/EventListener/RequestListener.php index f3dc5670..ffdca6c3 100644 --- a/src/EventListener/RequestListener.php +++ b/src/EventListener/RequestListener.php @@ -5,8 +5,10 @@ use Sentry\SentryBundle\SentryBundle; use Sentry\State\HubInterface; use Sentry\State\Scope; +use Symfony\Component\HttpKernel\Event\ControllerEvent; use Symfony\Component\HttpKernel\Event\FilterControllerEvent; use Symfony\Component\HttpKernel\Event\GetResponseEvent; +use Symfony\Component\HttpKernel\Event\ResponseEvent; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; use Symfony\Component\Security\Core\User\UserInterface; @@ -38,9 +40,9 @@ public function __construct( /** * Set the username from the security context by listening on core.request * - * @param GetResponseEvent $event + * @param RequestListenerResponseEvent $event */ - public function onKernelRequest(GetResponseEvent $event): void + public function onKernelRequest(RequestListenerResponseEvent $event): void { if (! $event->isMasterRequest()) { return; @@ -75,7 +77,7 @@ public function onKernelRequest(GetResponseEvent $event): void }); } - public function onKernelController(FilterControllerEvent $event): void + public function onKernelController(RequestListenerControllerEvent $event): void { if (! $event->isMasterRequest()) { return; @@ -119,3 +121,15 @@ private function getUserData($user): array return []; } } + +if (\class_exists(ResponseEvent::class)) { + \class_alias(ResponseEvent::class, RequestListenerResponseEvent::class); +} else { + \class_alias(GetResponseEvent::class, RequestListenerResponseEvent::class); +} + +if (\class_exists(ControllerEvent::class)) { + \class_alias(ControllerEvent::class, RequestListenerControllerEvent::class); +} else { + \class_alias(FilterControllerEvent::class, RequestListenerControllerEvent::class); +} diff --git a/src/EventListener/SubRequestListener.php b/src/EventListener/SubRequestListener.php index 5ffa0704..f82d2b5b 100644 --- a/src/EventListener/SubRequestListener.php +++ b/src/EventListener/SubRequestListener.php @@ -5,15 +5,16 @@ use Sentry\SentryBundle\SentryBundle; use Symfony\Component\HttpKernel\Event\FinishRequestEvent; use Symfony\Component\HttpKernel\Event\GetResponseEvent; +use Symfony\Component\HttpKernel\Event\ResponseEvent; final class SubRequestListener { /** * Pushes a new {@see Scope} for each SubRequest * - * @param GetResponseEvent $event + * @param SubRequestListenerResponseEvent $event */ - public function onKernelRequest(GetResponseEvent $event): void + public function onKernelRequest(SubRequestListenerResponseEvent $event): void { if ($event->isMasterRequest()) { return; @@ -36,3 +37,9 @@ public function onKernelFinishRequest(FinishRequestEvent $event): void SentryBundle::getCurrentHub()->popScope(); } } + +if (\class_exists(ResponseEvent::class)) { + \class_alias(ResponseEvent::class, SubRequestListenerResponseEvent::class); +} else { + \class_alias(GetResponseEvent::class, SubRequestListenerResponseEvent::class); +} diff --git a/test/EventListener/RequestListenerTest.php b/test/EventListener/RequestListenerTest.php index 56077979..360bc55e 100644 --- a/test/EventListener/RequestListenerTest.php +++ b/test/EventListener/RequestListenerTest.php @@ -11,8 +11,10 @@ use Sentry\State\HubInterface; use Sentry\State\Scope; use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpKernel\Event\ControllerEvent; use Symfony\Component\HttpKernel\Event\FilterControllerEvent; use Symfony\Component\HttpKernel\Event\GetResponseEvent; +use Symfony\Component\HttpKernel\Event\ResponseEvent; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; use Symfony\Component\Security\Core\User\UserInterface; @@ -56,7 +58,7 @@ protected function setUp() public function testOnKernelRequestUserDataIsSetToScope($user): void { $tokenStorage = $this->prophesize(TokenStorageInterface::class); - $event = $this->prophesize(GetResponseEvent::class); + $event = $this->prophesize(\class_exists(ResponseEvent::class) ? ResponseEvent::class : GetResponseEvent::class); $request = $this->prophesize(Request::class); $token = $this->prophesize(TokenInterface::class); @@ -101,7 +103,7 @@ public function userDataProvider(): \Generator public function testOnKernelRequestUserDataIsNotSetIfSendPiiIsDisabled(): void { $tokenStorage = $this->prophesize(TokenStorageInterface::class); - $event = $this->prophesize(GetResponseEvent::class); + $event = $this->prophesize(\class_exists(ResponseEvent::class) ? ResponseEvent::class : GetResponseEvent::class); $event->isMasterRequest() ->willReturn(true); @@ -124,7 +126,7 @@ public function testOnKernelRequestUserDataIsNotSetIfSendPiiIsDisabled(): void public function testOnKernelRequestUserDataIsNotSetIfNoClientIsPresent(): void { $tokenStorage = $this->prophesize(TokenStorageInterface::class); - $event = $this->prophesize(GetResponseEvent::class); + $event = $this->prophesize(\class_exists(ResponseEvent::class) ? ResponseEvent::class : GetResponseEvent::class); $event->isMasterRequest() ->willReturn(true); @@ -146,7 +148,7 @@ public function testOnKernelRequestUserDataIsNotSetIfNoClientIsPresent(): void public function testOnKernelRequestUsernameIsNotSetIfTokenStorageIsAbsent(): void { - $event = $this->prophesize(GetResponseEvent::class); + $event = $this->prophesize(\class_exists(ResponseEvent::class) ? ResponseEvent::class : GetResponseEvent::class); $request = $this->prophesize(Request::class); $event->isMasterRequest() @@ -173,7 +175,7 @@ public function testOnKernelRequestUsernameIsNotSetIfTokenStorageIsAbsent(): voi public function testOnKernelRequestUsernameIsNotSetIfTokenIsAbsent(): void { $tokenStorage = $this->prophesize(TokenStorageInterface::class); - $event = $this->prophesize(GetResponseEvent::class); + $event = $this->prophesize(\class_exists(ResponseEvent::class) ? ResponseEvent::class : GetResponseEvent::class); $request = $this->prophesize(Request::class); $event->isMasterRequest() @@ -207,7 +209,7 @@ public function testOnKernelRequestUsernameIsNotSetIfTokenIsNotAuthenticated(): { $tokenStorage = $this->prophesize(TokenStorageInterface::class); $token = $this->prophesize(TokenInterface::class); - $event = $this->prophesize(GetResponseEvent::class); + $event = $this->prophesize(\class_exists(ResponseEvent::class) ? ResponseEvent::class : GetResponseEvent::class); $request = $this->prophesize(Request::class); $event->isMasterRequest() @@ -240,7 +242,7 @@ public function testOnKernelRequestUsernameIsNotSetIfTokenIsNotAuthenticated(): public function testOnKernelRequestUsernameIsNotSetIfUserIsNotRemembered(): void { $tokenStorage = $this->prophesize(TokenStorageInterface::class); - $event = $this->prophesize(GetResponseEvent::class); + $event = $this->prophesize(\class_exists(ResponseEvent::class) ? ResponseEvent::class : GetResponseEvent::class); $request = $this->prophesize(Request::class); $event->isMasterRequest() @@ -271,7 +273,7 @@ public function testOnKernelControllerAddsRouteTag(): void { $request = new Request(); $request->attributes->set('_route', 'sf-route'); - $event = $this->prophesize(FilterControllerEvent::class); + $event = $this->prophesize(\class_exists(ControllerEvent::class) ? ControllerEvent::class : FilterControllerEvent::class); $event->isMasterRequest() ->willReturn(true); @@ -294,7 +296,7 @@ public function testOnKernelControllerRouteTagIsNotSetIfRequestDoesNotHaveARoute ->shouldNotBeCalled(); $request = new Request(); - $event = $this->prophesize(FilterControllerEvent::class); + $event = $this->prophesize(\class_exists(ControllerEvent::class) ? ControllerEvent::class : FilterControllerEvent::class); $event->isMasterRequest() ->willReturn(true); @@ -315,7 +317,7 @@ public function testOnKernelRequestUserDataAndTagsAreNotSetInSubRequest(): void ->shouldNotBeCalled(); $tokenStorage = $this->prophesize(TokenStorageInterface::class); - $event = $this->prophesize(GetResponseEvent::class); + $event = $this->prophesize(\class_exists(ResponseEvent::class) ? ResponseEvent::class : GetResponseEvent::class); $event->isMasterRequest() ->willReturn(false); diff --git a/test/EventListener/SubRequestListenerTest.php b/test/EventListener/SubRequestListenerTest.php index 7e4aa299..b79b0af9 100644 --- a/test/EventListener/SubRequestListenerTest.php +++ b/test/EventListener/SubRequestListenerTest.php @@ -8,6 +8,7 @@ use Sentry\State\Scope; use Symfony\Component\HttpKernel\Event\FinishRequestEvent; use Symfony\Component\HttpKernel\Event\GetResponseEvent; +use Symfony\Component\HttpKernel\Event\ResponseEvent; class SubRequestListenerTest extends BaseTestCase { @@ -26,7 +27,7 @@ public function testOnKernelRequestWithMasterRequest(): void { $listener = new SubRequestListener(); - $subRequestEvent = $this->prophesize(GetResponseEvent::class); + $subRequestEvent = $this->prophesize(\class_exists(ResponseEvent::class) ? ResponseEvent::class : GetResponseEvent::class); $subRequestEvent->isMasterRequest() ->willReturn(true); @@ -40,7 +41,7 @@ public function testOnKernelRequestWithSubRequest(): void { $listener = new SubRequestListener(); - $subRequestEvent = $this->prophesize(GetResponseEvent::class); + $subRequestEvent = $this->prophesize(\class_exists(ResponseEvent::class) ? ResponseEvent::class : GetResponseEvent::class); $subRequestEvent->isMasterRequest() ->willReturn(false);