diff --git a/api/public/swagger.yaml b/api/public/swagger.yaml index 66d14e8..e2c97b2 100644 --- a/api/public/swagger.yaml +++ b/api/public/swagger.yaml @@ -792,7 +792,7 @@ paths: - {type: string} - {type: string, format: byte} description: 'Execute Code on the Specified Runtime' - summary: 'Run Code and Return Webout Content and Log' + summary: "Run Code and Return Webout Content, Log and Print output\nThe order of returned parts of the payload is:\n1. Webout (if present)\n2. Logs UUID (used as separator)\n3. Log\n4. Logs UUID (used as separator)\n5. Print (if present and if the runtime is SAS)\nPlease see" tags: - Code security: @@ -1805,6 +1805,15 @@ paths: schema: type: string example: /Projects/myApp/some/program + - + description: 'Optional query param for setting debug mode' + in: query + name: _debug + required: false + schema: + format: double + type: number + example: 131 post: operationId: ExecutePostRequest responses: diff --git a/api/src/controllers/stp.ts b/api/src/controllers/stp.ts index c78d6ce..daa72a5 100644 --- a/api/src/controllers/stp.ts +++ b/api/src/controllers/stp.ts @@ -7,6 +7,7 @@ import { getRunTimeAndFilePath } from '../utils' import { MulterFile } from '../types/Upload' +import { debug } from 'console' interface ExecutePostRequestPayload { /** @@ -29,14 +30,23 @@ export class STPController { * * @summary Execute a Stored Program, returns _webout and (optionally) log. * @param _program Location of code in SASjs Drive + * @param _debug Optional query param for setting debug mode * @example _program "/Projects/myApp/some/program" + * @example _debug 131 */ @Get('/execute') public async executeGetRequest( @Request() request: express.Request, - @Query() _program: string + @Query() _program: string, + @Query() _debug?: number ): Promise { - const vars = request.query as ExecutionVars + let vars = request.query as ExecutionVars + if (_debug) { + vars = { + ...vars, + _debug + } + } return execute(request, _program, vars) } diff --git a/api/src/routes/api/stp.ts b/api/src/routes/api/stp.ts index cb1adce..e65b25a 100644 --- a/api/src/routes/api/stp.ts +++ b/api/src/routes/api/stp.ts @@ -13,7 +13,11 @@ stpRouter.get('/execute', async (req, res) => { if (error) return res.status(400).send(error.details[0].message) try { - const response = await controller.executeGetRequest(req, query._program) + const response = await controller.executeGetRequest( + req, + query._program, + query._debug + ) if (response instanceof Buffer) { res.writeHead(200, (req as any).sasHeaders) diff --git a/api/src/utils/validation.ts b/api/src/utils/validation.ts index feed970..66070fb 100644 --- a/api/src/utils/validation.ts +++ b/api/src/utils/validation.ts @@ -180,7 +180,8 @@ export const runCodeValidation = (data: any): Joi.ValidationResult => export const executeProgramRawValidation = (data: any): Joi.ValidationResult => Joi.object({ - _program: Joi.string().required() + _program: Joi.string().required(), + _debug: Joi.number() }) .pattern(/^/, Joi.alternatives(Joi.string(), Joi.number())) .validate(data)