From 9969eb3ea2f7d9ded70ab01d3564182a60a387b6 Mon Sep 17 00:00:00 2001 From: Rishi Ghan Date: Sun, 13 Mar 2022 22:15:23 -0700 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A7=20Orchestrating=20return=20values?= =?UTF-8?q?=20from=20uncompression=20methods?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- services/libraryqueue.service.ts | 1 + utils/uncompression.utils.ts | 61 ++++++++++++++++++++------------ 2 files changed, 40 insertions(+), 22 deletions(-) diff --git a/services/libraryqueue.service.ts b/services/libraryqueue.service.ts index 20b12b9..4feb50f 100644 --- a/services/libraryqueue.service.ts +++ b/services/libraryqueue.service.ts @@ -80,6 +80,7 @@ export default class QueueService extends Service { } = getFileConstituents(job.data.fileObject.filePath); const targetDirectory = `${USERDATA_DIRECTORY}/covers/${fileNameWithoutExtension}`; const foo = await extractFromArchive(job.data.fileObject.filePath, targetDirectory, extension ); + console.log("JAADASD!@#!@#@!", foo); // infer any issue-related metadata from the filename // const { inferredIssueDetails } = refineQuery(result.name); diff --git a/utils/uncompression.utils.ts b/utils/uncompression.utils.ts index 108d016..61417dd 100644 --- a/utils/uncompression.utils.ts +++ b/utils/uncompression.utils.ts @@ -137,20 +137,24 @@ export const extractComicInfoXMLFromRar = async ( filePath: string, fileToExtract: string ) => { - try { - // Create the target directory - const directoryOptions = { - mode: 0o2775, - }; - const { fileNameWithoutExtension } = getFileConstituents(filePath); - const targetDirectory = `${USERDATA_DIRECTORY}/covers/${fileNameWithoutExtension}`; - await fse.ensureDir(targetDirectory, directoryOptions); - console.info(`%s was created.`, targetDirectory); + const result = { + filePath, + }; + // Create the target directory + const directoryOptions = { + mode: 0o2775, + }; + const { fileNameWithoutExtension, extension, fileNameWithExtension } = + getFileConstituents(filePath); + const targetDirectory = `${USERDATA_DIRECTORY}/covers/${fileNameWithoutExtension}`; + await fse.ensureDir(targetDirectory, directoryOptions); + console.info(`%s was created.`, targetDirectory); - const archive = new Unrar({ - path: path.resolve(filePath), - bin: `/usr/local/bin/unrar`, // this will change depending on Docker base OS - }); + const archive = new Unrar({ + path: path.resolve(filePath), + bin: `/usr/local/bin/unrar`, // this will change depending on Docker base OS + }); + return new Promise((resolve, reject) => { archive.list(async (err, entries) => { remove(entries, ({ type }) => type === "Directory"); const comicInfoXML = remove( @@ -175,13 +179,25 @@ export const extractComicInfoXMLFromRar = async ( if (err) { console.log("Failed to resize image:"); console.log(err); - return err; + reject(err); } console.log( "Image file resized with the following parameters: %o", info ); - return info; + // orchestrate result + Object.assign(result, { + name: fileNameWithoutExtension, + extension, + containedIn: path.resolve(fileNameWithExtension), + cover: { + filePath: path.relative( + process.cwd(), + `${targetDirectory}/${files[0].name}` + ), + }, + }); + resolve(result); }); // ComicInfo.xml extraction and parsing to JSON if (!isUndefined(comicInfoXML[0])) { @@ -200,12 +216,11 @@ export const extractComicInfoXMLFromRar = async ( comicInfoString ); console.log(comicInfoJSON); + Object.assign(result, { comicInfo: comicInfoJSON }); }); } }); - } catch (error) { - throw new Error(error); - } + }); }; export const extractComicInfoXMLFromZip = async ( @@ -277,13 +292,15 @@ export const extractComicInfoXMLFromZip = async ( ); comicInfoExtractionStream.on("end", async (data) => { console.log(`${comicInfoXML[0].file} was extracted.`); - const xml = await fs.readFile(`${targetDirectory}/${comicInfoXML[0].file}`); - const comicInfoJSON = await convertXMLToJSON(xml.toString()); + const xml = await fs.readFile( + `${targetDirectory}/${comicInfoXML[0].file}` + ); + const comicInfoJSON = await convertXMLToJSON( + xml.toString() + ); console.log(comicInfoJSON); }); } - - }); } catch (error) { throw new Error(error);