mirror of
https://github.com/sasjs/adapter.git
synced 2026-01-03 10:40:06 +00:00
Compare commits
13 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f763f05b5e | ||
|
|
b6aced5bad | ||
|
|
7bb7db0f27 | ||
|
|
36ea148446 | ||
|
|
762254d8c4 | ||
|
|
8474b222ea | ||
|
|
c1750c014e | ||
|
|
d7a7909529 | ||
|
|
31b60a985e | ||
|
|
a6b13d9cb9 | ||
|
|
55fcbf2e36 | ||
|
|
fad8549d92 | ||
|
|
95c03e5d07 |
1281
package-lock.json
generated
1281
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -37,7 +37,7 @@
|
||||
"license": "ISC",
|
||||
"devDependencies": {
|
||||
"@types/isomorphic-fetch": "0.0.35",
|
||||
"@types/jest": "^26.0.5",
|
||||
"@types/jest": "^26.0.8",
|
||||
"cp": "^0.2.0",
|
||||
"jest": "^25.5.4",
|
||||
"path": "^0.12.7",
|
||||
@@ -45,15 +45,15 @@
|
||||
"rimraf": "^3.0.2",
|
||||
"semantic-release": "^17.1.1",
|
||||
"ts-jest": "^25.5.1",
|
||||
"ts-loader": "^8.0.1",
|
||||
"tslint": "^6.1.2",
|
||||
"ts-loader": "^8.0.2",
|
||||
"tslint": "^6.1.3",
|
||||
"tslint-config-prettier": "^1.18.0",
|
||||
"typedoc": "^0.17.8",
|
||||
"typedoc-neo-theme": "^1.0.9",
|
||||
"typedoc-plugin-external-module-name": "^4.0.3",
|
||||
"typescript": "^3.9.7",
|
||||
"uglifyjs-webpack-plugin": "^2.2.0",
|
||||
"webpack": "^4.43.0",
|
||||
"webpack": "^4.44.1",
|
||||
"webpack-cli": "^3.3.12"
|
||||
},
|
||||
"main": "index.js",
|
||||
|
||||
@@ -1018,7 +1018,10 @@ export class SASViyaApiClient {
|
||||
const { result: folder } = await this.request<Folder>(
|
||||
`${this.serverUrl}${url}`,
|
||||
requestInfo
|
||||
);
|
||||
).catch((err) => {
|
||||
return {result: null};
|
||||
})
|
||||
|
||||
if (!folder) return undefined;
|
||||
return `/folders/folders/${folder.id}`;
|
||||
}
|
||||
|
||||
@@ -1,4 +1,8 @@
|
||||
import { CsrfToken } from "../types";
|
||||
import { needsRetry } from "./needsRetry";
|
||||
|
||||
let retryCount: number = 0;
|
||||
let retryLimit: number = 5;
|
||||
|
||||
export async function makeRequest<T>(
|
||||
url: string,
|
||||
@@ -6,6 +10,8 @@ export async function makeRequest<T>(
|
||||
callback: (value: CsrfToken) => any,
|
||||
contentType: "text" | "json" = "json"
|
||||
): Promise<{ result: T; etag: string | null }> {
|
||||
let retryRequest: any = null;
|
||||
|
||||
const responseTransform =
|
||||
contentType === "json"
|
||||
? (res: Response) => res.json()
|
||||
@@ -23,7 +29,7 @@ export async function makeRequest<T>(
|
||||
value: token || "",
|
||||
});
|
||||
|
||||
const retryRequest = {
|
||||
retryRequest = {
|
||||
...request,
|
||||
headers: { ...request.headers, [tokenHeader]: token },
|
||||
};
|
||||
@@ -34,15 +40,53 @@ export async function makeRequest<T>(
|
||||
}
|
||||
} else {
|
||||
const body = await response.text();
|
||||
|
||||
if (needsRetry(body)) {
|
||||
if (retryCount < retryLimit) {
|
||||
retryCount++;
|
||||
let retryResponse = await makeRequest(url, retryRequest || request, callback, contentType);
|
||||
retryCount = 0;
|
||||
|
||||
return retryResponse;
|
||||
} else {
|
||||
retryCount = 0;
|
||||
|
||||
throw new Error('Request retry limit exceeded');
|
||||
}
|
||||
}
|
||||
|
||||
return Promise.reject({ status: response.status, body });
|
||||
}
|
||||
} else {
|
||||
if (response.redirected && response.url.includes("SASLogon/login")) {
|
||||
const body = await response.text();
|
||||
return Promise.reject({ status: 401, body });
|
||||
const responseTransformed = await responseTransform(response);
|
||||
let responseText = '';
|
||||
|
||||
if (typeof responseTransformed === 'string') {
|
||||
responseText = responseTransformed;
|
||||
} else {
|
||||
responseText = JSON.stringify(responseTransformed);
|
||||
}
|
||||
|
||||
if (response.redirected && response.url.includes("SASLogon/login")) {
|
||||
return Promise.reject({ status: 401, responseTransformed });
|
||||
}
|
||||
|
||||
if (needsRetry(responseText)) {
|
||||
if (retryCount < retryLimit) {
|
||||
retryCount++;
|
||||
let retryResponse = await makeRequest(url, retryRequest || request, callback, contentType);
|
||||
retryCount = 0;
|
||||
|
||||
return retryResponse;
|
||||
} else {
|
||||
retryCount = 0;
|
||||
|
||||
throw new Error('Request retry limit exceeded');
|
||||
}
|
||||
}
|
||||
|
||||
etag = response.headers.get("ETag");
|
||||
return responseTransform(response);
|
||||
return responseTransformed;
|
||||
}
|
||||
});
|
||||
return { result, etag };
|
||||
|
||||
Reference in New Issue
Block a user