From ed5dabee9fdf3180be8d0bb2d58c2089b36a4841 Mon Sep 17 00:00:00 2001 From: Krishna Acondy Date: Tue, 5 Jan 2021 19:37:40 +0000 Subject: [PATCH] fix(relative-paths): process relative and absolute paths the same way --- src/SASViyaApiClient.ts | 99 ++++++++++++----------------------------- 1 file changed, 29 insertions(+), 70 deletions(-) diff --git a/src/SASViyaApiClient.ts b/src/SASViyaApiClient.ts index b7a75c9..edbf002 100644 --- a/src/SASViyaApiClient.ts +++ b/src/SASViyaApiClient.ts @@ -833,23 +833,20 @@ export class SASViyaApiClient { ) } - if (isRelativePath(sasJob)) { - const folderName = sasJob.split('/')[0] - await this.populateFolderMap( - `${this.rootFolderName}/${folderName}`, - accessToken - ) + const folderPathParts = sasJob.split('/') + const jobName = folderPathParts.pop() + const folderPath = folderPathParts.join('/') + const fullFolderPath = isRelativePath(sasJob) + ? `${this.rootFolderName}/${folderPath}` + : folderPath - if (!this.folderMap.get(`${this.rootFolderName}/${folderName}`)) { - throw new Error( - `The folder '${folderName}' was not found at '${this.serverUrl}/${this.rootFolderName}'` - ) - } - } else { - const folderPathParts = sasJob.split('/') - folderPathParts.pop() - const folderPath = folderPathParts.join('/') - await this.populateFolderMap(folderPath, accessToken) + await this.populateFolderMap(fullFolderPath, accessToken) + + const jobFolder = this.folderMap.get(fullFolderPath) + if (!jobFolder) { + throw new Error( + `The folder '${fullFolderPath}' was not found on '${this.serverUrl}'` + ) } const headers: any = { 'Content-Type': 'application/json' } @@ -857,21 +854,7 @@ export class SASViyaApiClient { headers.Authorization = `Bearer ${accessToken}` } - let jobToExecute - if (isRelativePath(sasJob)) { - const folderName = sasJob.split('/')[0] - const jobName = sasJob.split('/')[1] - const jobFolder = this.folderMap.get( - `${this.rootFolderName}/${folderName}` - ) - jobToExecute = jobFolder?.find((item) => item.name === jobName) - } else { - const folderPathParts = sasJob.split('/') - const jobName = folderPathParts.pop() - const folderPath = folderPathParts.join('/') - const jobFolder = this.folderMap.get(folderPath) - jobToExecute = jobFolder?.find((item) => item.name === jobName) - } + const jobToExecute = jobFolder?.find((item) => item.name === jobName) if (!jobToExecute) { throw new Error(`Job was not found.`) @@ -937,52 +920,28 @@ export class SASViyaApiClient { ) } - if (isRelativePath(sasJob)) { - const folderName = sasJob.split('/')[0] - await this.populateFolderMap( - `${this.rootFolderName}/${folderName}`, - accessToken - ) + const folderPathParts = sasJob.split('/') + const jobName = folderPathParts.pop() + const folderPath = folderPathParts.join('/') + const fullFolderPath = isRelativePath(sasJob) + ? `${this.rootFolderName}/${folderPath}` + : folderPath + await this.populateFolderMap(fullFolderPath, accessToken) - if (!this.folderMap.get(`${this.rootFolderName}/${folderName}`)) { - throw new Error( - `The folder '${folderName}' was not found at '${this.serverUrl}/${this.rootFolderName}'.` - ) - } - } else { - const folderPathParts = sasJob.split('/') - folderPathParts.pop() - const folderPath = folderPathParts.join('/') - await this.populateFolderMap(folderPath, accessToken) - if (!this.folderMap.get(folderPath)) { - throw new Error( - `The folder '${folderPath}' was not found at '${this.serverUrl}'.` - ) - } + const jobFolder = this.folderMap.get(fullFolderPath) + if (!jobFolder) { + throw new Error( + `The folder '${fullFolderPath}' was not found on '${this.serverUrl}'.` + ) } + const jobToExecute = jobFolder?.find((item) => item.name === jobName) + let files: any[] = [] if (data && Object.keys(data).length) { files = await this.uploadTables(data, accessToken) } - let jobToExecute: Job | undefined - let jobName: string | undefined - let jobPath: string | undefined - if (isRelativePath(sasJob)) { - const folderName = sasJob.split('/')[0] - jobName = sasJob.split('/')[1] - jobPath = `${this.rootFolderName}/${folderName}` - const jobFolder = this.folderMap.get(jobPath) - jobToExecute = jobFolder?.find((item) => item.name === jobName) - } else { - const folderPathParts = sasJob.split('/') - jobName = folderPathParts.pop() - jobPath = folderPathParts.join('/') - const jobFolder = this.folderMap.get(jobPath) - jobToExecute = jobFolder?.find((item) => item.name === jobName) - } - if (!jobToExecute) { throw new Error(`Job was not found.`) } @@ -1007,7 +966,7 @@ export class SASViyaApiClient { const jobArguments: { [key: string]: any } = { _contextName: contextName, - _program: `${jobPath}/${jobName}`, + _program: `${fullFolderPath}/${jobName}`, _webin_file_count: files.length, _OMITJSONLISTING: true, _OMITJSONLOG: true,