diff --git a/src/SASjs.ts b/src/SASjs.ts index ac83240..f554947 100644 --- a/src/SASjs.ts +++ b/src/SASjs.ts @@ -916,8 +916,8 @@ export default class SASjs { return await this.sasJSApiClient?.deploy(dataJson, appLoc, authConfig) } - public async executeJobSASjs(query: ExecutionQuery) { - return await this.sasJSApiClient?.executeJob(query) + public async executeJobSASjs(query: ExecutionQuery, authConfig?: AuthConfig) { + return await this.sasJSApiClient?.executeJob(query, authConfig) } /** diff --git a/src/SASjsApiClient.ts b/src/SASjsApiClient.ts index b152f5d..af17911 100644 --- a/src/SASjsApiClient.ts +++ b/src/SASjsApiClient.ts @@ -43,7 +43,9 @@ export class SASjsApiClient { return Promise.resolve(result) } - public async executeJob(query: ExecutionQuery) { + public async executeJob(query: ExecutionQuery, authConfig?: AuthConfig) { + const access_token = authConfig ? authConfig.access_token : undefined + const { result } = await this.requestClient.post<{ status: string message: string @@ -51,7 +53,7 @@ export class SASjsApiClient { logPath?: string error?: {} _webout?: string - }>('SASjsApi/stp/execute', query, undefined) + }>('SASjsApi/stp/execute', query, access_token) if (Object.keys(result).includes('_webout')) { result._webout = parseWeboutResponse(result._webout!) diff --git a/src/job-execution/WebJobExecutor.ts b/src/job-execution/WebJobExecutor.ts index f3c3031..187bc9c 100644 --- a/src/job-execution/WebJobExecutor.ts +++ b/src/job-execution/WebJobExecutor.ts @@ -21,6 +21,7 @@ import { } from '../utils' import { BaseJobExecutor } from './JobExecutor' import { parseWeboutResponse } from '../utils/parseWeboutResponse' +import { Server } from 'https' export interface WaitingRequstPromise { promise: Promise | null @@ -220,25 +221,36 @@ export class WebJobExecutor extends BaseJobExecutor { } if (e instanceof LoginRequiredError) { - this.appendWaitingRequest(() => { - return this.execute( - sasJob, - data, - config, - loginRequiredCallback, - authConfig, - extraResponseAttributes - ).then( - (res: any) => { - resolve(res) - }, - (err: any) => { - reject(err) - } - ) - }) + switch (this.serverType) { + case ServerType.Sasjs: + reject( + new ErrorResponse( + 'Request is not authenticated. Make sure .env file exists with valid credentials.', + e + ) + ) + break + default: + this.appendWaitingRequest(() => { + return this.execute( + sasJob, + data, + config, + loginRequiredCallback, + authConfig, + extraResponseAttributes + ).then( + (res: any) => { + resolve(res) + }, + (err: any) => { + reject(err) + } + ) + }) - await loginCallback() + await loginCallback() + } } else { reject(new ErrorResponse(e?.message, e)) }