fix: code/execute controller logic to handle different runtimes

This commit is contained in:
2022-06-17 20:01:50 +05:00
parent ab222cbaab
commit 23b6692f02
9 changed files with 114 additions and 64 deletions
+15 -33
View File
@@ -51,26 +51,15 @@ export interface ExecuteReturnJsonResponse {
@Tags('STP')
export class STPController {
/**
* Trigger a SAS program using it's location in the _program URL parameter.
* Enable debugging using the _debug URL parameter. Setting _debug=131 will
* cause the log to be streamed in the output.
* Trigger a SAS or JS program using the _program URL parameter.
*
* Additional URL parameters are turned into SAS macro variables.
* Accepts URL parameters and file uploads. For more details, see docs:
*
* Any files provided in the request body are placed into the SAS session with
* corresponding _WEBIN_XXX variables created.
* https://server.sasjs.io/storedprograms
*
* The response headers can be adjusted using the mfs_httpheader() macro. Any
* file type can be returned, including binary files such as zip or xls.
*
* If _debug is >= 131, response headers will contain Content-Type: 'text/plain'
*
* This behaviour differs for POST requests, in which case the response is
* always JSON.
*
* @summary Execute Stored Program, return raw _webout content.
* @param _program Location of SAS program
* @example _program "/Public/somefolder/some.file"
* @summary Execute a Stored Program, returns raw _webout content.
* @param _program Location of SAS or JS code
* @example _program "/Projects/myApp/some/program"
*/
@Get('/execute')
public async executeReturnRaw(
@@ -81,29 +70,22 @@ export class STPController {
}
/**
* Trigger a SAS program using it's location in the _program URL parameter.
* Enable debugging using the _debug URL parameter. In any case, the log is
* always returned in the log object.
* Trigger a SAS or JS program using the _program URL parameter.
*
* Additional URL parameters are turned into SAS macro variables.
* Accepts URL parameters and file uploads. For more details, see docs:
*
* Any files provided in the request body are placed into the SAS session with
* corresponding _WEBIN_XXX variables created.
* https://server.sasjs.io/storedprograms
*
* The response will be a JSON object with the following root attributes: log,
* webout, headers.
* The response will be a JSON object with the following root attributes:
* log, webout, headers.
*
* The webout will be a nested JSON object ONLY if the response-header
* The webout attribute will be nested JSON ONLY if the response-header
* contains a content-type of application/json AND it is valid JSON.
* Otherwise it will be a stringified version of the webout content.
*
* Response headers from the mfs_httpheader macro are simply listed in the
* headers object, for POST requests they have no effect on the actual
* response header.
*
* @summary Execute Stored Program, return JSON
* @param _program Location of SAS program
* @example _program "/Public/somefolder/some.file"
* @summary Execute a Stored Program, return a JSON object
* @param _program Location of SAS or JS code
* @example _program "/Projects/myApp/some/program"
*/
@Example<ExecuteReturnJsonResponse>({
status: 'success',