27 lines
951 B
TypeScript
Raw Normal View History

2023-11-27 23:35:18 +01:00
import Joi from "joi";
import { PdfFile } from "./PdfFile";
2023-12-21 22:52:05 +01:00
export const JoiPDFFileSchema = Joi.custom((value: Express.Multer.File | Express.Multer.File[] | PdfFile | PdfFile[], helpers) => {
if (Array.isArray(value)) {
if(isPdfFileArray(value))
return value;
2023-12-21 22:52:05 +01:00
else { // File(s)
if(value.some(f => f.mimetype != "application/pdf"))
throw new Error("at least one of the files provided doesn't seem to be a PDF.");
return PdfFile.fromMulterFiles(value);
}
}
else {
2023-12-21 22:52:05 +01:00
if (value instanceof PdfFile) {
return value;
}
else {
throw new Error("an invalid type (unhandeled, non-file-type) was provided to pdf validation process. Please report this to maintainers.");
2023-11-27 23:35:18 +01:00
}
}
2023-12-21 22:52:05 +01:00
}, "pdffile validation");
function isPdfFileArray(value: any): value is PdfFile[] {
return value.every((e) => e instanceof PdfFile)
}