diff --git a/src/SASjs.ts b/src/SASjs.ts index 2728f16..54f05b7 100644 --- a/src/SASjs.ts +++ b/src/SASjs.ts @@ -5,9 +5,8 @@ import { EditContextInput, PollOptions, LoginMechanism, - FolderMember, - ServiceMember, - ExecutionQuery + ExecutionQuery, + FileTree } from './types' import { SASViyaApiClient } from './SASViyaApiClient' import { SAS9ApiClient } from './SAS9ApiClient' @@ -865,8 +864,22 @@ export default class SASjs { ) } - public async deployToSASjs(members: [FolderMember, ServiceMember]) { - return await this.sasJSApiClient?.deploy(members, this.sasjsConfig.appLoc) + /** + * Creates the folders and services at the given location `appLoc` on the given server `serverUrl`. + * @param members - the JSON specifying the folders and services to be created. + * @param appLoc - the base folder in which to create the new folders and + * services. If not provided, is taken from SASjsConfig. + * @param authConfig - a valid client, secret, refresh and access tokens that are authorised to execute compute jobs. + */ + public async deployToSASjs( + members: FileTree, + appLoc?: string, + authConfig?: AuthConfig + ) { + if (!appLoc) { + appLoc = this.sasjsConfig.appLoc + } + return await this.sasJSApiClient?.deploy(members, appLoc, authConfig) } public async executeJobSASjs(query: ExecutionQuery) { diff --git a/src/SASjsApiClient.ts b/src/SASjsApiClient.ts index 73ed694..2706e94 100644 --- a/src/SASjsApiClient.ts +++ b/src/SASjsApiClient.ts @@ -1,8 +1,10 @@ -import { FolderMember, ServiceMember, ExecutionQuery } from './types' +import { AuthConfig, ServerType } from '@sasjs/utils/types' +import { FileTree, ExecutionQuery } from './types' import { RequestClient } from './request/RequestClient' import { getAccessTokenForSasjs } from './auth/getAccessTokenForSasjs' import { refreshTokensForSasjs } from './auth/refreshTokensForSasjs' import { getAuthCodeForSasjs } from './auth/getAuthCodeForSasjs' +import { getTokens } from './auth/getTokens' export class SASjsApiClient { constructor( @@ -14,7 +16,19 @@ export class SASjsApiClient { if (serverUrl) this.serverUrl = serverUrl } - public async deploy(members: [FolderMember, ServiceMember], appLoc: string) { + public async deploy( + members: FileTree, + appLoc: string, + authConfig?: AuthConfig + ) { + let access_token = (authConfig || {}).access_token + if (authConfig) { + ;({ access_token } = await getTokens( + this.requestClient, + authConfig, + ServerType.Sasjs + )) + } const { result } = await this.requestClient.post<{ status: string message: string @@ -22,7 +36,7 @@ export class SASjsApiClient { }>( 'SASjsApi/drive/deploy', { fileTree: members, appLoc: appLoc }, - undefined + access_token ) return Promise.resolve(result)