Fix server crash when non-zip file is uploaded

This commit is contained in:
Krisjanis Lejejs
2022-10-25 22:03:18 +03:00
parent 9b1f3eda05
commit e9e595f0d0

View File

@ -35,6 +35,7 @@ export class IntegrationsService {
async linkedIn(userId: number, path: string): Promise<ResumeEntity> {
let archive: StreamZip.StreamZipAsync;
let isArchiveValid = false;
try {
archive = new StreamZip.async({ file: path });
@ -48,6 +49,9 @@ export class IntegrationsService {
slug: `imported-from-linkedin-${timestamp}`,
});
// Check if archive is valid
isArchiveValid = await archive.entries().then((entries) => Object.keys(entries).length > 0);
// Profile
try {
const profileCSV = (await archive.entryData('Profile.csv')).toString();
@ -261,7 +265,7 @@ export class IntegrationsService {
throw new HttpException('You must upload a valid zip archive downloaded from LinkedIn.', HttpStatus.BAD_REQUEST);
} finally {
await unlink(path);
!isEmpty(archive) && archive.close();
isArchiveValid && archive.close();
}
}