From e47fef0562ada236dbda08ed6869bca3a323a974 Mon Sep 17 00:00:00 2001 From: Rishi Ghan Date: Wed, 21 Apr 2021 23:20:56 -0700 Subject: [PATCH] =?UTF-8?q?=F0=9F=AA=9B=20Refactored=20methods?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../route/routes/importComics.routes.ts | 4 +- src/server/utils/fs.utils.ts | 67 +++++++++---------- 2 files changed, 32 insertions(+), 39 deletions(-) diff --git a/src/server/route/routes/importComics.routes.ts b/src/server/route/routes/importComics.routes.ts index 847b05b..9f1badb 100644 --- a/src/server/route/routes/importComics.routes.ts +++ b/src/server/route/routes/importComics.routes.ts @@ -11,8 +11,8 @@ import { Request, Response } from "express"; router.route("/getComicCovers").post(async (req: Request, res: Response) => { const options = { - name: "Fatale 004 (2012) (Digital) (Zone-Empire)", - extension: ".cbr", + name: "30 Days of Night # 30 äíåé íî÷è # 01-001", + extension: ".cbz", containedIn: "comics", isFile: true, isLink: false, diff --git a/src/server/utils/fs.utils.ts b/src/server/utils/fs.utils.ts index 4e677f5..551484d 100644 --- a/src/server/utils/fs.utils.ts +++ b/src/server/utils/fs.utils.ts @@ -24,29 +24,17 @@ export const unrar = async ( | IExtractedComicBookCoverFile[] | IExtractComicBookCoverErrorResponse > => { - const targetPath = - extractionOptions.sourceFolder + - "/" + - extractionOptions.targetExtractionFolder + - "/" + - extractionOptions.folderDetails.name; - - const inputFilePath = - extractionOptions.folderDetails.containedIn + - "/" + - extractionOptions.folderDetails.name + - extractionOptions.folderDetails.extension; - + const paths = constructPaths(extractionOptions); const directoryOptions = { mode: 0o2775, }; - const fileBuffer = await readFile(inputFilePath).catch((err) => + const fileBuffer = await readFile(paths.inputFilePath).catch((err) => console.error("Failed to read file", err), ); try { - await fse.ensureDir(targetPath, directoryOptions); - logger.info(`${targetPath} was created or already exists.`); + await fse.ensureDir(paths.targetPath, directoryOptions); + logger.info(`${paths.targetPath} was created or already exists.`); } catch (error) { logger.error(`${error}: Couldn't create directory.`); } @@ -69,11 +57,11 @@ export const unrar = async ( fileName !== "" && extractedFile.fileHeader.flags.directory === false ) { - await writeFile(targetPath + "/" + fileName, fileArrayBuffer); + await writeFile(paths.targetPath + "/" + fileName, fileArrayBuffer); } resolve({ name: `${extractedFile.fileHeader.name}`, - path: targetPath, + path: paths.targetPath, fileSize: extractedFile.fileHeader.packSize, }); } catch (error) { @@ -93,11 +81,11 @@ export const unrar = async ( const fileName = explodePath(file.fileHeader.name).fileName; try { if (fileName !== "" && file.fileHeader.flags.directory === false) { - await writeFile(targetPath + "/" + fileName, fileBuffer); + await writeFile(paths.targetPath + "/" + fileName, fileBuffer); } comicBookCoverFiles.push({ name: `${file.fileHeader.name}`, - path: targetPath, + path: paths.targetPath, fileSize: file.fileHeader.packSize, }); } catch (error) { @@ -138,28 +126,17 @@ export const unzip = async ( const directoryOptions = { mode: 0o2775, }; - const targetPath = - extractionOptions.sourceFolder + - "/" + - extractionOptions.targetExtractionFolder + - "/" + - extractionOptions.folderDetails.name; - - const inputFilePath = - extractionOptions.folderDetails.containedIn + - "/" + - extractionOptions.folderDetails.name + - extractionOptions.folderDetails.extension; + const paths = constructPaths(extractionOptions); try { - await fse.ensureDir(targetPath, directoryOptions); - logger.info(`${targetPath} was created or already exists.`); + await fse.ensureDir(paths.targetPath, directoryOptions); + logger.info(`${paths.targetPath} was created or already exists.`); } catch (error) { logger.error(`${error} Couldn't create directory.`); } const extractedFiles: IExtractedComicBookCoverFile[] = []; - const zip = createReadStream(inputFilePath).pipe( + const zip = createReadStream(paths.inputFilePath).pipe( unzipper.Parse({ forceStream: true }), ); for await (const entry of zip) { @@ -172,11 +149,11 @@ export const unzip = async ( break; } if (fileName !== "" && entry.type !== "Directory") { - entry.pipe(createWriteStream(targetPath + "/" + fileName)); + entry.pipe(createWriteStream(paths.targetPath + "/" + fileName)); extractedFiles.push({ name: fileName, fileSize: size, - path: targetPath, + path: paths.targetPath, }); } entry.autodrain(); @@ -250,3 +227,19 @@ export const explodePath = (filePath: string): IExplodedPathResponse => { fileName, }; }; + +const constructPaths = (extractionOptions: IExtractionOptions) => { + return { + targetPath: + extractionOptions.sourceFolder + + "/" + + extractionOptions.targetExtractionFolder + + "/" + + extractionOptions.folderDetails.name, + inputFilePath: + extractionOptions.folderDetails.containedIn + + "/" + + extractionOptions.folderDetails.name + + extractionOptions.folderDetails.extension, + }; +};