Skip to content

Commit b3eab16

Browse files
feat(client): improve error handling
1 parent d00f77a commit b3eab16

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
@@ -53,8 +53,8 @@ $client = new Client(
5353
$params = SmartscraperCreateParams::with(
5454
userPrompt: "Extract the product name, price, and description"
5555
);
56-
$completedSmartscraper = $client->smartscraper->create($params);
5756

57+
$completedSmartscraper = $client->smartscraper->create($params);
5858
var_dump($completedSmartscraper->request_id);
5959
```
6060

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

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
@@ -4,7 +4,7 @@
44

55
use Psr\Http\Message\RequestInterface;
66
use Psr\Http\Message\ResponseInterface;
7-
use Scrapegraphai\Core\Util;
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)