1
0
mirror of https://github.com/sasjs/adapter.git synced 2026-01-08 13:00:05 +00:00

feat(session-cleanup): delete a session after it has been used

This commit is contained in:
Krishna Acondy
2020-08-05 21:52:23 +01:00
parent f763f05b5e
commit 14daa55184
5 changed files with 118 additions and 76 deletions

View File

@@ -44,24 +44,32 @@ export async function makeRequest<T>(
if (needsRetry(body)) {
if (retryCount < retryLimit) {
retryCount++;
let retryResponse = await makeRequest(url, retryRequest || request, callback, contentType);
let retryResponse = await makeRequest(
url,
retryRequest || request,
callback,
contentType
);
retryCount = 0;
return retryResponse;
} else {
retryCount = 0;
throw new Error('Request retry limit exceeded');
throw new Error("Request retry limit exceeded");
}
}
return Promise.reject({ status: response.status, body });
}
} else {
if (response.status === 204) {
return Promise.resolve();
}
const responseTransformed = await responseTransform(response);
let responseText = '';
let responseText = "";
if (typeof responseTransformed === 'string') {
if (typeof responseTransformed === "string") {
responseText = responseTransformed;
} else {
responseText = JSON.stringify(responseTransformed);
@@ -70,18 +78,23 @@ export async function makeRequest<T>(
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);
const retryResponse = await makeRequest(
url,
retryRequest || request,
callback,
contentType
);
retryCount = 0;
return retryResponse;
} else {
retryCount = 0;
throw new Error('Request retry limit exceeded');
throw new Error("Request retry limit exceeded");
}
}

View File

@@ -1,11 +1,14 @@
export const needsRetry = (responseText: string): boolean => {
return (
(responseText.includes('"errorCode":403') &&
!!responseText &&
((responseText.includes('"errorCode":403') &&
responseText.includes("_csrf") &&
responseText.includes("X-CSRF-TOKEN")) ||
(responseText.includes('"status":403') &&
responseText.includes('"error":"Forbidden"')) ||
(responseText.includes('"status":449') &&
responseText.includes("Authentication success, retry original request"))
(responseText.includes('"status":403') &&
responseText.includes('"error":"Forbidden"')) ||
(responseText.includes('"status":449') &&
responseText.includes(
"Authentication success, retry original request"
)))
);
};