Workflow and API validation for input file types

(still needs to be ckecked if a pdf is valid)
This commit is contained in:
Felix Kaspar
2023-12-21 16:42:00 +01:00
parent efd8b48a3f
commit 3e10972efa
6 changed files with 37 additions and 40 deletions

View File

@@ -7,6 +7,7 @@ import { Operator } from '@stirling-pdf/shared-operations/src/functions';
import { PdfFile } from '@stirling-pdf/shared-operations/src/wrappers/PdfFile';
import { respondWithPdfFiles } from 'utils/endpoint-utils';
import { Action } from '@stirling-pdf/shared-operations/declarations/Action';
router.post('/:func', upload.array("file"), async function(req: Request, res: Response) {
handleEndpoint(req, res);
@@ -31,15 +32,20 @@ function handleEndpoint(req: Request, res: Response) {
const operator = getOperatorByName(req.params.func);
if(operator) {
const operation = new operator({type: req.params.func, values: req.body});
const validationResults = operation.validate();
if(validationResults.valid) {
operation.run(pdfFiles, (progress) => {}).then(pdfFiles => {
respondWithPdfFiles(res, pdfFiles, req.params.func + "_result");
})
const action: Action = {type: req.params.func, values: req.body};
const validationResults = operator.schema.validate({input: pdfFiles, values: action.values});
if(validationResults.error) {
res.status(400).json(validationResults.error);
}
else {
res.status(400).json(validationResults);
action.values = validationResults.value.values;
const operation = new operator(action);
operation.run(validationResults.value.input, (progress) => {}).then(pdfFiles => {
respondWithPdfFiles(res, pdfFiles, req.params.func + "_result");
})
}
}
else {

View File

@@ -48,6 +48,8 @@ router.post("/:workflowUuid?", [
if(req.body.async === "false") {
console.log("Don't do async");
// TODO: Check if file type == inputType for operator
traverseOperations(workflow.actions, inputs, (state) => {
console.log("State: ", state);
}).then(async (pdfResults) => {
@@ -88,6 +90,8 @@ router.post("/:workflowUuid?", [
}
});
// TODO: Check if file type == inputType for operator
traverseOperations(workflow.actions, inputs, (state) => {
console.log("State: ", state);
if(activeWorkflow.eventStream)