mirror of
https://github.com/sasjs/adapter.git
synced 2026-01-07 20:40:05 +00:00
Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
140d8e4eac | ||
|
|
0d730e0576 | ||
|
|
ca18fcecf0 | ||
|
|
009069169f | ||
|
|
6d166efd11 | ||
|
|
1b117a67aa | ||
|
|
9037160362 |
@@ -17,7 +17,8 @@ import {
|
|||||||
CsrfToken,
|
CsrfToken,
|
||||||
EditContextInput,
|
EditContextInput,
|
||||||
ErrorResponse,
|
ErrorResponse,
|
||||||
JobDefinition
|
JobDefinition,
|
||||||
|
PollOptions
|
||||||
} from './types'
|
} from './types'
|
||||||
import { formatDataForRequest } from './utils/formatDataForRequest'
|
import { formatDataForRequest } from './utils/formatDataForRequest'
|
||||||
import { SessionManager } from './SessionManager'
|
import { SessionManager } from './SessionManager'
|
||||||
@@ -428,6 +429,7 @@ export class SASViyaApiClient {
|
|||||||
* @param debug - when set to true, the log will be returned.
|
* @param debug - when set to true, the log will be returned.
|
||||||
* @param expectWebout - when set to true, the automatic _webout fileref will be checked for content, and that content returned. This fileref is used when the Job contains a SASjs web request (as opposed to executing arbitrary SAS code).
|
* @param expectWebout - when set to true, the automatic _webout fileref will be checked for content, and that content returned. This fileref is used when the Job contains a SASjs web request (as opposed to executing arbitrary SAS code).
|
||||||
* @param waitForResult - when set to true, function will return the session
|
* @param waitForResult - when set to true, function will return the session
|
||||||
|
* @param pollOptions - an object that represents poll interval(milliseconds) and maximum amount of attempts. Object example: { MAX_POLL_COUNT: 24 * 60 * 60, POLL_INTERVAL: 1000 }.
|
||||||
*/
|
*/
|
||||||
public async executeScript(
|
public async executeScript(
|
||||||
jobPath: string,
|
jobPath: string,
|
||||||
@@ -437,7 +439,8 @@ export class SASViyaApiClient {
|
|||||||
data = null,
|
data = null,
|
||||||
debug: boolean = false,
|
debug: boolean = false,
|
||||||
expectWebout = false,
|
expectWebout = false,
|
||||||
waitForResult = true
|
waitForResult = true,
|
||||||
|
pollOptions?: PollOptions
|
||||||
): Promise<any> {
|
): Promise<any> {
|
||||||
try {
|
try {
|
||||||
const headers: any = {
|
const headers: any = {
|
||||||
@@ -543,7 +546,12 @@ export class SASViyaApiClient {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
const jobStatus = await this.pollJobState(postedJob, etag, accessToken)
|
const jobStatus = await this.pollJobState(
|
||||||
|
postedJob,
|
||||||
|
etag,
|
||||||
|
accessToken,
|
||||||
|
pollOptions
|
||||||
|
)
|
||||||
|
|
||||||
const { result: currentJob } = await this.request<Job>(
|
const { result: currentJob } = await this.request<Job>(
|
||||||
`${this.serverUrl}/compute/sessions/${executionSessionId}/jobs/${postedJob.id}`,
|
`${this.serverUrl}/compute/sessions/${executionSessionId}/jobs/${postedJob.id}`,
|
||||||
@@ -949,6 +957,7 @@ export class SASViyaApiClient {
|
|||||||
* @param accessToken - an optional access token for an authorized user.
|
* @param accessToken - an optional access token for an authorized user.
|
||||||
* @param waitForResult - a boolean indicating if the function should wait for a result.
|
* @param waitForResult - a boolean indicating if the function should wait for a result.
|
||||||
* @param expectWebout - a boolean indicating whether to expect a _webout response.
|
* @param expectWebout - a boolean indicating whether to expect a _webout response.
|
||||||
|
* @param pollOptions - an object that represents poll interval(milliseconds) and maximum amount of attempts. Object example: { MAX_POLL_COUNT: 24 * 60 * 60, POLL_INTERVAL: 1000 }.
|
||||||
*/
|
*/
|
||||||
public async executeComputeJob(
|
public async executeComputeJob(
|
||||||
sasJob: string,
|
sasJob: string,
|
||||||
@@ -957,7 +966,8 @@ export class SASViyaApiClient {
|
|||||||
data?: any,
|
data?: any,
|
||||||
accessToken?: string,
|
accessToken?: string,
|
||||||
waitForResult = true,
|
waitForResult = true,
|
||||||
expectWebout = false
|
expectWebout = false,
|
||||||
|
pollOptions?: PollOptions
|
||||||
) {
|
) {
|
||||||
if (isRelativePath(sasJob) && !this.rootFolderName) {
|
if (isRelativePath(sasJob) && !this.rootFolderName) {
|
||||||
throw new Error(
|
throw new Error(
|
||||||
@@ -1042,7 +1052,8 @@ export class SASViyaApiClient {
|
|||||||
data,
|
data,
|
||||||
debug,
|
debug,
|
||||||
expectWebout,
|
expectWebout,
|
||||||
waitForResult
|
waitForResult,
|
||||||
|
pollOptions
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1235,13 +1246,21 @@ export class SASViyaApiClient {
|
|||||||
this.folderMap.set(path, itemsAtRoot)
|
this.folderMap.set(path, itemsAtRoot)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// REFACTOR: set default value for 'pollOptions' attribute
|
||||||
private async pollJobState(
|
private async pollJobState(
|
||||||
postedJob: any,
|
postedJob: any,
|
||||||
etag: string | null,
|
etag: string | null,
|
||||||
accessToken?: string
|
accessToken?: string,
|
||||||
|
pollOptions?: PollOptions
|
||||||
) {
|
) {
|
||||||
const MAX_POLL_COUNT = 1000
|
let POLL_INTERVAL = 100
|
||||||
const POLL_INTERVAL = 100
|
let MAX_POLL_COUNT = 1000
|
||||||
|
|
||||||
|
if (pollOptions) {
|
||||||
|
POLL_INTERVAL = pollOptions.POLL_INTERVAL || POLL_INTERVAL
|
||||||
|
MAX_POLL_COUNT = pollOptions.MAX_POLL_COUNT || MAX_POLL_COUNT
|
||||||
|
}
|
||||||
|
|
||||||
let postedJobState = ''
|
let postedJobState = ''
|
||||||
let pollCount = 0
|
let pollCount = 0
|
||||||
const headers: any = {
|
const headers: any = {
|
||||||
|
|||||||
13
src/SASjs.ts
13
src/SASjs.ts
@@ -32,7 +32,8 @@ import {
|
|||||||
CsrfToken,
|
CsrfToken,
|
||||||
UploadFile,
|
UploadFile,
|
||||||
EditContextInput,
|
EditContextInput,
|
||||||
ErrorResponse
|
ErrorResponse,
|
||||||
|
PollOptions
|
||||||
} from './types'
|
} from './types'
|
||||||
import { SASViyaApiClient } from './SASViyaApiClient'
|
import { SASViyaApiClient } from './SASViyaApiClient'
|
||||||
import { SAS9ApiClient } from './SAS9ApiClient'
|
import { SAS9ApiClient } from './SAS9ApiClient'
|
||||||
@@ -218,7 +219,8 @@ export default class SASjs {
|
|||||||
linesOfCode,
|
linesOfCode,
|
||||||
contextName,
|
contextName,
|
||||||
accessToken,
|
accessToken,
|
||||||
null
|
null,
|
||||||
|
this.sasjsConfig.debug
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -711,13 +713,15 @@ export default class SASjs {
|
|||||||
* @param accessToken - a valid access token that is authorised to execute compute jobs.
|
* @param accessToken - a valid access token that is authorised to execute compute jobs.
|
||||||
* The access token is not required when the user is authenticated via the browser.
|
* The access token is not required when the user is authenticated via the browser.
|
||||||
* @param waitForResult - a boolean that indicates whether the function needs to wait for execution to complete.
|
* @param waitForResult - a boolean that indicates whether the function needs to wait for execution to complete.
|
||||||
|
* @param pollOptions - an object that represents poll interval(milliseconds) and maximum amount of attempts. Object example: { MAX_POLL_COUNT: 24 * 60 * 60, POLL_INTERVAL: 1000 }.
|
||||||
*/
|
*/
|
||||||
public async startComputeJob(
|
public async startComputeJob(
|
||||||
sasJob: string,
|
sasJob: string,
|
||||||
data: any,
|
data: any,
|
||||||
config: any = {},
|
config: any = {},
|
||||||
accessToken?: string,
|
accessToken?: string,
|
||||||
waitForResult?: boolean
|
waitForResult?: boolean,
|
||||||
|
pollOptions?: PollOptions
|
||||||
) {
|
) {
|
||||||
config = {
|
config = {
|
||||||
...this.sasjsConfig,
|
...this.sasjsConfig,
|
||||||
@@ -738,7 +742,8 @@ export default class SASjs {
|
|||||||
data,
|
data,
|
||||||
accessToken,
|
accessToken,
|
||||||
!!waitForResult,
|
!!waitForResult,
|
||||||
false
|
false,
|
||||||
|
pollOptions
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
4
src/types/PollOptions.ts
Normal file
4
src/types/PollOptions.ts
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
export interface PollOptions {
|
||||||
|
MAX_POLL_COUNT?: number
|
||||||
|
POLL_INTERVAL?: number
|
||||||
|
}
|
||||||
@@ -12,3 +12,4 @@ export * from './SASjsWaitingRequest'
|
|||||||
export * from './ServerType'
|
export * from './ServerType'
|
||||||
export * from './Session'
|
export * from './Session'
|
||||||
export * from './UploadFile'
|
export * from './UploadFile'
|
||||||
|
export * from './PollOptions'
|
||||||
|
|||||||
Reference in New Issue
Block a user