mirror of
https://github.com/sasjs/adapter.git
synced 2026-01-18 09:30:06 +00:00
Merge pull request #13 from sasjs/requestConfigOverride
Request config override
This commit is contained in:
File diff suppressed because one or more lines are too long
294
docs/classes/reflection-560.reflection-1.sas9apiclient.html
Normal file
294
docs/classes/reflection-560.reflection-1.sas9apiclient.html
Normal file
File diff suppressed because one or more lines are too long
934
docs/classes/reflection-560.reflection-1.sasjs.html
Normal file
934
docs/classes/reflection-560.reflection-1.sasjs.html
Normal file
File diff suppressed because one or more lines are too long
892
docs/classes/reflection-560.reflection-1.sasviyaapiclient.html
Normal file
892
docs/classes/reflection-560.reflection-1.sasviyaapiclient.html
Normal file
File diff suppressed because one or more lines are too long
206
docs/classes/reflection-560.reflection-1.sessionmanager.html
Normal file
206
docs/classes/reflection-560.reflection-1.sessionmanager.html
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
340
docs/index.html
340
docs/index.html
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
176
docs/interfaces/types.jobdefinition.html
Normal file
176
docs/interfaces/types.jobdefinition.html
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
107
docs/modules/reflection-560.html
Normal file
107
docs/modules/reflection-560.html
Normal file
File diff suppressed because one or more lines are too long
125
docs/modules/reflection-560.reflection-1.html
Normal file
125
docs/modules/reflection-560.reflection-1.html
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
96
src/SASjs.ts
96
src/SASjs.ts
@@ -43,7 +43,7 @@ const requestRetryLimit = 5;
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
export default class SASjs {
|
export default class SASjs {
|
||||||
private sasjsConfig = new SASjsConfig();
|
private sasjsConfig: SASjsConfig = new SASjsConfig();
|
||||||
private jobsPath: string = "";
|
private jobsPath: string = "";
|
||||||
private logoutUrl: string = "";
|
private logoutUrl: string = "";
|
||||||
private loginUrl: string = "";
|
private loginUrl: string = "";
|
||||||
@@ -374,8 +374,9 @@ export default class SASjs {
|
|||||||
* Process.) Is prepended at runtime with the value of `appLoc`.
|
* Process.) Is prepended at runtime with the value of `appLoc`.
|
||||||
* @param data - A JSON object containing one or more tables to be sent to
|
* @param data - A JSON object containing one or more tables to be sent to
|
||||||
* SAS. Can be `null` if no inputs required.
|
* SAS. Can be `null` if no inputs required.
|
||||||
* @param params - Provide any changes to the config here, for instance to
|
* @param config - Provide any changes to the config here, for instance to
|
||||||
* enable / disable `debug`.
|
* enable / disable `debug`. Any change provided will override the global config,
|
||||||
|
* for that particular function call.
|
||||||
* @param loginRequiredCallback - provide a function here to be called if the
|
* @param loginRequiredCallback - provide a function here to be called if the
|
||||||
* user is not logged in (eg to display a login form). The request will be
|
* user is not logged in (eg to display a login form). The request will be
|
||||||
* resubmitted after logon.
|
* resubmitted after logon.
|
||||||
@@ -383,40 +384,50 @@ export default class SASjs {
|
|||||||
public async request(
|
public async request(
|
||||||
sasJob: string,
|
sasJob: string,
|
||||||
data: any,
|
data: any,
|
||||||
params?: any,
|
config: any = {},
|
||||||
loginRequiredCallback?: any,
|
loginRequiredCallback?: any,
|
||||||
accessToken?: string
|
accessToken?: string
|
||||||
) {
|
) {
|
||||||
|
let requestResponse;
|
||||||
|
|
||||||
|
config = {
|
||||||
|
...this.sasjsConfig,
|
||||||
|
...config
|
||||||
|
}
|
||||||
|
|
||||||
sasJob = sasJob.startsWith("/") ? sasJob.replace("/", "") : sasJob;
|
sasJob = sasJob.startsWith("/") ? sasJob.replace("/", "") : sasJob;
|
||||||
|
|
||||||
if (
|
if (
|
||||||
this.sasjsConfig.serverType === ServerType.SASViya &&
|
config.serverType === ServerType.SASViya &&
|
||||||
this.sasjsConfig.contextName
|
config.contextName
|
||||||
) {
|
) {
|
||||||
if (this.sasjsConfig.useComputeApi) {
|
if (config.useComputeApi) {
|
||||||
return await this.executeJobViaComputeApi(
|
requestResponse = await this.executeJobViaComputeApi(
|
||||||
sasJob,
|
sasJob,
|
||||||
data,
|
data,
|
||||||
params,
|
config,
|
||||||
loginRequiredCallback,
|
loginRequiredCallback,
|
||||||
accessToken
|
accessToken
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
return await this.executeJobViaJesApi(
|
requestResponse = await this.executeJobViaJesApi(
|
||||||
sasJob,
|
sasJob,
|
||||||
data,
|
data,
|
||||||
params,
|
config,
|
||||||
loginRequiredCallback,
|
loginRequiredCallback,
|
||||||
accessToken
|
accessToken
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
return await this.executeJobViaJes(
|
requestResponse = await this.executeJobViaWeb(
|
||||||
sasJob,
|
sasJob,
|
||||||
data,
|
data,
|
||||||
params,
|
config,
|
||||||
loginRequiredCallback
|
loginRequiredCallback
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return requestResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -483,7 +494,7 @@ export default class SASjs {
|
|||||||
private async executeJobViaComputeApi(
|
private async executeJobViaComputeApi(
|
||||||
sasJob: string,
|
sasJob: string,
|
||||||
data: any,
|
data: any,
|
||||||
params?: any,
|
config: any,
|
||||||
loginRequiredCallback?: any,
|
loginRequiredCallback?: any,
|
||||||
accessToken?: string
|
accessToken?: string
|
||||||
) {
|
) {
|
||||||
@@ -494,8 +505,7 @@ export default class SASjs {
|
|||||||
reject: null,
|
reject: null,
|
||||||
},
|
},
|
||||||
SASjob: sasJob,
|
SASjob: sasJob,
|
||||||
data,
|
data
|
||||||
params,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
sasjsWaitingRequest.requestPromise.promise = new Promise(
|
sasjsWaitingRequest.requestPromise.promise = new Promise(
|
||||||
@@ -504,13 +514,13 @@ export default class SASjs {
|
|||||||
await this.sasViyaApiClient
|
await this.sasViyaApiClient
|
||||||
?.executeComputeJob(
|
?.executeComputeJob(
|
||||||
sasJob,
|
sasJob,
|
||||||
this.sasjsConfig.contextName,
|
config.contextName,
|
||||||
this.sasjsConfig.debug,
|
config.debug,
|
||||||
data,
|
data,
|
||||||
accessToken
|
accessToken
|
||||||
)
|
)
|
||||||
.then((response) => {
|
.then((response) => {
|
||||||
if (!this.sasjsConfig.debug) {
|
if (!config.debug) {
|
||||||
this.appendSasjsRequest(null, sasJob, null);
|
this.appendSasjsRequest(null, sasJob, null);
|
||||||
} else {
|
} else {
|
||||||
this.appendSasjsRequest(response, sasJob, null);
|
this.appendSasjsRequest(response, sasJob, null);
|
||||||
@@ -522,6 +532,7 @@ export default class SASjs {
|
|||||||
if (loginRequiredCallback) loginRequiredCallback(true);
|
if (loginRequiredCallback) loginRequiredCallback(true);
|
||||||
sasjsWaitingRequest.requestPromise.resolve = resolve;
|
sasjsWaitingRequest.requestPromise.resolve = resolve;
|
||||||
sasjsWaitingRequest.requestPromise.reject = reject;
|
sasjsWaitingRequest.requestPromise.reject = reject;
|
||||||
|
sasjsWaitingRequest.config = config;
|
||||||
this.sasjsWaitingRequests.push(sasjsWaitingRequest);
|
this.sasjsWaitingRequests.push(sasjsWaitingRequest);
|
||||||
} else {
|
} else {
|
||||||
reject({ MESSAGE: e || "Job execution failed" });
|
reject({ MESSAGE: e || "Job execution failed" });
|
||||||
@@ -536,7 +547,7 @@ export default class SASjs {
|
|||||||
private async executeJobViaJesApi(
|
private async executeJobViaJesApi(
|
||||||
sasJob: string,
|
sasJob: string,
|
||||||
data: any,
|
data: any,
|
||||||
params?: any,
|
config: any,
|
||||||
loginRequiredCallback?: any,
|
loginRequiredCallback?: any,
|
||||||
accessToken?: string
|
accessToken?: string
|
||||||
) {
|
) {
|
||||||
@@ -547,8 +558,7 @@ export default class SASjs {
|
|||||||
reject: null,
|
reject: null,
|
||||||
},
|
},
|
||||||
SASjob: sasJob,
|
SASjob: sasJob,
|
||||||
data,
|
data
|
||||||
params,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
sasjsWaitingRequest.requestPromise.promise = new Promise(
|
sasjsWaitingRequest.requestPromise.promise = new Promise(
|
||||||
@@ -559,19 +569,20 @@ export default class SASjs {
|
|||||||
if (loginRequiredCallback) loginRequiredCallback(true);
|
if (loginRequiredCallback) loginRequiredCallback(true);
|
||||||
sasjsWaitingRequest.requestPromise.resolve = resolve;
|
sasjsWaitingRequest.requestPromise.resolve = resolve;
|
||||||
sasjsWaitingRequest.requestPromise.reject = reject;
|
sasjsWaitingRequest.requestPromise.reject = reject;
|
||||||
|
sasjsWaitingRequest.config = config;
|
||||||
this.sasjsWaitingRequests.push(sasjsWaitingRequest);
|
this.sasjsWaitingRequests.push(sasjsWaitingRequest);
|
||||||
} else {
|
} else {
|
||||||
resolve(
|
resolve(
|
||||||
await this.sasViyaApiClient
|
await this.sasViyaApiClient
|
||||||
?.executeJob(
|
?.executeJob(
|
||||||
sasJob,
|
sasJob,
|
||||||
this.sasjsConfig.contextName,
|
config.contextName,
|
||||||
this.sasjsConfig.debug,
|
config.debug,
|
||||||
data,
|
data,
|
||||||
accessToken
|
accessToken
|
||||||
)
|
)
|
||||||
.then((response) => {
|
.then((response) => {
|
||||||
if (!this.sasjsConfig.debug) {
|
if (!config.debug) {
|
||||||
this.appendSasjsRequest(null, sasJob, null);
|
this.appendSasjsRequest(null, sasJob, null);
|
||||||
} else {
|
} else {
|
||||||
this.appendSasjsRequest(response, sasJob, null);
|
this.appendSasjsRequest(response, sasJob, null);
|
||||||
@@ -588,10 +599,10 @@ export default class SASjs {
|
|||||||
return sasjsWaitingRequest.requestPromise.promise;
|
return sasjsWaitingRequest.requestPromise.promise;
|
||||||
}
|
}
|
||||||
|
|
||||||
private async executeJobViaJes(
|
private async executeJobViaWeb(
|
||||||
sasJob: string,
|
sasJob: string,
|
||||||
data: any,
|
data: any,
|
||||||
params?: any,
|
config: any,
|
||||||
loginRequiredCallback?: any
|
loginRequiredCallback?: any
|
||||||
) {
|
) {
|
||||||
const sasjsWaitingRequest: SASjsWaitingRequest = {
|
const sasjsWaitingRequest: SASjsWaitingRequest = {
|
||||||
@@ -601,25 +612,22 @@ export default class SASjs {
|
|||||||
reject: null,
|
reject: null,
|
||||||
},
|
},
|
||||||
SASjob: sasJob,
|
SASjob: sasJob,
|
||||||
data,
|
data
|
||||||
params,
|
|
||||||
};
|
};
|
||||||
const program = this.sasjsConfig.appLoc
|
const program = config.appLoc
|
||||||
? this.sasjsConfig.appLoc.replace(/\/?$/, "/") + sasJob.replace(/^\//, "")
|
? config.appLoc.replace(/\/?$/, "/") + sasJob.replace(/^\//, "")
|
||||||
: sasJob;
|
: sasJob;
|
||||||
const jobUri =
|
const jobUri =
|
||||||
this.sasjsConfig.serverType === "SASVIYA"
|
config.serverType === "SASVIYA"
|
||||||
? await this.getJobUri(sasJob)
|
? await this.getJobUri(sasJob)
|
||||||
: "";
|
: "";
|
||||||
const apiUrl = `${this.sasjsConfig.serverUrl}${this.jobsPath}/?${
|
const apiUrl = `${config.serverUrl}${this.jobsPath}/?${
|
||||||
jobUri.length > 0
|
jobUri.length > 0
|
||||||
? "__program=" + program + "&_job=" + jobUri
|
? "__program=" + program + "&_job=" + jobUri
|
||||||
: "_program=" + program
|
: "_program=" + program
|
||||||
}`;
|
}`;
|
||||||
|
|
||||||
const inputParams = params ? params : {};
|
|
||||||
const requestParams = {
|
const requestParams = {
|
||||||
...inputParams,
|
|
||||||
...this.getRequestParams(),
|
...this.getRequestParams(),
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -631,7 +639,7 @@ export default class SASjs {
|
|||||||
if (data) {
|
if (data) {
|
||||||
const stringifiedData = JSON.stringify(data);
|
const stringifiedData = JSON.stringify(data);
|
||||||
if (
|
if (
|
||||||
this.sasjsConfig.serverType === ServerType.SAS9 ||
|
config.serverType === ServerType.SAS9 ||
|
||||||
stringifiedData.length > 500000 ||
|
stringifiedData.length > 500000 ||
|
||||||
stringifiedData.includes(";")
|
stringifiedData.includes(";")
|
||||||
) {
|
) {
|
||||||
@@ -725,7 +733,7 @@ export default class SASjs {
|
|||||||
|
|
||||||
if (
|
if (
|
||||||
response.redirected &&
|
response.redirected &&
|
||||||
this.sasjsConfig.serverType === ServerType.SAS9
|
config.serverType === ServerType.SAS9
|
||||||
) {
|
) {
|
||||||
isRedirected = true;
|
isRedirected = true;
|
||||||
}
|
}
|
||||||
@@ -739,7 +747,7 @@ export default class SASjs {
|
|||||||
) {
|
) {
|
||||||
if (this.retryCount < requestRetryLimit) {
|
if (this.retryCount < requestRetryLimit) {
|
||||||
this.retryCount++;
|
this.retryCount++;
|
||||||
this.request(sasJob, data, params).then(
|
this.request(sasJob, data).then(
|
||||||
(res: any) => resolve(res),
|
(res: any) => resolve(res),
|
||||||
(err: any) => reject(err)
|
(err: any) => reject(err)
|
||||||
);
|
);
|
||||||
@@ -755,11 +763,12 @@ export default class SASjs {
|
|||||||
if (loginRequiredCallback) loginRequiredCallback(true);
|
if (loginRequiredCallback) loginRequiredCallback(true);
|
||||||
sasjsWaitingRequest.requestPromise.resolve = resolve;
|
sasjsWaitingRequest.requestPromise.resolve = resolve;
|
||||||
sasjsWaitingRequest.requestPromise.reject = reject;
|
sasjsWaitingRequest.requestPromise.reject = reject;
|
||||||
|
sasjsWaitingRequest.config = config;
|
||||||
this.sasjsWaitingRequests.push(sasjsWaitingRequest);
|
this.sasjsWaitingRequests.push(sasjsWaitingRequest);
|
||||||
} else {
|
} else {
|
||||||
if (
|
if (
|
||||||
this.sasjsConfig.serverType === ServerType.SAS9 &&
|
config.serverType === ServerType.SAS9 &&
|
||||||
this.sasjsConfig.debug
|
config.debug
|
||||||
) {
|
) {
|
||||||
this.updateUsername(responseText);
|
this.updateUsername(responseText);
|
||||||
const jsonResponseText = this.parseSAS9Response(responseText);
|
const jsonResponseText = this.parseSAS9Response(responseText);
|
||||||
@@ -772,8 +781,8 @@ export default class SASjs {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
} else if (
|
} else if (
|
||||||
this.sasjsConfig.serverType === ServerType.SASViya &&
|
config.serverType === ServerType.SASViya &&
|
||||||
this.sasjsConfig.debug
|
config.debug
|
||||||
) {
|
) {
|
||||||
try {
|
try {
|
||||||
this.parseSASVIYADebugResponse(responseText).then(
|
this.parseSASVIYADebugResponse(responseText).then(
|
||||||
@@ -821,8 +830,7 @@ export default class SASjs {
|
|||||||
for (const sasjsWaitingRequest of this.sasjsWaitingRequests) {
|
for (const sasjsWaitingRequest of this.sasjsWaitingRequests) {
|
||||||
this.request(
|
this.request(
|
||||||
sasjsWaitingRequest.SASjob,
|
sasjsWaitingRequest.SASjob,
|
||||||
sasjsWaitingRequest.data,
|
sasjsWaitingRequest.data
|
||||||
sasjsWaitingRequest.params
|
|
||||||
).then(
|
).then(
|
||||||
(res: any) => {
|
(res: any) => {
|
||||||
sasjsWaitingRequest.requestPromise.resolve(res);
|
sasjsWaitingRequest.requestPromise.resolve(res);
|
||||||
|
|||||||
@@ -10,5 +10,5 @@ export interface SASjsWaitingRequest {
|
|||||||
};
|
};
|
||||||
SASjob: string;
|
SASjob: string;
|
||||||
data: any;
|
data: any;
|
||||||
params?: any;
|
config?: any;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user