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..a4bdbe8 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 @@ -46,7 +47,7 @@ export class WebJobExecutor extends BaseJobExecutor { authConfig?: AuthConfig, extraResponseAttributes: ExtraResponseAttributes[] = [] ) { - const loginCallback = loginRequiredCallback || (() => Promise.resolve()) + const loginCallback = loginRequiredCallback const program = isRelativePath(sasJob) ? config.appLoc ? config.appLoc.replace(/\/?$/, '/') + sasJob.replace(/^\//, '') @@ -79,7 +80,7 @@ export class WebJobExecutor extends BaseJobExecutor { ) }) - await loginCallback() + if (loginCallback) await loginCallback() } else { reject(new ErrorResponse(e?.message, e)) } @@ -220,6 +221,15 @@ export class WebJobExecutor extends BaseJobExecutor { } if (e instanceof LoginRequiredError) { + if (!loginRequiredCallback) { + reject( + new ErrorResponse( + 'Request is not authenticated. Make sure .env file exists with valid credentials.', + e + ) + ) + } + this.appendWaitingRequest(() => { return this.execute( sasJob, @@ -238,7 +248,7 @@ export class WebJobExecutor extends BaseJobExecutor { ) }) - await loginCallback() + if (loginCallback) await loginCallback() } else { reject(new ErrorResponse(e?.message, e)) }