From e612eea7fd0ffed2705371521591d86662ba6e96 Mon Sep 17 00:00:00 2001 From: Rishi Ghan Date: Mon, 19 Apr 2021 11:45:29 -0700 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=AB=20Added=20error=20interface=20for?= =?UTF-8?q?=20comic=20cover=20methods?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/interfaces/folder.interface.ts | 6 +++ src/server/utils/fs.utils.ts | 54 +++++++++++++++-------- 2 files changed, 42 insertions(+), 18 deletions(-) diff --git a/src/server/interfaces/folder.interface.ts b/src/server/interfaces/folder.interface.ts index ec98ab3..61c3379 100644 --- a/src/server/interfaces/folder.interface.ts +++ b/src/server/interfaces/folder.interface.ts @@ -39,3 +39,9 @@ export interface IExtractedComicBookCoverFile { path: string; fileSize: number; } + +export interface IExtractComicBookCoverErrorResponse { + message: string; + errorCode: string; + data: string; +} diff --git a/src/server/utils/fs.utils.ts b/src/server/utils/fs.utils.ts index 9b9d6e4..24df53d 100644 --- a/src/server/utils/fs.utils.ts +++ b/src/server/utils/fs.utils.ts @@ -6,6 +6,7 @@ import fs from "fs"; import path from "path"; import { logger } from "./logger.utils"; import { + IExtractComicBookCoverErrorResponse, IExtractedComicBookCoverFile, IExtractionOptions, IFolderData, @@ -14,6 +15,8 @@ import { export const unrar = async ( extractionOptions: IExtractionOptions, ): Promise => { + const comicCoversTargetPath = + extractionOptions.sourceFolder + extractionOptions.extractTarget; const buf = Uint8Array.from( fs.readFileSync( extractionOptions.sourceFolder + extractionOptions.folderDetails.name, @@ -31,21 +34,25 @@ export const unrar = async ( logger.info(`Attempting to write ${extractedFile.fileHeader.name}`); return new Promise((resolve, reject) => { - fs.writeFile(filePath + extractedFile.fileHeader.name, myBuffer, (err) => { - if (err) { - logger.error("Failed to write file", err); - reject(err); - } else { - logger.info( - `The file ${extractedFile.fileHeader.name} was saved to disk.`, - ); - resolve({ - name: `${extractedFile.fileHeader.name}`, - path: `${filePath}`, - fileSize: extractedFile.fileHeader.packSize, - }); - } - }); + fs.writeFile( + comicCoversTargetPath + extractedFile.fileHeader.name, + myBuffer, + (err) => { + if (err) { + logger.error("Failed to write file", err); + reject(err); + } else { + logger.info( + `The file ${extractedFile.fileHeader.name} was saved to disk.`, + ); + resolve({ + name: `${extractedFile.fileHeader.name}`, + path: comicCoversTargetPath, + fileSize: extractedFile.fileHeader.packSize, + }); + } + }, + ); }); }; @@ -81,6 +88,7 @@ export const unzip = async ( entry.autodrain(); } return new Promise((resolve, reject) => { + logger.info(""); resolve(extractedFiles); }); }; @@ -106,20 +114,30 @@ export const unzipOne = async (): Promise => { export const extractArchive = async ( fileObject: IFolderData, -): Promise => { +): Promise< + | IExtractedComicBookCoverFile + | IExtractedComicBookCoverFile[] + | IExtractComicBookCoverErrorResponse +> => { const sourceFolder = "./comics/"; const targetComicCoversFolder = "covers"; const extractionOptions: IExtractionOptions = { - ...fileObject, + folderDetails: fileObject, extractTarget: "cover", sourceFolder, targetComicCoversFolder, }; switch (fileObject.extension) { case ".cbz": - return await unzip(extractionOptions); + return await unzip("j"); case ".cbr": return await unrar(extractionOptions); + default: + return { + message: "File format not supported, yet.", + errorCode: "90", + data: "asda", + }; } };