diff --git a/src/SASjs.ts b/src/SASjs.ts index 2b2fb6d..94e7f11 100644 --- a/src/SASjs.ts +++ b/src/SASjs.ts @@ -97,6 +97,17 @@ export default class SASjs { ) } + /** + * Executes code against a SAS JS server + * @param code - a string of code from the file to run. + * @param authConfig - (optional) a valid client, secret, refresh and access tokens that are authorised to execute scripts. + */ + public async executeScriptSASjs(code: string, authConfig?: AuthConfig) { + this.isMethodSupported('executeScriptSASJS', [ServerType.Sasjs]) + + return await this.sasJSApiClient?.executeScript(code, authConfig) + } + /** * Executes sas code in a SAS Viya compute session. * @param fileName - name of the file to run. It will be converted to path to the file being submitted for execution. diff --git a/src/SASjsApiClient.ts b/src/SASjsApiClient.ts index c0a4268..a3600f7 100644 --- a/src/SASjsApiClient.ts +++ b/src/SASjsApiClient.ts @@ -60,6 +60,28 @@ export class SASjsApiClient { return Promise.resolve(result) } + /** + * Executes code on a SASJS server. + * @param serverUrl - a server url to execute code. + * @param code - a string of code to execute. + */ + public async executeScript(code: string, authConfig?: AuthConfig) { + let access_token = (authConfig || {}).access_token + if (authConfig) { + ;({ access_token } = await getTokens( + this.requestClient, + authConfig, + ServerType.Sasjs + )) + } + const response = await this.requestClient.post( + 'SASjsApi/code/execute', + { code }, + access_token + ) + return response.result as string + } + /** * Exchanges the auth code for an access token for the given client. * @param clientId - the client ID to authenticate with.