💽 mongo import endpoint
This commit is contained in:
24
utils/comicinfo.xml
Normal file
24
utils/comicinfo.xml
Normal file
@@ -0,0 +1,24 @@
|
||||
<?xml version="1.0"?>
|
||||
<ComicInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<Title>Title of the Book</Title>
|
||||
<Summary>A description of the book</Summary>
|
||||
<Number>1</Number>
|
||||
<Count>3</Count>
|
||||
<Year>2010</Year>
|
||||
<Month>4</Month>
|
||||
<Writer>Author name</Writer>
|
||||
<Publisher>self</Publisher>
|
||||
<Genre>educational</Genre>
|
||||
<BlackAndWhite>No</BlackAndWhite>
|
||||
<Manga>No</Manga>
|
||||
<Characters>Superman</Characters>
|
||||
<PageCount>5</PageCount>
|
||||
<Pages>
|
||||
<Page Image="0" Type="FrontCover" ImageSize="139382" ImageWidth="774" ImageHeight="1024" />
|
||||
<Page Image="2" ImageSize="125736" ImageWidth="797" ImageHeight="1024" />
|
||||
<Page Image="1" ImageSize="127937" ImageWidth="797" ImageHeight="1024" />
|
||||
<Page Image="4" ImageSize="160902" ImageWidth="804" ImageHeight="1024" />
|
||||
<Page Image="3" ImageSize="211181" ImageWidth="804" ImageHeight="1024" />
|
||||
</Pages>
|
||||
</ComicInfo>
|
||||
@@ -205,12 +205,15 @@ export const unzip = async (
|
||||
}
|
||||
if (fileName !== "" && entry.type !== "Directory") {
|
||||
logger.info(`Attempting to write ${fileName}`);
|
||||
entry.pipe(createWriteStream(paths.targetPath + "/" + fileName));
|
||||
extractedFiles.push({
|
||||
name: fileName,
|
||||
fileSize: size,
|
||||
path: paths.targetPath,
|
||||
});
|
||||
entry
|
||||
.pipe(createWriteStream(paths.targetPath + "/" + fileName))
|
||||
.on("finish", () => {
|
||||
extractedFiles.push({
|
||||
name: fileName,
|
||||
fileSize: size,
|
||||
path: paths.targetPath,
|
||||
});
|
||||
});
|
||||
}
|
||||
entry.autodrain();
|
||||
}
|
||||
|
||||
@@ -6,11 +6,11 @@ import {
|
||||
IFolderData,
|
||||
} from "../interfaces/folder.interface";
|
||||
const Validator = require("fastest-validator");
|
||||
import { logger } from "./logger.utils";
|
||||
|
||||
export const validateComicBookMetadata = (
|
||||
comicBookMetadataObject: IExtractedComicBookCoverFile
|
||||
): boolean => {
|
||||
console.log(comicBookMetadataObject);
|
||||
const validator = new Validator();
|
||||
const sch = {
|
||||
name: { type: "string" },
|
||||
@@ -18,5 +18,13 @@ export const validateComicBookMetadata = (
|
||||
path: { type: "string" },
|
||||
};
|
||||
const check = validator.compile(sch);
|
||||
if (check(comicBookMetadataObject)) {
|
||||
logger.info(`Valid comic book metadata: ${comicBookMetadataObject}`);
|
||||
} else {
|
||||
logger.error(
|
||||
`Comic book metadata was invalid:
|
||||
${comicBookMetadataObject}`
|
||||
);
|
||||
}
|
||||
return check(comicBookMetadataObject);
|
||||
};
|
||||
|
||||
48
utils/xml.utils.ts
Normal file
48
utils/xml.utils.ts
Normal file
@@ -0,0 +1,48 @@
|
||||
/*
|
||||
* MIT License
|
||||
*
|
||||
* Copyright (c) 2021 Rishi Ghan
|
||||
*
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2021 Rishi Ghan
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
*/
|
||||
|
||||
import xml2js from "xml2js";
|
||||
import fs from "fs";
|
||||
import { logger } from "../utils/logger.utils";
|
||||
|
||||
export const convertXMLToJSON = (xmlPayload) => {
|
||||
const parser = new xml2js.Parser({
|
||||
mergeAttrs: true,
|
||||
trim: true,
|
||||
normalizeTags: true,
|
||||
});
|
||||
const xml = fs.readFileSync(__dirname + "/comicinfo.xml", "utf8");
|
||||
return parser
|
||||
.parseStringPromise(xml)
|
||||
.then((result) => {
|
||||
return result;
|
||||
})
|
||||
.catch((error) => {
|
||||
logger.error(error);
|
||||
});
|
||||
};
|
||||
Reference in New Issue
Block a user