Skip to content

Commit 2867cbc

Browse files
author
Mohamed Khaled
committed
Update exception classes to use centralized error extraction and Request DTOs
1 parent 0f18425 commit 2867cbc

File tree

3 files changed

+15
-48
lines changed

3 files changed

+15
-48
lines changed

src/Providers/Http/Exception/RedirectException.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
namespace WordPress\AiClient\Providers\Http\Exception;
66

7+
use WordPress\AiClient\Common\Exception\RuntimeException;
78
use WordPress\AiClient\Providers\Http\DTO\Response;
89

910
/**
@@ -15,7 +16,7 @@
1516
*
1617
* @since n.e.x.t
1718
*/
18-
class RedirectException extends RequestException
19+
class RedirectException extends RuntimeException
1920
{
2021
/**
2122
* Creates a RedirectException from a redirect response.

src/Providers/Http/Exception/ResponseException.php

Lines changed: 6 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44

55
namespace WordPress\AiClient\Providers\Http\Exception;
66

7-
use Psr\Http\Client\ClientExceptionInterface;
87
use WordPress\AiClient\Common\Exception\RuntimeException;
98
use WordPress\AiClient\Providers\Http\DTO\Response;
9+
use WordPress\AiClient\Providers\Http\Utilities\ErrorMessageExtractor;
1010

1111
/**
1212
* Exception class for HTTP response errors.
@@ -17,7 +17,7 @@
1717
*
1818
* @since 0.1.0
1919
*/
20-
class ResponseException extends RuntimeException implements ClientExceptionInterface
20+
class ResponseException extends RuntimeException
2121
{
2222
/**
2323
* Creates a ResponseException for missing expected data.
@@ -72,28 +72,10 @@ public static function fromBadResponse(Response $response): self
7272
$response->getStatusCode()
7373
);
7474

75-
// Handle common error formats in API responses.
76-
$data = $response->getData();
77-
if (
78-
is_array($data) &&
79-
isset($data['error']) &&
80-
is_array($data['error']) &&
81-
isset($data['error']['message']) &&
82-
is_string($data['error']['message'])
83-
) {
84-
$errorMessage .= ' ' . $data['error']['message'];
85-
} elseif (
86-
is_array($data) &&
87-
isset($data['error']) &&
88-
is_string($data['error'])
89-
) {
90-
$errorMessage .= ' ' . $data['error'];
91-
} elseif (
92-
is_array($data) &&
93-
isset($data['message']) &&
94-
is_string($data['message'])
95-
) {
96-
$errorMessage .= ' ' . $data['message'];
75+
// Extract error message from response data using centralized utility
76+
$extractedError = ErrorMessageExtractor::extractFromResponseData($response->getData());
77+
if ($extractedError !== null) {
78+
$errorMessage .= ' ' . $extractedError;
9779
}
9880

9981
return new self($errorMessage, $response->getStatusCode());

src/Providers/Http/Exception/ServerException.php

Lines changed: 7 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@
44

55
namespace WordPress\AiClient\Providers\Http\Exception;
66

7+
use WordPress\AiClient\Common\Exception\RuntimeException;
78
use WordPress\AiClient\Providers\Http\DTO\Response;
9+
use WordPress\AiClient\Providers\Http\Utilities\ErrorMessageExtractor;
810

911
/**
1012
* Exception thrown for 5xx HTTP server errors.
@@ -14,7 +16,7 @@
1416
*
1517
* @since n.e.x.t
1618
*/
17-
class ServerException extends RequestException
19+
class ServerException extends RuntimeException
1820
{
1921
/**
2022
* Creates a ServerException from a server error response.
@@ -34,28 +36,10 @@ public static function fromServerError(Response $response): self
3436
$response->getStatusCode()
3537
);
3638

37-
// Handle common error formats in API responses
38-
$data = $response->getData();
39-
if (
40-
is_array($data) &&
41-
isset($data['error']) &&
42-
is_array($data['error']) &&
43-
isset($data['error']['message']) &&
44-
is_string($data['error']['message'])
45-
) {
46-
$errorMessage .= ' - ' . $data['error']['message'];
47-
} elseif (
48-
is_array($data) &&
49-
isset($data['error']) &&
50-
is_string($data['error'])
51-
) {
52-
$errorMessage .= ' - ' . $data['error'];
53-
} elseif (
54-
is_array($data) &&
55-
isset($data['message']) &&
56-
is_string($data['message'])
57-
) {
58-
$errorMessage .= ' - ' . $data['message'];
39+
// Extract error message from response data using centralized utility
40+
$extractedError = ErrorMessageExtractor::extractFromResponseData($response->getData());
41+
if ($extractedError !== null) {
42+
$errorMessage .= ' - ' . $extractedError;
5943
}
6044

6145
return new self($errorMessage, $response->getStatusCode());

0 commit comments

Comments
 (0)