🔫 Added error interface for comic cover methods
This commit is contained in:
@@ -39,3 +39,9 @@ export interface IExtractedComicBookCoverFile {
|
|||||||
path: string;
|
path: string;
|
||||||
fileSize: number;
|
fileSize: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface IExtractComicBookCoverErrorResponse {
|
||||||
|
message: string;
|
||||||
|
errorCode: string;
|
||||||
|
data: string;
|
||||||
|
}
|
||||||
|
|||||||
@@ -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",
|
||||||
|
};
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user