mirror of
https://github.com/sasjs/adapter.git
synced 2026-01-05 03:30:05 +00:00
Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
762254d8c4 | ||
|
|
8474b222ea | ||
|
|
d7a7909529 | ||
|
|
31b60a985e | ||
|
|
a6b13d9cb9 | ||
|
|
55fcbf2e36 | ||
|
|
fad8549d92 | ||
|
|
95c03e5d07 |
37
package-lock.json
generated
37
package-lock.json
generated
@@ -1648,9 +1648,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@types/jest": {
|
"@types/jest": {
|
||||||
"version": "26.0.5",
|
"version": "26.0.8",
|
||||||
"resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.5.tgz",
|
"resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.8.tgz",
|
||||||
"integrity": "sha512-heU+7w8snfwfjtcj2H458aTx3m5unIToOJhx75ebHilBiiQ39OIdA18WkG4LP08YKeAoWAGvWg8s+22w/PeJ6w==",
|
"integrity": "sha512-eo3VX9jGASSuv680D4VQ89UmuLZneNxv2MCZjfwlInav05zXVJTzfc//lavdV0GPwSxsXJTy2jALscB7Acqg0g==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"jest-diff": "^25.2.1",
|
"jest-diff": "^25.2.1",
|
||||||
@@ -14874,9 +14874,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"ts-loader": {
|
"ts-loader": {
|
||||||
"version": "8.0.1",
|
"version": "8.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-8.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-8.0.2.tgz",
|
||||||
"integrity": "sha512-I9Nmly0ufJoZRMuAT9d5ijsC2B7oSPvUnOJt/GhgoATlPGYfa17VicDKPcqwUCrHpOkCxr/ybLYwbnS4cOxmvQ==",
|
"integrity": "sha512-oYT7wOTUawYXQ8XIDsRhziyW0KUEV38jISYlE+9adP6tDtG+O5GkRe4QKQXrHVH4mJJ88DysvEtvGP65wMLlhg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"chalk": "^2.3.0",
|
"chalk": "^2.3.0",
|
||||||
@@ -14901,9 +14901,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"tslint": {
|
"tslint": {
|
||||||
"version": "6.1.2",
|
"version": "6.1.3",
|
||||||
"resolved": "https://registry.npmjs.org/tslint/-/tslint-6.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/tslint/-/tslint-6.1.3.tgz",
|
||||||
"integrity": "sha512-UyNrLdK3E0fQG/xWNqAFAC5ugtFyPO4JJR1KyyfQAyzR8W0fTRrC91A8Wej4BntFzcvETdCSDa/4PnNYJQLYiA==",
|
"integrity": "sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@babel/code-frame": "^7.0.0",
|
"@babel/code-frame": "^7.0.0",
|
||||||
@@ -14917,24 +14917,15 @@
|
|||||||
"mkdirp": "^0.5.3",
|
"mkdirp": "^0.5.3",
|
||||||
"resolve": "^1.3.2",
|
"resolve": "^1.3.2",
|
||||||
"semver": "^5.3.0",
|
"semver": "^5.3.0",
|
||||||
"tslib": "^1.10.0",
|
"tslib": "^1.13.0",
|
||||||
"tsutils": "^2.29.0"
|
"tsutils": "^2.29.0"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"minimist": {
|
"tslib": {
|
||||||
"version": "1.2.5",
|
"version": "1.13.0",
|
||||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
|
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz",
|
||||||
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
|
"integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
|
||||||
"mkdirp": {
|
|
||||||
"version": "0.5.5",
|
|
||||||
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
|
|
||||||
"integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
|
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
|
||||||
"minimist": "^1.2.5"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -37,7 +37,7 @@
|
|||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/isomorphic-fetch": "0.0.35",
|
"@types/isomorphic-fetch": "0.0.35",
|
||||||
"@types/jest": "^26.0.5",
|
"@types/jest": "^26.0.8",
|
||||||
"cp": "^0.2.0",
|
"cp": "^0.2.0",
|
||||||
"jest": "^25.5.4",
|
"jest": "^25.5.4",
|
||||||
"path": "^0.12.7",
|
"path": "^0.12.7",
|
||||||
@@ -45,8 +45,8 @@
|
|||||||
"rimraf": "^3.0.2",
|
"rimraf": "^3.0.2",
|
||||||
"semantic-release": "^17.1.1",
|
"semantic-release": "^17.1.1",
|
||||||
"ts-jest": "^25.5.1",
|
"ts-jest": "^25.5.1",
|
||||||
"ts-loader": "^8.0.1",
|
"ts-loader": "^8.0.2",
|
||||||
"tslint": "^6.1.2",
|
"tslint": "^6.1.3",
|
||||||
"tslint-config-prettier": "^1.18.0",
|
"tslint-config-prettier": "^1.18.0",
|
||||||
"typedoc": "^0.17.8",
|
"typedoc": "^0.17.8",
|
||||||
"typedoc-neo-theme": "^1.0.9",
|
"typedoc-neo-theme": "^1.0.9",
|
||||||
|
|||||||
@@ -1018,7 +1018,10 @@ export class SASViyaApiClient {
|
|||||||
const { result: folder } = await this.request<Folder>(
|
const { result: folder } = await this.request<Folder>(
|
||||||
`${this.serverUrl}${url}`,
|
`${this.serverUrl}${url}`,
|
||||||
requestInfo
|
requestInfo
|
||||||
);
|
).catch((err) => {
|
||||||
|
return {result: null};
|
||||||
|
})
|
||||||
|
|
||||||
if (!folder) return undefined;
|
if (!folder) return undefined;
|
||||||
return `/folders/folders/${folder.id}`;
|
return `/folders/folders/${folder.id}`;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,8 @@
|
|||||||
import { CsrfToken } from "../types";
|
import { CsrfToken } from "../types";
|
||||||
|
import { needsRetry } from "./needsRetry";
|
||||||
|
|
||||||
|
let retryCount: number = 0;
|
||||||
|
let retryLimit: number = 5;
|
||||||
|
|
||||||
export async function makeRequest<T>(
|
export async function makeRequest<T>(
|
||||||
url: string,
|
url: string,
|
||||||
@@ -6,6 +10,8 @@ export async function makeRequest<T>(
|
|||||||
callback: (value: CsrfToken) => any,
|
callback: (value: CsrfToken) => any,
|
||||||
contentType: "text" | "json" = "json"
|
contentType: "text" | "json" = "json"
|
||||||
): Promise<{ result: T; etag: string | null }> {
|
): Promise<{ result: T; etag: string | null }> {
|
||||||
|
let retryRequest: any = null;
|
||||||
|
|
||||||
const responseTransform =
|
const responseTransform =
|
||||||
contentType === "json"
|
contentType === "json"
|
||||||
? (res: Response) => res.json()
|
? (res: Response) => res.json()
|
||||||
@@ -23,7 +29,7 @@ export async function makeRequest<T>(
|
|||||||
value: token || "",
|
value: token || "",
|
||||||
});
|
});
|
||||||
|
|
||||||
const retryRequest = {
|
retryRequest = {
|
||||||
...request,
|
...request,
|
||||||
headers: { ...request.headers, [tokenHeader]: token },
|
headers: { ...request.headers, [tokenHeader]: token },
|
||||||
};
|
};
|
||||||
@@ -37,12 +43,35 @@ export async function makeRequest<T>(
|
|||||||
return Promise.reject({ status: response.status, body });
|
return Promise.reject({ status: response.status, body });
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (response.redirected && response.url.includes("SASLogon/login")) {
|
const responseTransformed = responseTransform(response);
|
||||||
const body = await response.text();
|
let responseText = '';
|
||||||
return Promise.reject({ status: 401, body });
|
|
||||||
|
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");
|
etag = response.headers.get("ETag");
|
||||||
return responseTransform(response);
|
return responseTransformed;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return { result, etag };
|
return { result, etag };
|
||||||
|
|||||||
Reference in New Issue
Block a user