1
0
mirror of https://github.com/sasjs/adapter.git synced 2026-01-18 17:40:06 +00:00

feat: request config override

This commit is contained in:
Mihajlo Medjedovic
2020-07-19 16:10:56 +02:00
parent 8bf74d17e9
commit c7d6c66093

View File

@@ -42,7 +42,8 @@ const requestRetryLimit = 5;
* *
*/ */
export default class SASjs { export default class SASjs {
private sasjsConfig = new SASjsConfig(); private globalSasjsConfig: 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 = "";
@@ -60,8 +61,9 @@ export default class SASjs {
...defaultConfig, ...defaultConfig,
...config, ...config,
}; };
this.setupConfiguration(); this.setupConfiguration();
this.globalSasjsConfig = { ...this.sasjsConfig };
} }
public async executeScriptSAS9( public async executeScriptSAS9(
@@ -383,40 +385,51 @@ export default class SASjs {
public async request( public async request(
sasJob: string, sasJob: string,
data: any, data: any,
params?: any, config?: SASjsConfig,
loginRequiredCallback?: any, loginRequiredCallback?: any,
accessToken?: string accessToken?: string
) { ) {
let requestResponse;
if (config) {
this.sasjsConfig = {
...this.globalSasjsConfig,
...config
};
}
sasJob = sasJob.startsWith("/") ? sasJob.replace("/", "") : sasJob; sasJob = sasJob.startsWith("/") ? sasJob.replace("/", "") : sasJob;
if ( if (
this.sasjsConfig.serverType === ServerType.SASViya && this.sasjsConfig.serverType === ServerType.SASViya &&
this.sasjsConfig.contextName this.sasjsConfig.contextName
) { ) {
if (this.sasjsConfig.useComputeApi) { if (this.sasjsConfig.useComputeApi) {
return await this.executeJobViaComputeApi( requestResponse = await this.executeJobViaComputeApi(
sasJob, sasJob,
data, data,
params,
loginRequiredCallback, loginRequiredCallback,
accessToken accessToken
); );
} else { } else {
return await this.executeJobViaJesApi( requestResponse = await this.executeJobViaJesApi(
sasJob, sasJob,
data, data,
params,
loginRequiredCallback, loginRequiredCallback,
accessToken accessToken
); );
} }
} else { } else {
return await this.executeJobViaJes( requestResponse = await this.executeJobViaWeb(
sasJob, sasJob,
data, data,
params,
loginRequiredCallback loginRequiredCallback
); );
} }
this.sasjsConfig = this.globalSasjsConfig;
return requestResponse;
} }
/** /**
@@ -482,7 +495,6 @@ export default class SASjs {
private async executeJobViaComputeApi( private async executeJobViaComputeApi(
sasJob: string, sasJob: string,
data: any, data: any,
params?: any,
loginRequiredCallback?: any, loginRequiredCallback?: any,
accessToken?: string accessToken?: string
) { ) {
@@ -493,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(
@@ -535,7 +546,6 @@ export default class SASjs {
private async executeJobViaJesApi( private async executeJobViaJesApi(
sasJob: string, sasJob: string,
data: any, data: any,
params?: any,
loginRequiredCallback?: any, loginRequiredCallback?: any,
accessToken?: string accessToken?: string
) { ) {
@@ -546,8 +556,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(
@@ -587,10 +596,9 @@ 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,
loginRequiredCallback?: any loginRequiredCallback?: any
) { ) {
const sasjsWaitingRequest: SASjsWaitingRequest = { const sasjsWaitingRequest: SASjsWaitingRequest = {
@@ -600,8 +608,7 @@ export default class SASjs {
reject: null, reject: null,
}, },
SASjob: sasJob, SASjob: sasJob,
data, data
params,
}; };
const program = this.sasjsConfig.appLoc const program = this.sasjsConfig.appLoc
? this.sasjsConfig.appLoc.replace(/\/?$/, "/") + sasJob.replace(/^\//, "") ? this.sasjsConfig.appLoc.replace(/\/?$/, "/") + sasJob.replace(/^\//, "")
@@ -615,10 +622,8 @@ export default class SASjs {
? "__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(),
}; };
@@ -736,7 +741,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)
); );
@@ -814,8 +819,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);