From a579f481c5b69396065ee6b49945320735ed3be8 Mon Sep 17 00:00:00 2001 From: Krishna Acondy Date: Thu, 16 Jul 2020 17:31:03 +0100 Subject: [PATCH] fix(context): cache contexts after first request --- src/SASViyaApiClient.ts | 45 ++++++++++++++++++++++------------------- 1 file changed, 24 insertions(+), 21 deletions(-) diff --git a/src/SASViyaApiClient.ts b/src/SASViyaApiClient.ts index 7fa8f09..07d5ad6 100644 --- a/src/SASViyaApiClient.ts +++ b/src/SASViyaApiClient.ts @@ -97,17 +97,14 @@ export class SASViyaApiClient { headers.Authorization = `Bearer ${accessToken}`; } - if (!this.contexts.length) { - const { result: contexts } = await this.request<{ items: Context[] }>( - `${this.serverUrl}/compute/contexts`, - { headers } - ); - - this.contexts = contexts && contexts.items ? contexts.items : []; - } + const { result: contexts } = await this.request<{ items: Context[] }>( + `${this.serverUrl}/compute/contexts`, + { headers } + ); + const contextsList = contexts && contexts.items ? contexts.items : []; const executableContexts: any[] = []; - const promises = this.contexts.map((context: any) => { + const promises = contextsList.map((context: any) => { const linesOfCode = ["%put &=sysuserid;"]; return this.executeScript( `test-${context.name}`, @@ -132,10 +129,10 @@ export class SASViyaApiClient { } executableContexts.push({ - createdBy: this.contexts[index].createdBy, - id: this.contexts[index].id, - name: this.contexts[index].name, - version: this.contexts[index].version, + createdBy: contextsList[index].createdBy, + id: contextsList[index].id, + name: contextsList[index].name, + version: contextsList[index].version, attributes: { sysUserId, }, @@ -215,14 +212,20 @@ export class SASViyaApiClient { if (this.csrfToken) { headers[this.csrfToken.headerName] = this.csrfToken.value; } - const { result: contexts } = await this.request<{ items: Context[] }>( - `${this.serverUrl}/compute/contexts`, - { headers } + if (!this.contexts.length) { + const { result: contexts } = await this.request<{ items: Context[] }>( + `${this.serverUrl}/compute/contexts`, + { headers } + ); + + this.contexts = + contexts && contexts.items && contexts.items.length + ? contexts.items + : []; + } + const executionContext = this.contexts.find( + (c: any) => c.name === contextName ); - const executionContext = - contexts.items && contexts.items.length - ? contexts.items.find((c: any) => c.name === contextName) - : null; if (executionContext) { // Request new session in context or use the ID passed in @@ -345,7 +348,7 @@ export class SASViyaApiClient { console.error( `Unable to find execution context ${contextName}.\nPlease check the contextName in the tgtDeployVars and try again.` ); - console.error("Response from server: ", JSON.stringify(contexts)); + console.error("Response from server: ", JSON.stringify(this.contexts)); } }