Mercurial > hg > isophonics-drupal-site
diff core/lib/Drupal/Core/EventSubscriber/ExceptionJsonSubscriber.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children | 1fec387a4317 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/lib/Drupal/Core/EventSubscriber/ExceptionJsonSubscriber.php Wed Nov 29 16:09:58 2017 +0000 @@ -0,0 +1,42 @@ +<?php + +namespace Drupal\Core\EventSubscriber; + +use Symfony\Component\HttpFoundation\JsonResponse; +use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent; + +/** + * Default handling for JSON errors. + */ +class ExceptionJsonSubscriber extends HttpExceptionSubscriberBase { + + /** + * {@inheritdoc} + */ + protected function getHandledFormats() { + return ['json', 'drupal_modal', 'drupal_dialog', 'drupal_ajax']; + } + + /** + * {@inheritdoc} + */ + protected static function getPriority() { + // This will fire after the most common HTML handler, since HTML requests + // are still more common than JSON requests. + return -75; + } + + /** + * Handles all 4xx errors for JSON. + * + * @param \Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent $event + * The event to process. + */ + public function on4xx(GetResponseForExceptionEvent $event) { + /** @var \Symfony\Component\HttpKernel\Exception\HttpExceptionInterface $exception */ + $exception = $event->getException(); + $response = new JsonResponse(['message' => $event->getException()->getMessage()], $exception->getStatusCode(), $exception->getHeaders()); + $event->setResponse($response); + } + +}