mirror of
https://github.com/sasjs/adapter.git
synced 2025-12-11 09:24:35 +00:00
Merge branch 'api-execution' into issue17
This commit is contained in:
@@ -313,6 +313,7 @@ export class SASViyaApiClient {
|
|||||||
}
|
}
|
||||||
).then((res: any) => res.result.items.map((i: any) => i.line).join("\n"));
|
).then((res: any) => res.result.items.map((i: any) => i.line).join("\n"));
|
||||||
}
|
}
|
||||||
|
|
||||||
return { result: jobResult?.result, log };
|
return { result: jobResult?.result, log };
|
||||||
// } else {
|
// } else {
|
||||||
// console.error(
|
// console.error(
|
||||||
@@ -621,7 +622,6 @@ export class SASViyaApiClient {
|
|||||||
if (!this.rootFolder) {
|
if (!this.rootFolder) {
|
||||||
await this.populateRootFolder(accessToken);
|
await this.populateRootFolder(accessToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!this.rootFolder) {
|
if (!this.rootFolder) {
|
||||||
throw new Error("Root folder was not found");
|
throw new Error("Root folder was not found");
|
||||||
}
|
}
|
||||||
@@ -869,10 +869,7 @@ export class SASViyaApiClient {
|
|||||||
const rootFolder = await this.request<Folder>(
|
const rootFolder = await this.request<Folder>(
|
||||||
`${this.serverUrl}${url}`,
|
`${this.serverUrl}${url}`,
|
||||||
requestInfo
|
requestInfo
|
||||||
).catch((e) => {
|
);
|
||||||
error = e;
|
|
||||||
return null;
|
|
||||||
});
|
|
||||||
|
|
||||||
this.rootFolder = rootFolder?.result || null;
|
this.rootFolder = rootFolder?.result || null;
|
||||||
if (error) {
|
if (error) {
|
||||||
|
|||||||
67
src/SASjs.ts
67
src/SASjs.ts
@@ -51,7 +51,9 @@ export default class SASjs {
|
|||||||
private loginUrl: string = "";
|
private loginUrl: string = "";
|
||||||
private csrfTokenApi: CsrfToken | null = null;
|
private csrfTokenApi: CsrfToken | null = null;
|
||||||
private csrfTokenWeb: CsrfToken | null = null;
|
private csrfTokenWeb: CsrfToken | null = null;
|
||||||
private retryCountRequest: number = 0;
|
private retryCountWeb: number = 0;
|
||||||
|
private retryCountComputeApi: number = 0;
|
||||||
|
private retryCountJeseApi: number = 0;
|
||||||
private sasjsRequests: SASjsRequest[] = [];
|
private sasjsRequests: SASjsRequest[] = [];
|
||||||
private sasjsWaitingRequests: SASjsWaitingRequest[] = [];
|
private sasjsWaitingRequests: SASjsWaitingRequest[] = [];
|
||||||
private userName: string = "";
|
private userName: string = "";
|
||||||
@@ -438,6 +440,8 @@ export default class SASjs {
|
|||||||
loginRequiredCallback,
|
loginRequiredCallback,
|
||||||
accessToken
|
accessToken
|
||||||
);
|
);
|
||||||
|
|
||||||
|
this.retryCountComputeApi = 0;
|
||||||
} else {
|
} else {
|
||||||
requestResponse = await this.executeJobViaJesApi(
|
requestResponse = await this.executeJobViaJesApi(
|
||||||
sasJob,
|
sasJob,
|
||||||
@@ -446,6 +450,8 @@ export default class SASjs {
|
|||||||
loginRequiredCallback,
|
loginRequiredCallback,
|
||||||
accessToken
|
accessToken
|
||||||
);
|
);
|
||||||
|
|
||||||
|
this.retryCountJeseApi = 0;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
requestResponse = await this.executeJobViaWeb(
|
requestResponse = await this.executeJobViaWeb(
|
||||||
@@ -539,8 +545,7 @@ export default class SASjs {
|
|||||||
|
|
||||||
sasjsWaitingRequest.requestPromise.promise = new Promise(
|
sasjsWaitingRequest.requestPromise.promise = new Promise(
|
||||||
async (resolve, reject) => {
|
async (resolve, reject) => {
|
||||||
resolve(
|
this.sasViyaApiClient
|
||||||
await this.sasViyaApiClient
|
|
||||||
?.executeComputeJob(
|
?.executeComputeJob(
|
||||||
sasJob,
|
sasJob,
|
||||||
config.contextName,
|
config.contextName,
|
||||||
@@ -554,9 +559,29 @@ export default class SASjs {
|
|||||||
} else {
|
} else {
|
||||||
this.appendSasjsRequest(response, sasJob, null);
|
this.appendSasjsRequest(response, sasJob, null);
|
||||||
}
|
}
|
||||||
return JSON.parse(response!.result);
|
|
||||||
|
resolve(JSON.parse(response!.result));
|
||||||
})
|
})
|
||||||
.catch((e) => {
|
.catch(async (e) => {
|
||||||
|
if (needsRetry(JSON.stringify(e))) {
|
||||||
|
if (this.retryCountComputeApi < requestRetryLimit) {
|
||||||
|
let retryResponse = await this.executeJobViaComputeApi(
|
||||||
|
sasJob,
|
||||||
|
data,
|
||||||
|
config,
|
||||||
|
loginRequiredCallback,
|
||||||
|
accessToken
|
||||||
|
);
|
||||||
|
|
||||||
|
this.retryCountComputeApi++;
|
||||||
|
|
||||||
|
resolve(retryResponse);
|
||||||
|
} else {
|
||||||
|
this.retryCountComputeApi = 0;
|
||||||
|
reject({ MESSAGE: "Compute API retry requests limit reached" });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (e && e.status === 401) {
|
if (e && e.status === 401) {
|
||||||
if (loginRequiredCallback) loginRequiredCallback(true);
|
if (loginRequiredCallback) loginRequiredCallback(true);
|
||||||
sasjsWaitingRequest.requestPromise.resolve = resolve;
|
sasjsWaitingRequest.requestPromise.resolve = resolve;
|
||||||
@@ -567,7 +592,6 @@ export default class SASjs {
|
|||||||
reject({ MESSAGE: e || "Job execution failed" });
|
reject({ MESSAGE: e || "Job execution failed" });
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
);
|
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
return sasjsWaitingRequest.requestPromise.promise;
|
return sasjsWaitingRequest.requestPromise.promise;
|
||||||
@@ -618,9 +642,28 @@ export default class SASjs {
|
|||||||
}
|
}
|
||||||
return JSON.parse(response!.result);
|
return JSON.parse(response!.result);
|
||||||
})
|
})
|
||||||
.catch((e) =>
|
.catch(async (e) => {
|
||||||
|
if (needsRetry(JSON.stringify(e))) {
|
||||||
|
if (this.retryCountJeseApi < requestRetryLimit) {
|
||||||
|
let retryResponse = await this.executeJobViaJesApi(
|
||||||
|
sasJob,
|
||||||
|
data,
|
||||||
|
config,
|
||||||
|
loginRequiredCallback,
|
||||||
|
accessToken
|
||||||
|
);
|
||||||
|
|
||||||
|
this.retryCountJeseApi++;
|
||||||
|
|
||||||
|
resolve(retryResponse);
|
||||||
|
} else {
|
||||||
|
this.retryCountJeseApi = 0;
|
||||||
|
reject({ MESSAGE: "Jes API retry requests limit reached" });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
reject({ MESSAGE: (e && e.message) || "Job execution failed" })
|
reject({ MESSAGE: (e && e.message) || "Job execution failed" })
|
||||||
)
|
})
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -769,18 +812,18 @@ export default class SASjs {
|
|||||||
(needsRetry(responseText) || isRedirected) &&
|
(needsRetry(responseText) || isRedirected) &&
|
||||||
!isLogInRequired(responseText)
|
!isLogInRequired(responseText)
|
||||||
) {
|
) {
|
||||||
if (this.retryCountRequest < requestRetryLimit) {
|
if (this.retryCountWeb < requestRetryLimit) {
|
||||||
this.retryCountRequest++;
|
this.retryCountWeb++;
|
||||||
this.request(sasJob, data).then(
|
this.request(sasJob, data).then(
|
||||||
(res: any) => resolve(res),
|
(res: any) => resolve(res),
|
||||||
(err: any) => reject(err)
|
(err: any) => reject(err)
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
this.retryCountRequest = 0;
|
this.retryCountWeb = 0;
|
||||||
reject(responseText);
|
reject(responseText);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
this.retryCountRequest = 0;
|
this.retryCountWeb = 0;
|
||||||
this.parseLogFromResponse(responseText, program);
|
this.parseLogFromResponse(responseText, program);
|
||||||
|
|
||||||
if (isLogInRequired(responseText)) {
|
if (isLogInRequired(responseText)) {
|
||||||
|
|||||||
Reference in New Issue
Block a user