src/api/v2/projects/projectfiles/projectfiles.validator.tsmodifiedimport { NextFunction, Request, Response } from "express";
import { LoggerFactory } from "../../../../util/logger";
import {
validateProjectId,
validateString,
validateUuidAndThrow,
} from "../../common.validator";
const logger = LoggerFactory("FilesValidator");
export const validateGetFileRequest = (
req: Request,
res: Response,
next: NextFunction,
) => {
const { projectId, fileReferenceId } = req.params;
if (
!validateProjectId(logger, projectId, res) ||
!validateUuidAndThrow(logger, "fileReferenceId", fileReferenceId, res)
)
return;
next();
};
export const validateBiggestFileRequest = (
req: Request,
res: Response,
next: NextFunction,
) => {
const { projectId } = req.params;
if (!validateProjectId(logger, projectId, res)) return;
next();
};
export const validateFileUploadRequest = (
req: Request,
res: Response,
next: NextFunction,
) => {
const { projectId } = req.params;
if (!req.file) {
return res
.status(400)
.json({
code: "InvalidRequest",
message: "No file provided for upload.",
});
}
const { chunkIndex, totalChunks, fileName, xyzDisplayName, fileReferenceId } =
req.body;
if (
!validateString(logger, "fileName", fileName, res) ||
!validateString(logger, "xyzDisplayName", xyzDisplayName, res) ||
!validateString(logger, "chunkIndex", chunkIndex, res) ||
!validateString(logger, "totalChunks", totalChunks, res) ||
!validateProjectId(logger, projectId, res)
) {
return res;
}
if (Number.parseInt(chunkIndex) > 0 && !fileReferenceId) {
return res.status(400).json({
code: "InvalidRequest",
message:
"fileReferenceId must be provided for all chunks > 0 (returned in first chunk response).",
});
}
next();
};