🔫 Added error interface for comic cover methods

This commit is contained in:
2021-04-19 11:45:29 -07:00
parent b53af0357b
commit e612eea7fd
2 changed files with 42 additions and 18 deletions

View File

@@ -39,3 +39,9 @@ export interface IExtractedComicBookCoverFile {
path: string; path: string;
fileSize: number; fileSize: number;
} }
export interface IExtractComicBookCoverErrorResponse {
message: string;
errorCode: string;
data: string;
}

View File

@@ -6,6 +6,7 @@ import fs from "fs";
import path from "path"; import path from "path";
import { logger } from "./logger.utils"; import { logger } from "./logger.utils";
import { import {
IExtractComicBookCoverErrorResponse,
IExtractedComicBookCoverFile, IExtractedComicBookCoverFile,
IExtractionOptions, IExtractionOptions,
IFolderData, IFolderData,
@@ -14,6 +15,8 @@ import {
export const unrar = async ( export const unrar = async (
extractionOptions: IExtractionOptions, extractionOptions: IExtractionOptions,
): Promise<IExtractedComicBookCoverFile> => { ): Promise<IExtractedComicBookCoverFile> => {
const comicCoversTargetPath =
extractionOptions.sourceFolder + extractionOptions.extractTarget;
const buf = Uint8Array.from( const buf = Uint8Array.from(
fs.readFileSync( fs.readFileSync(
extractionOptions.sourceFolder + extractionOptions.folderDetails.name, extractionOptions.sourceFolder + extractionOptions.folderDetails.name,
@@ -31,21 +34,25 @@ export const unrar = async (
logger.info(`Attempting to write ${extractedFile.fileHeader.name}`); logger.info(`Attempting to write ${extractedFile.fileHeader.name}`);
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
fs.writeFile(filePath + extractedFile.fileHeader.name, myBuffer, (err) => { fs.writeFile(
if (err) { comicCoversTargetPath + extractedFile.fileHeader.name,
logger.error("Failed to write file", err); myBuffer,
reject(err); (err) => {
} else { if (err) {
logger.info( logger.error("Failed to write file", err);
`The file ${extractedFile.fileHeader.name} was saved to disk.`, reject(err);
); } else {
resolve({ logger.info(
name: `${extractedFile.fileHeader.name}`, `The file ${extractedFile.fileHeader.name} was saved to disk.`,
path: `${filePath}`, );
fileSize: extractedFile.fileHeader.packSize, resolve({
}); name: `${extractedFile.fileHeader.name}`,
} path: comicCoversTargetPath,
}); fileSize: extractedFile.fileHeader.packSize,
});
}
},
);
}); });
}; };
@@ -81,6 +88,7 @@ export const unzip = async (
entry.autodrain(); entry.autodrain();
} }
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
logger.info("");
resolve(extractedFiles); resolve(extractedFiles);
}); });
}; };
@@ -106,20 +114,30 @@ export const unzipOne = async (): Promise<IExtractedComicBookCoverFile> => {
export const extractArchive = async ( export const extractArchive = async (
fileObject: IFolderData, fileObject: IFolderData,
): Promise<IExtractedComicBookCoverFile | IExtractedComicBookCoverFile[]> => { ): Promise<
| IExtractedComicBookCoverFile
| IExtractedComicBookCoverFile[]
| IExtractComicBookCoverErrorResponse
> => {
const sourceFolder = "./comics/"; const sourceFolder = "./comics/";
const targetComicCoversFolder = "covers"; const targetComicCoversFolder = "covers";
const extractionOptions: IExtractionOptions = { const extractionOptions: IExtractionOptions = {
...fileObject, folderDetails: fileObject,
extractTarget: "cover", extractTarget: "cover",
sourceFolder, sourceFolder,
targetComicCoversFolder, targetComicCoversFolder,
}; };
switch (fileObject.extension) { switch (fileObject.extension) {
case ".cbz": case ".cbz":
return await unzip(extractionOptions); return await unzip("j");
case ".cbr": case ".cbr":
return await unrar(extractionOptions); return await unrar(extractionOptions);
default:
return {
message: "File format not supported, yet.",
errorCode: "90",
data: "asda",
};
} }
}; };