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:
@@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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"
|
||||
)))
|
||||
);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user