Skip to content
This repository has been archived by the owner on May 1, 2023. It is now read-only.

Commit

Permalink
Try repeat on all http error codes because why not
Browse files Browse the repository at this point in the history
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
  • Loading branch information
Kas-tle committed Apr 28, 2023
1 parent 39bce6f commit 1a96f0f
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 1 deletion.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "enjinscraper",
"version": "1.6.0",
"version": "1.6.1",
"description": "Scrapes an Enjin site via the Enjin API",
"repository": "https://github.com/Kas-tle/EnjinScraper.git",
"author": "Joshua Castle <packages@kastle.dev",
Expand Down
27 changes: 27 additions & 0 deletions src/util/request.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,17 +42,26 @@ export async function enjinRequest<T>(params: Params, method: string, domain: st
} catch (error: any) {
if (error.response && error?.response.status === 429) {
statusMessage(MessageType.Critical, `Enjin API rate limit exceeded. Retrying...`);
statusMessage(MessageType.Critical, `Attempt [(${retries+1}/${retryTimes+1})]`);
retries++;
await new Promise((resolve) => setTimeout(resolve, retryTime));
} else if (error.response && error?.response.status === 403) {
statusMessage(MessageType.Critical, `File is not available for download (403 Forbidden)`);
statusMessage(MessageType.Critical, `Attempt [(${retries+1}/${retryTimes+1})]`);
return Promise.reject();
} else if (error.response && error?.response.status === 524) {
statusMessage(MessageType.Critical, `Enjin took too long to respond per Cloudflare's 100 second limit (524 a timeout occurred) Retrying...`);
statusMessage(MessageType.Critical, `Attempt [(${retries+1}/${retryTimes+1})]`);
retries++;
await new Promise((resolve) => setTimeout(resolve, retryTime));
} else if (error.code === 'EAI_AGAIN') {
statusMessage(MessageType.Critical, `DNS lookup error on request ${qid}: ${getErrorMessage(error)}. Retrying...`);
statusMessage(MessageType.Critical, `Attempt [(${retries+1}/${retryTimes+1})]`);
retries++;
await new Promise((resolve) => setTimeout(resolve, retryTime));
} else if (error.response && error?.response.status >= 400 && error?.response.status <= 599) {
statusMessage(MessageType.Critical, `Response code ${error?.response.status}: ${getErrorMessage(error)}`);
statusMessage(MessageType.Critical, `Attempt [(${retries+1}/${retryTimes+1})]`);
retries++;
await new Promise((resolve) => setTimeout(resolve, retryTime));
} else {
Expand Down Expand Up @@ -105,17 +114,26 @@ export async function getRequest(domain: string, url: string, headers: any, debu
} catch (error: any) {
if (error.response && error?.response.status === 429) {
statusMessage(MessageType.Critical, `Enjin API rate limit exceeded. Retrying...`);
statusMessage(MessageType.Critical, `Attempt [(${retries+1}/${retryTimes+1})]`);
retries++;
await new Promise((resolve) => setTimeout(resolve, retryTime));
} else if (error.response && error?.response.status === 403) {
statusMessage(MessageType.Critical, `File is not available for download (403 Forbidden)`);
statusMessage(MessageType.Critical, `Attempt [(${retries+1}/${retryTimes+1})]`);
return Promise.reject();
} else if (error.response && error?.response.status === 524) {
statusMessage(MessageType.Critical, `Enjin took too long to respond per Cloudflare's 100 second limit (524 a timeout occurred) Retrying...`);
statusMessage(MessageType.Critical, `Attempt [(${retries+1}/${retryTimes+1})]`);
retries++;
await new Promise((resolve) => setTimeout(resolve, retryTime));
} else if (error.code === 'EAI_AGAIN') {
statusMessage(MessageType.Critical, `DNS lookup error on request ${rid}: ${getErrorMessage(error)}. Retrying...`);
statusMessage(MessageType.Critical, `Attempt [(${retries+1}/${retryTimes+1})]`);
retries++;
await new Promise((resolve) => setTimeout(resolve, retryTime));
} else if (error.response && error?.response.status >= 400 && error?.response.status <= 599) {
statusMessage(MessageType.Critical, `Response code ${error?.response.status}: ${getErrorMessage(error)}`);
statusMessage(MessageType.Critical, `Attempt [(${retries+1}/${retryTimes+1})]`);
retries++;
await new Promise((resolve) => setTimeout(resolve, retryTime));
} else {
Expand Down Expand Up @@ -184,17 +202,26 @@ export async function postRequest(domain: string, url: string, data: any, header
} catch (error: any) {
if (error.response && error?.response.status === 429) {
statusMessage(MessageType.Critical, `Enjin API rate limit exceeded. Retrying...`);
statusMessage(MessageType.Critical, `Attempt [(${retries+1}/${retryTimes+1})]`);
retries++;
await new Promise((resolve) => setTimeout(resolve, retryTime));
} else if (error.response && error?.response.status === 403) {
statusMessage(MessageType.Critical, `File is not available for download (403 Forbidden)`);
statusMessage(MessageType.Critical, `Attempt [(${retries+1}/${retryTimes+1})]`);
return Promise.reject();
} else if (error.response && error?.response.status === 524) {
statusMessage(MessageType.Critical, `Enjin took too long to respond per Cloudflare's 100 second limit (524 a timeout occurred) Retrying...`);
statusMessage(MessageType.Critical, `Attempt [(${retries+1}/${retryTimes+1})]`);
retries++;
await new Promise((resolve) => setTimeout(resolve, retryTime));
} else if (error.code === 'EAI_AGAIN') {
statusMessage(MessageType.Critical, `DNS lookup error on request ${rid}: ${getErrorMessage(error)}. Retrying...`);
statusMessage(MessageType.Critical, `Attempt [(${retries+1}/${retryTimes+1})]`);
retries++;
await new Promise((resolve) => setTimeout(resolve, retryTime));
} else if (error.response && error?.response.status >= 400 && error?.response.status <= 599) {
statusMessage(MessageType.Critical, `Response code ${error?.response.status}: ${getErrorMessage(error)}`);
statusMessage(MessageType.Critical, `Attempt [(${retries+1}/${retryTimes+1})]`);
retries++;
await new Promise((resolve) => setTimeout(resolve, retryTime));
} else {
Expand Down

0 comments on commit 1a96f0f

Please sign in to comment.