chore: import DH V2 D5.6.4 production baseline
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
import { BadRequestException } from '@nestjs/common';
|
||||
|
||||
export const MAX_INSPECTION_SIGNATURE_BYTES = 1024 * 1024;
|
||||
|
||||
export interface UploadedInspectionSignatureFile {
|
||||
originalname: string;
|
||||
mimetype: string;
|
||||
size: number;
|
||||
buffer: Buffer;
|
||||
}
|
||||
|
||||
export interface InspectedInspectionSignatureFile {
|
||||
originalName: string;
|
||||
mimeType: 'image/png';
|
||||
extension: '.png';
|
||||
}
|
||||
|
||||
export function inspectInspectionSignatureFile(
|
||||
file: UploadedInspectionSignatureFile | undefined,
|
||||
): InspectedInspectionSignatureFile {
|
||||
if (!file?.buffer?.length) {
|
||||
throw new BadRequestException({
|
||||
code: 'INSPECTION_SIGNATURE_FILE_REQUIRED',
|
||||
message: 'La firma manuscrita en formato PNG es obligatoria',
|
||||
});
|
||||
}
|
||||
if (file.buffer.length > MAX_INSPECTION_SIGNATURE_BYTES) {
|
||||
throw new BadRequestException({
|
||||
code: 'INSPECTION_SIGNATURE_FILE_TOO_LARGE',
|
||||
message: 'La firma no puede superar 1 MB',
|
||||
});
|
||||
}
|
||||
const pngSignature = Buffer.from([137, 80, 78, 71, 13, 10, 26, 10]);
|
||||
if (
|
||||
file.mimetype !== 'image/png'
|
||||
|| file.buffer.length < pngSignature.length
|
||||
|| !file.buffer.subarray(0, pngSignature.length).equals(pngSignature)
|
||||
) {
|
||||
throw new BadRequestException({
|
||||
code: 'INSPECTION_SIGNATURE_PNG_REQUIRED',
|
||||
message: 'La firma debe ser una imagen PNG válida',
|
||||
});
|
||||
}
|
||||
return {
|
||||
originalName: (file.originalname || 'firma.png').slice(0, 255),
|
||||
mimeType: 'image/png',
|
||||
extension: '.png',
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user