first commit

This commit is contained in:
rodrigo committed 2025-04-10 23:07:21 -03:00
commit c9fb67e751
423 files changed
+53287

No files matched your search

+63
View File
@@ -0,0 +1,63 @@
import { createHash } from 'crypto';
export class FileValidator {
async validateFile(buffer: Buffer, mimeType: string) {
try {
// Validação básica
if (!buffer || buffer.length === 0) {
return { valid: false, error: 'Arquivo vazio' };
}
// Verificar tamanho máximo (10MB)
const MAX_SIZE = 10 * 1024 * 1024;
if (buffer.length > MAX_SIZE) {
return { valid: false, error: 'Arquivo muito grande (máximo 10MB)' };
}
// Verificar tipos de arquivo permitidos
const allowedTypes = [
'application/pdf',
'image/jpeg',
'image/png', // Corrigido o tipo MIME para PNG
'image/gif',
'image.webp'
];
if (!allowedTypes.includes(mimeType)) {
return { valid: false, error: 'Tipo de arquivo não suportado. Use PDF, JPEG, PNG ou GIF.' };
}
return { valid: true };
} catch (error) {
console.error('Erro na validação de arquivo:', error);
return { valid: false, error: `Erro ao validar arquivo: ${error.message}` };
}
}
async validateMetadata(metadata: any) {
// Campos básicos obrigatórios
const requiredFields = ['userAgent', 'timestamp'];
const missingFields = requiredFields.filter(field => !metadata[field]);
if (missingFields.length > 0) {
return {
valid: false,
error: `Dados necessários ausentes: ${missingFields.join(', ')}`
};
}
return { valid: true };
}
generateHashes(buffer: Buffer) {
return {
sha256: createHash('sha256').update(buffer).digest('hex'),
sha512: createHash('sha512').update(buffer).digest('hex'),
md5: createHash('md5').update(buffer).digest('hex')
};
}
async cleanup() {
// Nada a fazer nesta implementação simplificada
}
}