diff --git a/src/job-execution/WebJobExecutor.ts b/src/job-execution/WebJobExecutor.ts index a9c980d..8e469a5 100644 --- a/src/job-execution/WebJobExecutor.ts +++ b/src/job-execution/WebJobExecutor.ts @@ -18,7 +18,8 @@ import { parseSasViyaDebugResponse, appendExtraResponseAttributes, parseWeboutResponse, - getFormData + getFormData, + isNode } from '../utils' import { BaseJobExecutor } from './JobExecutor' @@ -113,6 +114,25 @@ export class WebJobExecutor extends BaseJobExecutor { */ let formData = getFormData() + // FIXME(viya - SAS Track CS0409737): remove when Viya stops rejecting empty multipart on + // _executionTasks=true. Dummy file keeps the body non-empty + const hasExecutionTasksFlag = + sasJob.includes('_executionTasks=true') || config.runAsTask === true + if (config.serverType === ServerType.SasViya && hasExecutionTasksFlag) { + if (isNode()) { + ;(formData as NodeFormData).append('_sasjs_noop', '', { + filename: '_sasjs_noop.txt', + contentType: 'text/plain' + }) + } else { + ;(formData as FormData).append( + '_sasjs_noop', + new Blob([''], { type: 'text/plain' }), + '_sasjs_noop.txt' + ) + } + } + if (data) { const stringifiedData = JSON.stringify(data) if (