From a5c725e67784dde2a7e050de2a989da9effc9c76 Mon Sep 17 00:00:00 2001 From: Mihajlo Medjedovic Date: Mon, 10 Aug 2020 17:05:10 +0200 Subject: [PATCH] fix: makeRequest incositent response structure --- src/SASViyaApiClient.ts | 17 ++++++++++++++--- src/utils/makeRequest.ts | 6 ++++-- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/SASViyaApiClient.ts b/src/SASViyaApiClient.ts index 8e18f61..90305c9 100644 --- a/src/SASViyaApiClient.ts +++ b/src/SASViyaApiClient.ts @@ -208,12 +208,15 @@ export class SASViyaApiClient { debug = false ) { silent = !debug; + const headers: any = { "Content-Type": "application/json", }; + if (accessToken) { headers.Authorization = `Bearer ${accessToken}`; } + let executionSessionId: string; const session = await this.sessionManager.getSession(accessToken); executionSessionId = session!.id; @@ -241,7 +244,9 @@ export class SASViyaApiClient { SYS_JES_JOB_URI: "", _program: this.rootFolderName + "/" + jobName, }; + let files: any[] = []; + if (data) { if (JSON.stringify(data).includes(";")) { files = await this.uploadTables(data, accessToken); @@ -269,10 +274,12 @@ export class SASViyaApiClient { arguments: jobArguments, }), }; + const { result: postedJob, etag } = await this.request( `${this.serverUrl}/compute/sessions/${executionSessionId}/jobs`, postJobRequest ); + if (!silent) { console.log(`Job has been submitted for ${fileName}`); console.log( @@ -288,17 +295,20 @@ export class SASViyaApiClient { accessToken, silent ); + const { result: currentJob } = await this.request( `${this.serverUrl}/compute/sessions/${executionSessionId}/jobs/${postedJob.id}`, { headers } ); let jobResult, log; + if (jobStatus === "failed" || jobStatus === "error") { return Promise.reject(currentJob.error); } const resultLink = `/compute/sessions/${executionSessionId}/filerefs/_webout/content`; const logLink = currentJob.links.find((l) => l.rel === "log"); + if (resultLink) { jobResult = await this.request( `${this.serverUrl}${resultLink}`, @@ -708,11 +718,12 @@ export class SASViyaApiClient { `The job ${sasJob} was not found in ${this.rootFolderName}` ); } - + let files: any[] = []; if (data && Object.keys(data).length) { files = await this.uploadTables(data, accessToken); } + const jobName = path.basename(sasJob); const jobFolder = sasJob.replace(`/${jobName}`, ""); const allJobsInFolder = this.rootFolderMap.get(jobFolder.replace("/", "")); @@ -1007,12 +1018,12 @@ export class SASViyaApiClient { headers, }; - const { result: file } = await this.request( + const uploadResponse = await this.request( `${this.serverUrl}/files/files#rawUpload`, createFileRequest ); - uploadedFiles.push({ tableName, file }); + uploadedFiles.push({ tableName, file: uploadResponse.result }); } return uploadedFiles; } diff --git a/src/utils/makeRequest.ts b/src/utils/makeRequest.ts index f8c3bd4..ccb7a09 100644 --- a/src/utils/makeRequest.ts +++ b/src/utils/makeRequest.ts @@ -55,7 +55,8 @@ export async function makeRequest( ); retryCount = 0; - return retryResponse; + etag = retryResponse.etag; + return retryResponse.result; } else { retryCount = 0; @@ -89,7 +90,8 @@ export async function makeRequest( ); retryCount = 0; - return retryResponse; + etag = retryResponse.etag; + return retryResponse.result; } else { retryCount = 0;