mirror of
https://github.com/sasjs/adapter.git
synced 2026-01-15 16:10:06 +00:00
feat(edit-context): add the ability to edit a given context
This commit is contained in:
@@ -8,7 +8,14 @@ import {
|
|||||||
} from './utils'
|
} from './utils'
|
||||||
import * as NodeFormData from 'form-data'
|
import * as NodeFormData from 'form-data'
|
||||||
import * as path from 'path'
|
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 { JobDefinition } from './types/JobDefinition'
|
||||||
import { formatDataForRequest } from './utils/formatDataForRequest'
|
import { formatDataForRequest } from './utils/formatDataForRequest'
|
||||||
import { SessionManager } from './SessionManager'
|
import { SessionManager } from './SessionManager'
|
||||||
@@ -267,6 +274,53 @@ export class SASViyaApiClient {
|
|||||||
return context
|
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
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
// 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 })
|
||||||
|
}
|
||||||
|
|
||||||
|
return await this.request<Context>(
|
||||||
|
`${this.serverUrl}/compute/contexts/${contextId}`,
|
||||||
|
updateContextRequest
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Deletes a compute context on the given server.
|
* Deletes a compute context on the given server.
|
||||||
* @param contextId - the ID of the context to be deleted.
|
* @param contextId - the ID of the context to be deleted.
|
||||||
|
|||||||
24
src/SASjs.ts
24
src/SASjs.ts
@@ -29,7 +29,8 @@ import {
|
|||||||
SASjsWaitingRequest,
|
SASjsWaitingRequest,
|
||||||
ServerType,
|
ServerType,
|
||||||
CsrfToken,
|
CsrfToken,
|
||||||
UploadFile
|
UploadFile,
|
||||||
|
EditContextInput
|
||||||
} from './types'
|
} from './types'
|
||||||
import { SASViyaApiClient } from './SASViyaApiClient'
|
import { SASViyaApiClient } from './SASViyaApiClient'
|
||||||
import { SAS9ApiClient } from './SAS9ApiClient'
|
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.
|
* Deletes a compute context on the given server.
|
||||||
* @param contextId - the ID of the context to be deleted.
|
* @param contextId - the ID of the context to be deleted.
|
||||||
|
|||||||
@@ -4,3 +4,12 @@ export interface Context {
|
|||||||
createdBy: string
|
createdBy: string
|
||||||
version: number
|
version: number
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface EditContextInput {
|
||||||
|
name?: string
|
||||||
|
description?: string
|
||||||
|
launchContext?: { name: string }
|
||||||
|
environment?: { options?: string[]; autoExecLines?: string[] }
|
||||||
|
authorizedUsers?: string[]
|
||||||
|
authorizeAllAuthenticatedUsers?: boolean
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user