From dcec8f8bfcebe92ea677426ea0b3495eb3a299aa Mon Sep 17 00:00:00 2001 From: Rishi Ghan Date: Wed, 5 May 2021 08:36:27 -0700 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=AB=20Refactoring=20extractArchive=20t?= =?UTF-8?q?o=20use=20Promise.all?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/interfaces/folder.interface.ts | 1 - .../route/routes/importComics.routes.ts | 8 +-- src/server/utils/fs.utils.ts | 51 +++++++++++-------- 3 files changed, 34 insertions(+), 26 deletions(-) diff --git a/src/server/interfaces/folder.interface.ts b/src/server/interfaces/folder.interface.ts index 2e07047..626c391 100644 --- a/src/server/interfaces/folder.interface.ts +++ b/src/server/interfaces/folder.interface.ts @@ -3,7 +3,6 @@ export interface IFolderResponse { } export interface IExtractionOptions { - folderDetails: IFolderData; extractTarget: string; sourceFolder: string; targetExtractionFolder: string; diff --git a/src/server/route/routes/importComics.routes.ts b/src/server/route/routes/importComics.routes.ts index 5fe1d0f..73bf5e6 100644 --- a/src/server/route/routes/importComics.routes.ts +++ b/src/server/route/routes/importComics.routes.ts @@ -9,9 +9,11 @@ router.route("/getComicCovers").post(async (req: Request, res: Response) => { typeof req.body.extractionOptions === "object" ? req.body.extractionOptions : {}; - console.log(req.body) - // const foo = await getCovers(req.body, req.bod); - return res.json({ foo: "madi" }); + const foo = await getCovers( + req.body.extractionOptions, + req.body.walkedFolders, + ); + return res.json({ foo }); // const extractedData = await extractArchive(req.body); // if ( // _.isArray(extractedData) && diff --git a/src/server/utils/fs.utils.ts b/src/server/utils/fs.utils.ts index ebc4028..390b724 100644 --- a/src/server/utils/fs.utils.ts +++ b/src/server/utils/fs.utils.ts @@ -52,12 +52,13 @@ import { export const unrar = async ( extractionOptions: IExtractionOptions, + walkedFolder: IFolderData, ): Promise< | IExtractedComicBookCoverFile | IExtractedComicBookCoverFile[] | IExtractComicBookCoverErrorResponse > => { - const paths = constructPaths(extractionOptions); + const paths = constructPaths(extractionOptions, walkedFolder); const directoryOptions = { mode: 0o2775, }; @@ -134,7 +135,7 @@ export const unrar = async ( resolve({ message: `${error}`, errorCode: "500", - data: extractionOptions.folderDetails.name, + data: walkedFolder.name, }); } }); @@ -161,6 +162,7 @@ export const extractMetadataFromImage = async ( export const unzip = async ( extractionOptions: IExtractionOptions, + walkedFolder: IFolderData, ): Promise< | IExtractedComicBookCoverFile[] | IExtractedComicBookCoverFile @@ -169,7 +171,7 @@ export const unzip = async ( const directoryOptions = { mode: 0o2775, }; - const paths = constructPaths(extractionOptions); + const paths = constructPaths(extractionOptions, walkedFolder); try { await fse.ensureDir(paths.targetPath, directoryOptions); @@ -210,16 +212,17 @@ export const unzip = async ( export const extractArchive = async ( extractionOptions: IExtractionOptions, + walkedFolder: IFolderData, ): Promise< | IExtractedComicBookCoverFile | IExtractedComicBookCoverFile[] | IExtractComicBookCoverErrorResponse > => { - switch (extractionOptions.folderDetails.extension) { + switch (walkedFolder.extension) { case ".cbz": - return await unzip(extractionOptions); + return await unzip(extractionOptions, walkedFolder); case ".cbr": - return await unrar(extractionOptions); + return await unrar(extractionOptions, walkedFolder); default: return { message: "File format not supported, yet.", @@ -231,20 +234,23 @@ export const extractArchive = async ( export const getCovers = async ( options: IExtractionOptions, + walkedFolders: Array, ): Promise< IExtractedComicBookCoverFile[] | IExtractedComicBookCoverFile | unknown > => { switch (options.extractionMode) { case "bulk": - const extractedDataPromises = _.map(payload, (folderObject) => { - extractArchive({ - extractTarget: options.extractTarget, - sourceFolder: options.sourceFolder, - targetExtractionFolder: options.targetExtractionFolder, - folderDetails: folderObject, - paginationOptions: options.paginationOptions, - extractionMode: options.extractionMode, - }); + const extractedDataPromises = _.map(walkedFolders, (folder) => { + extractArchive( + { + extractTarget: options.extractTarget, + sourceFolder: options.sourceFolder, + targetExtractionFolder: options.targetExtractionFolder, + paginationOptions: options.paginationOptions, + extractionMode: options.extractionMode, + }, + folder, + ); }); return Promise.all(extractedDataPromises).then((data) => data); case "single": @@ -286,16 +292,17 @@ export const explodePath = (filePath: string): IExplodedPathResponse => { }; }; -const constructPaths = (extractionOptions: IExtractionOptions) => { +const constructPaths = ( + extractionOptions: IExtractionOptions, + walkedFolder: IFolderData, +) => { return { targetPath: - extractionOptions.targetExtractionFolder + - "/" + - extractionOptions.folderDetails.name, + extractionOptions.targetExtractionFolder + "/" + walkedFolder.name, inputFilePath: - extractionOptions.folderDetails.containedIn + + walkedFolder.containedIn + "/" + - extractionOptions.folderDetails.name + - extractionOptions.folderDetails.extension, + walkedFolder.name + + walkedFolder.extension, }; };