From f14800ffc22b9a2a6c22704341cd9826b9e82b1c Mon Sep 17 00:00:00 2001 From: Rishi Ghan Date: Tue, 13 Jul 2021 06:39:42 -0700 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=A5=20Added=20image=20file=20extension?= =?UTF-8?q?=20validator?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- utils/file.utils.ts | 8 +++++++- utils/uncompression.utils.ts | 13 +++++++++++-- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/utils/file.utils.ts b/utils/file.utils.ts index e6fe3b2..97c500c 100644 --- a/utils/file.utils.ts +++ b/utils/file.utils.ts @@ -9,7 +9,9 @@ import { IFolderData, } from "../interfaces/folder.interface"; import { logger } from "./logger.utils"; -import { each, isEmpty, map, remove, indexOf } from "lodash"; +import { includes, remove, indexOf } from "lodash"; + +const ALLOWED_IMAGE_FILE_FORMATS = [".jpg", ".jpeg", ".png"]; export const walkFolder = async (folder: string): Promise => { const result: IFolderData[] = []; @@ -57,6 +59,10 @@ export const explodePath = (filePath: string): IExplodedPathResponse => { }; }; +export const isValidImageFileExtension = (fileName: string): boolean => { + return includes(ALLOWED_IMAGE_FILE_FORMATS, path.extname(fileName)); +}; + export const constructPaths = ( extractionOptions: IExtractionOptions, walkedFolder: IFolderData diff --git a/utils/uncompression.utils.ts b/utils/uncompression.utils.ts index 342e35e..a2207d1 100644 --- a/utils/uncompression.utils.ts +++ b/utils/uncompression.utils.ts @@ -46,7 +46,11 @@ import { } from "threetwo-ui-typings"; import { logger } from "./logger.utils"; import { validateComicBookMetadata } from "../utils/validation.utils"; -import { constructPaths, explodePath } from "../utils/file.utils"; +import { + constructPaths, + explodePath, + isValidImageFileExtension, +} from "../utils/file.utils"; import { resizeImage } from "./imagetransformation.utils"; const { writeFile, readFile } = require("fs").promises; const unrarer = require("node-unrar-js"); @@ -90,6 +94,7 @@ export const unrar = async ( if ( fileName !== "" && fileHeader.flags.directory === false && + isValidImageFileExtension(fileName) && isEmpty(fileNameToExtract) ) { logger.info( @@ -211,7 +216,11 @@ export const unzip = async ( ) { break; } - if (fileName !== "" && entry.type !== "Directory") { + if ( + fileName !== "" && + entry.type !== "Directory" && + isValidImageFileExtension(fileName) + ) { logger.info(`Attempting to write ${fileName}`); entry .pipe(createWriteStream(paths.targetPath + "/" + fileName))