Skip to content

Commit 06919ac

Browse files
committed
Added option to skip logging responses, screenshots can fill up a DB quickly
1 parent c7fac0a commit 06919ac

File tree

1 file changed

+77
-39
lines changed

1 file changed

+77
-39
lines changed

src/OxylabsApiClient.php

Lines changed: 77 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,12 @@ protected function getAuthHeader(): array
7979
/**
8080
* @throws RuntimeException
8181
*/
82-
public function makePostRequest(string $source, array $payload, ?int $allowedRetries = null): PushPullJob
83-
{
82+
public function makePostRequest(
83+
string $source,
84+
array $payload,
85+
?int $allowedRetries = null,
86+
bool $logResponseBody = true,
87+
): PushPullJob {
8488
try {
8589
$response = $this->makeRequest(
8690
'post',
@@ -90,6 +94,7 @@ public function makePostRequest(string $source, array $payload, ?int $allowedRet
9094
...$payload,
9195
],
9296
$allowedRetries ?? 0,
97+
logResponseBody: $logResponseBody,
9398
);
9499

95100
if (! $response->successful()) {
@@ -105,8 +110,13 @@ public function makePostRequest(string $source, array $payload, ?int $allowedRet
105110
/**
106111
* @throws GuzzleException|Throwable
107112
*/
108-
protected function makeRequest(string $method, string $uri, ?array $payload = null, ?int $retryCount = null): Response
109-
{
113+
protected function makeRequest(
114+
string $method,
115+
string $uri,
116+
?array $payload = null,
117+
?int $retryCount = null,
118+
bool $logResponseBody = true,
119+
): Response {
110120
$request = new Request(
111121
method: $method,
112122
uri: $uri,
@@ -135,7 +145,15 @@ protected function makeRequest(string $method, string $uri, ?array $payload = nu
135145
}, 2000);
136146

137147
if (config('oxylabs-api.request_logging_enabled', true)) {
138-
$logger->updateFromResponse($response->toPsrResponse());
148+
if ($logResponseBody) {
149+
$logger->updateFromResponse($response->toPsrResponse());
150+
} else {
151+
$logger->response_code = $response->getStatusCode();
152+
$logger->response_headers = $response->getHeaders();
153+
154+
$logger->save();
155+
}
156+
139157
}
140158

141159
return $response;
@@ -147,13 +165,15 @@ protected function makeRequest(string $method, string $uri, ?array $payload = nu
147165
public function getResult(
148166
string $job_id,
149167
?string $type = null,
168+
bool $logResponseBody = true,
150169
): ?array {
151170
try {
152171
$response = $this->makeRequest(
153172
'get',
154173
$this->baseUrl."/queries/$job_id/results".($type ? "?type=$type" : ''),
155174
null,
156-
3
175+
3,
176+
logResponseBody: $logResponseBody,
157177
);
158178
} catch (Throwable $e) {
159179
throw new RuntimeException('API request failed: '.$e->getMessage(), $e->getCode(), $e);
@@ -170,12 +190,15 @@ public function getResult(
170190
* @throws ConnectionException
171191
* @throws Throwable
172192
*/
173-
public function getPushPullJob(string $job_id): PushPullJob
174-
{
193+
public function getPushPullJob(
194+
string $job_id,
195+
bool $logResponseBody = true,
196+
): PushPullJob {
175197
$response = $this->makeRequest(
176198
'get',
177199
$this->baseUrl."/queries/$job_id",
178200
retryCount: 3,
201+
logResponseBody: $logResponseBody,
179202
);
180203

181204
if (! $response->successful()) {
@@ -196,6 +219,7 @@ public function getPushPullResults(
196219
int $status_check_limit = 5,
197220
int $status_wait_seconds = 3,
198221
?string $type = null,
222+
bool $logResponseBody = true,
199223
): ?array {
200224
if ($check_status) {
201225
$attempts = 0;
@@ -204,7 +228,7 @@ public function getPushPullResults(
204228
} while ($job->isPending() && $attempts++ < $status_check_limit && sleep($status_wait_seconds) === 0);
205229
}
206230

207-
return $this->getResult($job_id, $type);
231+
return $this->getResult($job_id, $type, $logResponseBody);
208232
}
209233

210234
/**
@@ -216,8 +240,9 @@ public function getAmazonProductResult(
216240
int $status_check_limit = 5,
217241
int $status_wait_seconds = 3,
218242
?string $type = 'parsed',
243+
bool $logResponseBody = true,
219244
): AmazonProductResponse {
220-
$response = $this->getPushPullResults($job_id, $check_status, $status_check_limit, $status_wait_seconds, $type);
245+
$response = $this->getPushPullResults($job_id, $check_status, $status_check_limit, $status_wait_seconds, $type, $logResponseBody);
221246

222247
return AmazonProductResponse::from($response);
223248
}
@@ -231,8 +256,9 @@ public function getAmazonResult(
231256
int $status_check_limit = 5,
232257
int $status_wait_seconds = 3,
233258
?string $type = 'parsed',
259+
bool $logResponseBody = true,
234260
): AmazonResponse {
235-
$response = $this->getPushPullResults($job_id, $check_status, $status_check_limit, $status_wait_seconds, $type);
261+
$response = $this->getPushPullResults($job_id, $check_status, $status_check_limit, $status_wait_seconds, $type, $logResponseBody);
236262

237263
return AmazonResponse::from($response);
238264
}
@@ -246,8 +272,9 @@ public function getUniversalResult(
246272
int $status_check_limit = 5,
247273
int $status_wait_seconds = 3,
248274
?string $type = 'raw',
275+
bool $logResponseBody = true,
249276
): UniversalResponse {
250-
$response = $this->getPushPullResults($job_id, $check_status, $status_check_limit, $status_wait_seconds, $type);
277+
$response = $this->getPushPullResults($job_id, $check_status, $status_check_limit, $status_wait_seconds, $type, $logResponseBody);
251278

252279
return UniversalResponse::from($response);
253280
}
@@ -261,8 +288,9 @@ public function getAmazonPricingResult(
261288
int $status_check_limit = 5,
262289
int $status_wait_seconds = 3,
263290
?string $type = 'parsed',
291+
bool $logResponseBody = true,
264292
): AmazonPricingResponse {
265-
$response = $this->getPushPullResults($job_id, $check_status, $status_check_limit, $status_wait_seconds, $type);
293+
$response = $this->getPushPullResults($job_id, $check_status, $status_check_limit, $status_wait_seconds, $type, $logResponseBody);
266294

267295
return AmazonPricingResponse::from($response);
268296
}
@@ -277,8 +305,9 @@ public function getAmazonSellerResult(
277305
int $status_check_limit = 5,
278306
int $status_wait_seconds = 3,
279307
?string $type = 'parsed',
308+
bool $logResponseBody = true,
280309
): AmazonSellerResponse {
281-
$response = $this->getPushPullResults($job_id, $check_status, $status_check_limit, $status_wait_seconds, $type);
310+
$response = $this->getPushPullResults($job_id, $check_status, $status_check_limit, $status_wait_seconds, $type, $logResponseBody);
282311

283312
return AmazonSellerResponse::from($response);
284313
}
@@ -287,13 +316,16 @@ public function getAmazonSellerResult(
287316
* @throws GuzzleException
288317
* @throws Throwable
289318
*/
290-
public function makeBatchRequest(BatchRequest $payload): PushPullBatchJobResponse
291-
{
319+
public function makeBatchRequest(
320+
BatchRequest $payload,
321+
bool $logResponseBody = true,
322+
): PushPullBatchJobResponse {
292323
$response = $this->makeRequest(
293324
'post',
294325
$this->baseUrl.'/queries/batch',
295326
$payload->toArray(),
296-
3
327+
3,
328+
$logResponseBody,
297329
);
298330

299331
if (! $response->successful()) {
@@ -306,65 +338,68 @@ public function makeBatchRequest(BatchRequest $payload): PushPullBatchJobRespons
306338
/**
307339
* @throws RuntimeException
308340
*/
309-
public function amazon(AmazonRequest $request, ?int $allowedRetries = null): PushPullJob
310-
{
311-
return $this->makePostRequest(OxylabsApi::TARGET_AMAZON, $request->toArray(), $allowedRetries);
341+
public function amazon(
342+
AmazonRequest $request,
343+
?int $allowedRetries = null,
344+
bool $logResponseBody = true,
345+
): PushPullJob {
346+
return $this->makePostRequest(OxylabsApi::TARGET_AMAZON, $request->toArray(), $allowedRetries, $logResponseBody);
312347
}
313348

314349
/**
315350
* @throws RuntimeException
316351
*/
317-
public function amazonProduct(AmazonProductRequest $request, ?int $allowedRetries = null): PushPullJob
352+
public function amazonProduct(AmazonProductRequest $request, ?int $allowedRetries = null, bool $logResponseBody = true,): PushPullJob
318353
{
319-
return $this->makePostRequest(OxylabsApi::SOURCE_AMAZON_PRODUCT, $request->toArray(), $allowedRetries);
354+
return $this->makePostRequest(OxylabsApi::SOURCE_AMAZON_PRODUCT, $request->toArray(), $allowedRetries, $logResponseBody);
320355
}
321356

322357
/**
323358
* @throws RuntimeException
324359
*/
325-
public function amazonSearch(AmazonSearchRequest $request, ?int $allowedRetries = null): PushPullJob
360+
public function amazonSearch(AmazonSearchRequest $request, ?int $allowedRetries = null, bool $logResponseBody = true,): PushPullJob
326361
{
327-
return $this->makePostRequest(OxylabsApi::SOURCE_AMAZON_SEARCH, $request->toArray(), $allowedRetries);
362+
return $this->makePostRequest(OxylabsApi::SOURCE_AMAZON_SEARCH, $request->toArray(), $allowedRetries, $logResponseBody);
328363
}
329364

330365
/**
331366
* @throws RuntimeException
332367
*/
333-
public function amazonPricing(AmazonPricingRequest $request, ?int $allowedRetries = null): PushPullJob
368+
public function amazonPricing(AmazonPricingRequest $request, ?int $allowedRetries = null, bool $logResponseBody = true,): PushPullJob
334369
{
335-
return $this->makePostRequest(OxylabsApi::SOURCE_AMAZON_PRICING, $request->toArray(), $allowedRetries);
370+
return $this->makePostRequest(OxylabsApi::SOURCE_AMAZON_PRICING, $request->toArray(), $allowedRetries, $logResponseBody);
336371
}
337372

338373
/**
339374
* @throws RuntimeException
340375
*/
341-
public function amazonSellers(AmazonSellersRequest $request, ?int $allowedRetries = null): PushPullJob
376+
public function amazonSellers(AmazonSellersRequest $request, ?int $allowedRetries = null, bool $logResponseBody = true,): PushPullJob
342377
{
343-
return $this->makePostRequest(OxylabsApi::SOURCE_AMAZON_SELLERS, $request->toArray(), $allowedRetries);
378+
return $this->makePostRequest(OxylabsApi::SOURCE_AMAZON_SELLERS, $request->toArray(), $allowedRetries, $logResponseBody);
344379
}
345380

346381
/**
347382
* @throws RuntimeException
348383
*/
349-
public function googleSearch(GoogleSearchRequest $request, ?int $allowedRetries = null): PushPullJob
384+
public function googleSearch(GoogleSearchRequest $request, ?int $allowedRetries = null, bool $logResponseBody = true,): PushPullJob
350385
{
351-
return $this->makePostRequest(OxylabsApi::SOURCE_GOOGLE_SHOPPING_SEARCH, $request->toArray(), $allowedRetries);
386+
return $this->makePostRequest(OxylabsApi::SOURCE_GOOGLE_SHOPPING_SEARCH, $request->toArray(), $allowedRetries, $logResponseBody);
352387
}
353388

354389
/**
355390
* @throws RuntimeException
356391
*/
357-
public function universal(UniversalRequest $request, ?int $allowedRetries = null): PushPullJob
392+
public function universal(UniversalRequest $request, ?int $allowedRetries = null, bool $logResponseBody = true,): PushPullJob
358393
{
359-
return $this->makePostRequest('universal', $request->toArray(), $allowedRetries);
394+
return $this->makePostRequest('universal', $request->toArray(), $allowedRetries, $logResponseBody);
360395
}
361396

362397
/**
363398
* @throws RuntimeException
364399
*/
365-
public function googleShoppingProduct(GoogleShoppingProductRequest $request, ?int $allowedRetries = null): PushPullJob
400+
public function googleShoppingProduct(GoogleShoppingProductRequest $request, ?int $allowedRetries = null, bool $logResponseBody = true,): PushPullJob
366401
{
367-
return $this->makePostRequest(OxylabsApi::SOURCE_GOOGLE_SHOPPING_PRODUCT, $request->toArray(), $allowedRetries);
402+
return $this->makePostRequest(OxylabsApi::SOURCE_GOOGLE_SHOPPING_PRODUCT, $request->toArray(), $allowedRetries, $logResponseBody);
368403
}
369404

370405
/**
@@ -377,8 +412,9 @@ public function getGoogleShoppingProductResult(
377412
int $status_check_limit = 5,
378413
int $status_wait_seconds = 3,
379414
?string $type = 'parsed',
415+
bool $logResponseBody = true,
380416
): GoogleShoppingProductResponse {
381-
$response = $this->getPushPullResults($job_id, $check_status, $status_check_limit, $status_wait_seconds, $type);
417+
$response = $this->getPushPullResults($job_id, $check_status, $status_check_limit, $status_wait_seconds, $type, $logResponseBody);
382418

383419
return GoogleShoppingProductResponse::from($response);
384420
}
@@ -400,18 +436,19 @@ public function getGoogleShoppingPricingResult(
400436
int $status_check_limit = 5,
401437
int $status_wait_seconds = 3,
402438
?string $type = 'parsed',
439+
bool $logResponseBody = true,
403440
): GoogleShoppingPricingResponse {
404-
$response = $this->getPushPullResults($job_id, $check_status, $status_check_limit, $status_wait_seconds, $type);
441+
$response = $this->getPushPullResults($job_id, $check_status, $status_check_limit, $status_wait_seconds, $type, $logResponseBody);
405442

406443
return GoogleShoppingPricingResponse::from($response);
407444
}
408445

409446
/**
410447
* @throws RuntimeException
411448
*/
412-
public function walmartProduct(WalmartProductRequest $request, ?int $allowedRetries = null): PushPullJob
449+
public function walmartProduct(WalmartProductRequest $request, ?int $allowedRetries = null, bool $logResponseBody = true,): PushPullJob
413450
{
414-
return $this->makePostRequest(OxylabsApi::SOURCE_WALMART_PRODUCT, $request->toArray(), $allowedRetries);
451+
return $this->makePostRequest(OxylabsApi::SOURCE_WALMART_PRODUCT, $request->toArray(), $allowedRetries, $logResponseBody);
415452
}
416453

417454
/**
@@ -424,8 +461,9 @@ public function getWalmartProductResult(
424461
int $status_check_limit = 5,
425462
int $status_wait_seconds = 3,
426463
?string $type = 'parsed',
464+
bool $logResponseBody = true,
427465
): WalmartProductResponse {
428-
$response = $this->getPushPullResults($job_id, $check_status, $status_check_limit, $status_wait_seconds, $type);
466+
$response = $this->getPushPullResults($job_id, $check_status, $status_check_limit, $status_wait_seconds, $type, $logResponseBody);
429467

430468
return WalmartProductResponse::from($response);
431469
}

0 commit comments

Comments
 (0)