1
0
mirror of https://github.com/sasjs/adapter.git synced 2025-12-11 01:14:36 +00:00

Merge pull request #637 from sasjs/sasjs-server-deployment-with-auth

fix(SASJS): sasjs server deployment with auth + refresh token bug
This commit is contained in:
Allan Bowe
2022-02-11 18:20:35 +02:00
committed by GitHub
2 changed files with 35 additions and 8 deletions

View File

@@ -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) {

View File

@@ -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)