From cc30bdbe5718d99101fbdda4fd2d5b0011934641 Mon Sep 17 00:00:00 2001 From: Markus Machatschek Date: Wed, 27 May 2026 14:24:24 +0200 Subject: [PATCH 1/6] feat: add BadRequestException as additional ClientException class --- .../Request/Statuses/BadRequestException.php | 12 ++++++++++++ src/Helpers/RequestExceptionHelper.php | 2 ++ 2 files changed, 14 insertions(+) create mode 100644 src/Exceptions/Request/Statuses/BadRequestException.php diff --git a/src/Exceptions/Request/Statuses/BadRequestException.php b/src/Exceptions/Request/Statuses/BadRequestException.php new file mode 100644 index 00000000..5048ade7 --- /dev/null +++ b/src/Exceptions/Request/Statuses/BadRequestException.php @@ -0,0 +1,12 @@ + BadRequestException::class, $status === 401 => UnauthorizedException::class, $status === 402 => PaymentRequiredException::class, $status === 403 => ForbiddenException::class, From ba6bbb61f8412cce342223dee29d4b5cd099d176 Mon Sep 17 00:00:00 2001 From: Markus Machatschek Date: Sat, 30 May 2026 19:27:26 +0200 Subject: [PATCH 2/6] tests: add testcase for BadRequest to dataset --- tests/Unit/RequestExceptionTest.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/Unit/RequestExceptionTest.php b/tests/Unit/RequestExceptionTest.php index db4d2b40..66ae9ba7 100644 --- a/tests/Unit/RequestExceptionTest.php +++ b/tests/Unit/RequestExceptionTest.php @@ -12,6 +12,7 @@ use Saloon\Exceptions\Request\Statuses\NotFoundException; use Saloon\Exceptions\Request\Statuses\ForbiddenException; use Saloon\Tests\Fixtures\Requests\AlwaysHasFailureRequest; +use Saloon\Exceptions\Request\Statuses\BadRequestException; use Saloon\Exceptions\Request\Statuses\UnauthorizedException; use Saloon\Exceptions\Request\Statuses\GatewayTimeoutException; use Saloon\Exceptions\Request\Statuses\RequestTimeOutException; @@ -35,6 +36,7 @@ expect($exception)->toBeInstanceOf($expectedException); expect($exception->getMessage())->toEqual($message); })->with([ + [400, BadRequestException::class], [401, UnauthorizedException::class], [402, PaymentRequiredException::class], [403, ForbiddenException::class], From 9c8e49cfd642ed64fb169dc7939b1456a35574c8 Mon Sep 17 00:00:00 2001 From: Sammyjo20 <29132017+Sammyjo20@users.noreply.github.com> Date: Fri, 18 Sep 2026 22:29:36 +0100 Subject: [PATCH 3/6] Run Workflows From d8c61517b6bbc56406ae4abc6fa37cc9b58c1444 Mon Sep 17 00:00:00 2001 From: Sammyjo20 <29132017+Sammyjo20@users.noreply.github.com> Date: Fri, 18 Sep 2026 22:30:39 +0100 Subject: [PATCH 4/6] Code style --- src/Helpers/RequestExceptionHelper.php | 2 +- tests/Unit/RequestExceptionTest.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Helpers/RequestExceptionHelper.php b/src/Helpers/RequestExceptionHelper.php index 3f937aaf..8177fe14 100644 --- a/src/Helpers/RequestExceptionHelper.php +++ b/src/Helpers/RequestExceptionHelper.php @@ -9,9 +9,9 @@ use Saloon\Exceptions\Request\ClientException; use Saloon\Exceptions\Request\ServerException; use Saloon\Exceptions\Request\RequestException; -use Saloon\Exceptions\Request\Statuses\BadRequestException; use Saloon\Exceptions\Request\Statuses\NotFoundException; use Saloon\Exceptions\Request\Statuses\ForbiddenException; +use Saloon\Exceptions\Request\Statuses\BadRequestException; use Saloon\Exceptions\Request\Statuses\UnauthorizedException; use Saloon\Exceptions\Request\Statuses\GatewayTimeoutException; use Saloon\Exceptions\Request\Statuses\RequestTimeOutException; diff --git a/tests/Unit/RequestExceptionTest.php b/tests/Unit/RequestExceptionTest.php index 66ae9ba7..2a0346cb 100644 --- a/tests/Unit/RequestExceptionTest.php +++ b/tests/Unit/RequestExceptionTest.php @@ -11,8 +11,8 @@ use Saloon\Tests\Fixtures\Connectors\TestConnector; use Saloon\Exceptions\Request\Statuses\NotFoundException; use Saloon\Exceptions\Request\Statuses\ForbiddenException; -use Saloon\Tests\Fixtures\Requests\AlwaysHasFailureRequest; use Saloon\Exceptions\Request\Statuses\BadRequestException; +use Saloon\Tests\Fixtures\Requests\AlwaysHasFailureRequest; use Saloon\Exceptions\Request\Statuses\UnauthorizedException; use Saloon\Exceptions\Request\Statuses\GatewayTimeoutException; use Saloon\Exceptions\Request\Statuses\RequestTimeOutException; From ef4f1276c177a42d690c96fde0b98d012b24308b Mon Sep 17 00:00:00 2001 From: Sammyjo20 <29132017+Sammyjo20@users.noreply.github.com> Date: Fri, 18 Sep 2026 22:34:57 +0100 Subject: [PATCH 5/6] Added 409 and 502 --- .../Request/Statuses/BadGatewayException.php | 12 ++++++++++++ .../Request/Statuses/ConflictException.php | 12 ++++++++++++ src/Helpers/RequestExceptionHelper.php | 4 ++++ tests/Unit/RequestExceptionTest.php | 4 ++++ 4 files changed, 32 insertions(+) create mode 100644 src/Exceptions/Request/Statuses/BadGatewayException.php create mode 100644 src/Exceptions/Request/Statuses/ConflictException.php diff --git a/src/Exceptions/Request/Statuses/BadGatewayException.php b/src/Exceptions/Request/Statuses/BadGatewayException.php new file mode 100644 index 00000000..a8d0f44a --- /dev/null +++ b/src/Exceptions/Request/Statuses/BadGatewayException.php @@ -0,0 +1,12 @@ + NotFoundException::class, $status === 405 => MethodNotAllowedException::class, $status === 408 => RequestTimeOutException::class, + $status === 409 => ConflictException::class, $status === 422 => UnprocessableEntityException::class, $status === 429 => TooManyRequestsException::class, $status === 500 => InternalServerErrorException::class, + $status === 502 => BadGatewayException::class, $status === 503 => ServiceUnavailableException::class, $status === 504 => GatewayTimeoutException::class, diff --git a/tests/Unit/RequestExceptionTest.php b/tests/Unit/RequestExceptionTest.php index 2a0346cb..ea848946 100644 --- a/tests/Unit/RequestExceptionTest.php +++ b/tests/Unit/RequestExceptionTest.php @@ -10,7 +10,9 @@ use Saloon\Tests\Fixtures\Requests\UserRequest; use Saloon\Tests\Fixtures\Connectors\TestConnector; use Saloon\Exceptions\Request\Statuses\NotFoundException; +use Saloon\Exceptions\Request\Statuses\ConflictException; use Saloon\Exceptions\Request\Statuses\ForbiddenException; +use Saloon\Exceptions\Request\Statuses\BadGatewayException; use Saloon\Exceptions\Request\Statuses\BadRequestException; use Saloon\Tests\Fixtures\Requests\AlwaysHasFailureRequest; use Saloon\Exceptions\Request\Statuses\UnauthorizedException; @@ -43,9 +45,11 @@ [404, NotFoundException::class], [405, MethodNotAllowedException::class], [408, RequestTimeOutException::class], + [409, ConflictException::class], [422, UnprocessableEntityException::class], [429, TooManyRequestsException::class], [500, InternalServerErrorException::class], + [502, BadGatewayException::class], [503, ServiceUnavailableException::class], [504, GatewayTimeoutException::class], [418, ClientException::class], From 91ca7cc30542cc4cb6944dfe9a0898f17f3be142 Mon Sep 17 00:00:00 2001 From: Sammyjo20 <29132017+Sammyjo20@users.noreply.github.com> Date: Fri, 18 Sep 2026 22:35:35 +0100 Subject: [PATCH 6/6] Fixed code style --- src/Helpers/RequestExceptionHelper.php | 2 +- tests/Unit/RequestExceptionTest.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Helpers/RequestExceptionHelper.php b/src/Helpers/RequestExceptionHelper.php index 90dd2d24..c4f5bda9 100644 --- a/src/Helpers/RequestExceptionHelper.php +++ b/src/Helpers/RequestExceptionHelper.php @@ -9,8 +9,8 @@ use Saloon\Exceptions\Request\ClientException; use Saloon\Exceptions\Request\ServerException; use Saloon\Exceptions\Request\RequestException; -use Saloon\Exceptions\Request\Statuses\NotFoundException; use Saloon\Exceptions\Request\Statuses\ConflictException; +use Saloon\Exceptions\Request\Statuses\NotFoundException; use Saloon\Exceptions\Request\Statuses\ForbiddenException; use Saloon\Exceptions\Request\Statuses\BadGatewayException; use Saloon\Exceptions\Request\Statuses\BadRequestException; diff --git a/tests/Unit/RequestExceptionTest.php b/tests/Unit/RequestExceptionTest.php index ea848946..98bbd042 100644 --- a/tests/Unit/RequestExceptionTest.php +++ b/tests/Unit/RequestExceptionTest.php @@ -9,8 +9,8 @@ use Saloon\Exceptions\Request\RequestException; use Saloon\Tests\Fixtures\Requests\UserRequest; use Saloon\Tests\Fixtures\Connectors\TestConnector; -use Saloon\Exceptions\Request\Statuses\NotFoundException; use Saloon\Exceptions\Request\Statuses\ConflictException; +use Saloon\Exceptions\Request\Statuses\NotFoundException; use Saloon\Exceptions\Request\Statuses\ForbiddenException; use Saloon\Exceptions\Request\Statuses\BadGatewayException; use Saloon\Exceptions\Request\Statuses\BadRequestException;