Skip to content

Commit b8969bb

Browse files
feat(client): improve error handling
1 parent 837da8b commit b8969bb

File tree

5 files changed

+25
-17
lines changed

5 files changed

+25
-17
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,8 @@ $client = new Client(apiKey: getenv("CAS_PARSER_API_KEY") ?: "My API Key");
5050
$params = CasParserSmartParseParams::with(
5151
password: "ABCDF", pdfURL: "https://your-cas-pdf-url-here.com"
5252
);
53-
$unifiedResponse = $client->casParser->smartParse($params);
5453

54+
$unifiedResponse = $client->casParser->smartParse($params);
5555
var_dump($unifiedResponse->demat_accounts);
5656
```
5757

@@ -77,7 +77,7 @@ try {
7777
echo "A 429 status code was received; we should back off a bit.", PHP_EOL;
7878
} catch (APIStatusError $e) {
7979
echo "Another non-200-range status code was received", PHP_EOL;
80-
var_dump($e->status);
80+
echo $e->getMessage();
8181
}
8282
```
8383

src/Core/BaseClient.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ class BaseClient
2626

2727
protected RequestFactoryInterface $requestFactory;
2828

29-
protected ClientInterface $requester;
29+
protected ClientInterface $transporter;
3030

3131
/**
3232
* @param array<string, null|int|list<int|string>|string> $headers
@@ -41,7 +41,7 @@ public function __construct(
4141
$this->requestFactory = Psr17FactoryDiscovery::findRequestFactory();
4242

4343
$this->baseUrl = $this->uriFactory->createUri($baseUrl);
44-
$this->requester = Psr18ClientDiscovery::find();
44+
$this->transporter = Psr18ClientDiscovery::find();
4545
}
4646

4747
/**
@@ -158,7 +158,7 @@ protected function sendRequest(
158158
int $redirectCount,
159159
): ResponseInterface {
160160
$req = Util::withSetBody($this->streamFactory, req: $req, body: $data);
161-
$rsp = $this->requester->sendRequest($req);
161+
$rsp = $this->transporter->sendRequest($req);
162162
$code = $rsp->getStatusCode();
163163

164164
if ($code >= 300 && $code < 400) {
@@ -172,7 +172,7 @@ protected function sendRequest(
172172
}
173173

174174
if ($code >= 400 && $code < 500) {
175-
throw APIStatusError::from(null, request: $req, response: $rsp);
175+
throw APIStatusError::from(request: $req, response: $rsp);
176176
}
177177

178178
if ($code >= 500 && $retryCount < $opts->maxRetries) {

src/Errors/APIError.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,6 @@ public function __construct(
1818
?\Throwable $previous = null,
1919
string $message = '',
2020
) {
21-
parent::__construct(message: 'response: '.$message.PHP_EOL.'request: '.$request->getBody()->__toString(), previous: $previous);
21+
parent::__construct(message: $message, previous: $previous);
2222
}
2323
}

src/Errors/APIStatusError.php

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
namespace CasParser\Errors;
44

5-
use CasParser\Core\Util;
65
use Psr\Http\Message\RequestInterface;
76
use Psr\Http\Message\ResponseInterface;
7+
use Psr\Http\Message\StreamInterface;
88

99
class APIStatusError extends APIError
1010
{
@@ -14,23 +14,26 @@ class APIStatusError extends APIError
1414
public ?int $status;
1515

1616
public function __construct(
17-
public mixed $body,
1817
public RequestInterface $request,
1918
ResponseInterface $response,
2019
?\Throwable $previous = null,
2120
string $message = '',
2221
) {
2322
$this->response = $response;
2423
$this->status = $response->getStatusCode();
25-
$message |= json_encode(
26-
['status' => $this->status, 'body' => $body],
27-
flags: Util::JSON_ENCODE_FLAGS,
28-
);
29-
parent::__construct(request: $request, message: $message, previous: $previous);
24+
25+
$summary = 'Status: '.$this->status.PHP_EOL
26+
.'Response Body: '.self::fmtBody($response->getBody()).PHP_EOL
27+
.'Request Body: '.self::fmtBody($request->getBody()).PHP_EOL;
28+
29+
if ('' != $message) {
30+
$summary .= $message.PHP_EOL.$summary;
31+
}
32+
33+
parent::__construct(request: $request, message: $summary, previous: $previous);
3034
}
3135

3236
public static function from(
33-
mixed $body,
3437
RequestInterface $request,
3538
ResponseInterface $response
3639
): self {
@@ -48,6 +51,11 @@ public static function from(
4851
default => APIStatusError::class
4952
};
5053

51-
return new $cls(body: $body, request: $request, response: $response);
54+
return new $cls(request: $request, response: $response);
55+
}
56+
57+
private static function fmtBody(StreamInterface $body): string
58+
{
59+
return json_encode(json_decode($body->__toString() ?: ''), JSON_PRETTY_PRINT) ?: '';
5260
}
5361
}

src/Errors/Error.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,6 @@ class Error extends \Exception
99

1010
public function __construct(string $message, int $code = 0, ?\Throwable $previous = null)
1111
{
12-
parent::__construct($this::DESC.' '.$message, $code, $previous);
12+
parent::__construct($this::DESC.PHP_EOL.$message, $code, $previous);
1313
}
1414
}

0 commit comments

Comments
 (0)