mirror of
https://github.com/sasjs/adapter.git
synced 2025-12-11 01:14:36 +00:00
Merge branch 'master' into issue77
This commit is contained in:
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
224
docs/classes/reflection-706.reflection-178.fileuploader.html
Normal file
224
docs/classes/reflection-706.reflection-178.fileuploader.html
Normal file
File diff suppressed because one or more lines are too long
297
docs/classes/reflection-706.reflection-178.sas9apiclient.html
Normal file
297
docs/classes/reflection-706.reflection-178.sas9apiclient.html
Normal file
File diff suppressed because one or more lines are too long
1218
docs/classes/reflection-706.reflection-178.sasjs.html
Normal file
1218
docs/classes/reflection-706.reflection-178.sasjs.html
Normal file
File diff suppressed because one or more lines are too long
1163
docs/classes/reflection-706.reflection-178.sasviyaapiclient.html
Normal file
1163
docs/classes/reflection-706.reflection-178.sasviyaapiclient.html
Normal file
File diff suppressed because one or more lines are too long
260
docs/classes/reflection-706.reflection-178.sessionmanager.html
Normal file
260
docs/classes/reflection-706.reflection-178.sessionmanager.html
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
252
docs/interfaces/types.editcontextinput.html
Normal file
252
docs/interfaces/types.editcontextinput.html
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
107
docs/modules/reflection-706.html
Normal file
107
docs/modules/reflection-706.html
Normal file
File diff suppressed because one or more lines are too long
129
docs/modules/reflection-706.reflection-178.html
Normal file
129
docs/modules/reflection-706.reflection-178.html
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -8,7 +8,14 @@ import {
|
||||
} from './utils'
|
||||
import * as NodeFormData from 'form-data'
|
||||
import * as path from 'path'
|
||||
import { Job, Session, Context, Folder, CsrfToken } from './types'
|
||||
import {
|
||||
Job,
|
||||
Session,
|
||||
Context,
|
||||
Folder,
|
||||
CsrfToken,
|
||||
EditContextInput
|
||||
} from './types'
|
||||
import { JobDefinition } from './types/JobDefinition'
|
||||
import { formatDataForRequest } from './utils/formatDataForRequest'
|
||||
import { SessionManager } from './SessionManager'
|
||||
@@ -267,6 +274,68 @@ export class SASViyaApiClient {
|
||||
return context
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates a compute context on the given server.
|
||||
* @param contextId - the ID of the context to be deleted.
|
||||
* @param editedContext - an object with the properties to be updated.
|
||||
* @param accessToken - an access token for an authorized user.
|
||||
*/
|
||||
public async editContext(
|
||||
contextId: string,
|
||||
updatedContext: EditContextInput,
|
||||
accessToken?: string
|
||||
) {
|
||||
if (!contextId) {
|
||||
throw new Error('Invalid context ID.')
|
||||
}
|
||||
|
||||
const headers: any = {
|
||||
'Content-Type': 'application/json'
|
||||
}
|
||||
|
||||
if (accessToken) {
|
||||
headers.Authorization = `Bearer ${accessToken}`
|
||||
}
|
||||
|
||||
const { result: context, etag } = await this.request<Context>(
|
||||
`${this.serverUrl}/compute/contexts/${contextId}`,
|
||||
{
|
||||
headers
|
||||
}
|
||||
).catch((e) => {
|
||||
console.error(e)
|
||||
|
||||
if (e && e.status === 404) {
|
||||
throw new Error(
|
||||
`The context with ID ${contextId} was not found on this server.`
|
||||
)
|
||||
}
|
||||
throw new Error(
|
||||
`An error occurred when fetching the context with ID ${contextId}`
|
||||
)
|
||||
})
|
||||
|
||||
// An If-Match header with the value of the last ETag for the context
|
||||
// is required to be able to update it
|
||||
// https://developer.sas.com/apis/rest/Compute/#update-a-context-definition
|
||||
headers['If-Match'] = etag
|
||||
|
||||
const updateContextRequest: RequestInit = {
|
||||
method: 'PUT',
|
||||
headers,
|
||||
body: JSON.stringify({
|
||||
...context,
|
||||
...updatedContext,
|
||||
attributes: { ...context.attributes, ...updatedContext.attributes }
|
||||
})
|
||||
}
|
||||
|
||||
return await this.request<Context>(
|
||||
`${this.serverUrl}/compute/contexts/${contextId}`,
|
||||
updateContextRequest
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes a compute context on the given server.
|
||||
* @param contextId - the ID of the context to be deleted.
|
||||
|
||||
24
src/SASjs.ts
24
src/SASjs.ts
@@ -29,7 +29,8 @@ import {
|
||||
SASjsWaitingRequest,
|
||||
ServerType,
|
||||
CsrfToken,
|
||||
UploadFile
|
||||
UploadFile,
|
||||
EditContextInput
|
||||
} from './types'
|
||||
import { SASViyaApiClient } from './SASViyaApiClient'
|
||||
import { SAS9ApiClient } from './SAS9ApiClient'
|
||||
@@ -137,6 +138,27 @@ export default class SASjs {
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates a compute context on the given server.
|
||||
* @param contextId - the ID of the context to be deleted.
|
||||
* @param editedContext - an object with the properties to be updated.
|
||||
* @param accessToken - an access token for an authorized user.
|
||||
*/
|
||||
public async editContext(
|
||||
contextId: string,
|
||||
editedContext: EditContextInput,
|
||||
accessToken?: string
|
||||
) {
|
||||
if (this.sasjsConfig.serverType !== ServerType.SASViya) {
|
||||
throw new Error('This operation is only supported on SAS Viya servers.')
|
||||
}
|
||||
return await this.sasViyaApiClient!.editContext(
|
||||
contextId,
|
||||
editedContext,
|
||||
accessToken
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes a compute context on the given server.
|
||||
* @param contextId - the ID of the context to be deleted.
|
||||
|
||||
@@ -24,6 +24,7 @@ export class SessionManager {
|
||||
(new Date().getTime() - new Date(session!.creationTimeStamp).getTime()) /
|
||||
1000
|
||||
if (
|
||||
!session!.attributes ||
|
||||
secondsSinceSessionCreation >= session!.attributes.sessionInactiveTimeout
|
||||
) {
|
||||
await this.createSessions(accessToken)
|
||||
|
||||
@@ -3,4 +3,15 @@ export interface Context {
|
||||
id: string
|
||||
createdBy: string
|
||||
version: number
|
||||
attributes?: any
|
||||
}
|
||||
|
||||
export interface EditContextInput {
|
||||
name?: string
|
||||
description?: string
|
||||
launchContext?: { name: string }
|
||||
environment?: { options?: string[]; autoExecLines?: string[] }
|
||||
attributes?: any
|
||||
authorizedUsers?: string[]
|
||||
authorizeAllAuthenticatedUsers?: boolean
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user