diff --git a/src/SASViyaApiClient.ts b/src/SASViyaApiClient.ts index fe5b644..20a6f02 100644 --- a/src/SASViyaApiClient.ts +++ b/src/SASViyaApiClient.ts @@ -891,22 +891,26 @@ export class SASViyaApiClient { const jobName = sasJob.split('/')[1] const jobFolder = this.rootFolderMap.get(folderName) const jobToExecute = jobFolder?.find((item) => item.name === jobName) + if (!jobToExecute) { throw new Error('Job was not found.') } let code = jobToExecute?.code + if (!code) { const jobDefinitionLink = jobToExecute?.links.find( (l) => l.rel === 'getResource' ) + if (!jobDefinitionLink) { console.error('Job definition URI was not found.') throw new Error('Job definition URI was not found.') } + const { result: jobDefinition } = await this.request( `${this.serverUrl}${jobDefinitionLink.href}`, - headers + { headers } ) code = jobDefinition.code @@ -914,6 +918,7 @@ export class SASViyaApiClient { // Add code to existing job definition jobToExecute.code = code } + const linesToExecute = code.replace(/\r\n/g, '\n').split('\n') return await this.executeScript( sasJob, @@ -965,6 +970,7 @@ export class SASViyaApiClient { const jobName = path.basename(sasJob) const jobFolder = sasJob.replace(`/${jobName}`, '') const allJobsInFolder = this.rootFolderMap.get(jobFolder.replace('/', '')) + if (allJobsInFolder) { const jobSpec = allJobsInFolder.find((j: Job) => j.name === jobName) const jobDefinitionLink = jobSpec?.links.find( @@ -974,10 +980,13 @@ export class SASViyaApiClient { method: 'GET' } const headers: any = { 'Content-Type': 'application/json' } + if (!!accessToken) { headers.Authorization = `Bearer ${accessToken}` } + requestInfo.headers = headers + const { result: jobDefinition } = await this.request( `${this.serverUrl}${jobDefinitionLink}`, requestInfo diff --git a/src/SASjs.ts b/src/SASjs.ts index 6c829c7..1818dec 100644 --- a/src/SASjs.ts +++ b/src/SASjs.ts @@ -728,7 +728,7 @@ export default class SASjs { async (resolve, reject) => { const session = await this.checkSession() - if (!session.isLoggedIn) { + if (!session.isLoggedIn && !accessToken) { if (loginRequiredCallback) loginRequiredCallback(true) sasjsWaitingRequest.requestPromise.resolve = resolve sasjsWaitingRequest.requestPromise.reject = reject diff --git a/src/utils/makeRequest.ts b/src/utils/makeRequest.ts index a566251..30a1188 100644 --- a/src/utils/makeRequest.ts +++ b/src/utils/makeRequest.ts @@ -17,6 +17,7 @@ export async function makeRequest( ? (res: Response) => res.json() : (res: Response) => res.text() let etag = null + const result = await fetch(url, request).then(async (response) => { if (response.redirected && response.url.includes('SASLogon/login')) { return Promise.reject({ status: 401 })