diff --git a/composer.json b/composer.json index 5f24e38..7c62d7b 100644 --- a/composer.json +++ b/composer.json @@ -1,6 +1,6 @@ { "name": "phauthentic/problem-details-symfony-bundle", - "type": "library", + "type": "symfony-bundle", "description": "Symfony bundle for the Problem Details for HTTP APIs RFC", "require": { "php": "^8.2", diff --git a/config/services.yaml b/config/services.yaml index 0ea1eba..54240d3 100644 --- a/config/services.yaml +++ b/config/services.yaml @@ -12,16 +12,21 @@ services: arguments: $validationErrorsBuilder: '@Phauthentic\Symfony\ProblemDetails\Validation\ValidationErrorsBuilder' $problemDetailsResponseFactory: '@Phauthentic\Symfony\ProblemDetails\FromExceptionEventFactoryInterface' + tags: + - { name: 'exception.converter' } Phauthentic\Symfony\ProblemDetails\ExceptionConversion\HttpExceptionConverter: arguments: $problemDetailsFactory: '@Phauthentic\Symfony\ProblemDetails\ProblemDetailsFactoryInterface' + tags: + - { name: 'exception.converter' } + + Phauthentic\Symfony\ProblemDetails\ExceptionConversion\GenericExceptionConverter: + tags: + - { name: 'exception.converter' } - Phauthentic\Symfony\ProblemDetails\ExceptionConversion\ThrowableToProblemDetailsKernelListener: + Phauthentic\Symfony\ProblemDetails\ThrowableToProblemDetailsKernelListener: arguments: - $exceptionConverters: - - '@Phauthentic\Symfony\ProblemDetails\ExceptionConversion\ValidationFailedExceptionConverter' - - '@Phauthentic\Symfony\ProblemDetails\ExceptionConversion\HttpExceptionConverter' - - '@Phauthentic\Symfony\ProblemDetails\ExceptionConversion\ThrowableToProblemDetailsKernelListener' + $exceptionConverters: !tagged_iterator exception.converter tags: - - { name: 'kernel.event_listener', event: 'kernel.exception', priority: 0 } + - { name: 'kernel.event_listener', event: 'kernel.exception', priority: 0 } \ No newline at end of file diff --git a/src/ExceptionConversion/GenericThrowableConverter.php b/src/ExceptionConversion/GenericExceptionConverter.php similarity index 96% rename from src/ExceptionConversion/GenericThrowableConverter.php rename to src/ExceptionConversion/GenericExceptionConverter.php index 4a4952e..6c4bb8d 100644 --- a/src/ExceptionConversion/GenericThrowableConverter.php +++ b/src/ExceptionConversion/GenericExceptionConverter.php @@ -24,7 +24,7 @@ * * @link https://www.rfc-editor.org/rfc/rfc9457.html */ -class GenericThrowableConverter implements ExceptionConverterInterface +class GenericExceptionConverter implements ExceptionConverterInterface { /** * @param ProblemDetailsFactoryInterface $problemDetailsFactory diff --git a/src/ThrowableToProblemDetailsKernelListener.php b/src/ThrowableToProblemDetailsKernelListener.php index 64b8bb9..278a9ae 100644 --- a/src/ThrowableToProblemDetailsKernelListener.php +++ b/src/ThrowableToProblemDetailsKernelListener.php @@ -29,7 +29,7 @@ class ThrowableToProblemDetailsKernelListener * @param array<ExceptionConverterInterface> $exceptionConverters */ public function __construct( - protected array $exceptionConverters = [] + protected iterable $exceptionConverters = [] ) { if (empty($this->exceptionConverters)) { throw new InvalidArgumentException('At least one converter must be provided'); diff --git a/tests/Unit/ExceptionConversion/GenericThrowableConverterTest.php b/tests/Unit/ExceptionConversion/GenericThrowableConverterTest.php index 8234c6e..ea19946 100644 --- a/tests/Unit/ExceptionConversion/GenericThrowableConverterTest.php +++ b/tests/Unit/ExceptionConversion/GenericThrowableConverterTest.php @@ -5,7 +5,7 @@ namespace Phauthentic\Symfony\ProblemDetails\Tests\Unit\ExceptionConversion; use Exception; -use Phauthentic\Symfony\ProblemDetails\ExceptionConversion\GenericThrowableConverter; +use Phauthentic\Symfony\ProblemDetails\ExceptionConversion\GenericExceptionConverter; use Phauthentic\Symfony\ProblemDetails\ExceptionConversion\HttpExceptionConverter; use Phauthentic\Symfony\ProblemDetails\ProblemDetailsFactory; use Phauthentic\Symfony\ProblemDetails\ProblemDetailsResponse; @@ -24,7 +24,7 @@ public function setUp(): void { parent::setUp(); - $this->converter = new GenericThrowableConverter( + $this->converter = new GenericExceptionConverter( problemDetailsFactory: new ProblemDetailsFactory() ); } diff --git a/tests/Unit/ThrowableToProblemDetailsKernelListenerTest.php b/tests/Unit/ThrowableToProblemDetailsKernelListenerTest.php index 2b978c0..8794361 100644 --- a/tests/Unit/ThrowableToProblemDetailsKernelListenerTest.php +++ b/tests/Unit/ThrowableToProblemDetailsKernelListenerTest.php @@ -6,7 +6,7 @@ use Exception; use InvalidArgumentException; -use Phauthentic\Symfony\ProblemDetails\ExceptionConversion\GenericThrowableConverter; +use Phauthentic\Symfony\ProblemDetails\ExceptionConversion\GenericExceptionConverter; use Phauthentic\Symfony\ProblemDetails\ProblemDetailsFactory; use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\Attributes\Test; @@ -45,7 +45,7 @@ public function testOnKernelException(string $environment, bool $shouldHaveTrace $listener = new ThrowableToProblemDetailsKernelListener( [ - new GenericThrowableConverter(new ProblemDetailsFactory(), $environment), + new GenericExceptionConverter(new ProblemDetailsFactory(), $environment), ] );