75 lines
2.3 KiB
TypeScript
75 lines
2.3 KiB
TypeScript
import router from "../router";
|
|
import { default as paginate } from "express-paginate";
|
|
import { IExtractedComicBookCoverFile, IExtractionOptions } from "../../interfaces/folder.interface";
|
|
import { Request, Response } from "express";
|
|
import _ from "lodash";
|
|
import H from "highland";
|
|
import axios from "axios";
|
|
import oboe from "oboe";
|
|
import fs from "fs";
|
|
import { Readable } from "stream";
|
|
import through2 from "through2";
|
|
|
|
const getData = (source) => {
|
|
const response: { value: string }[] = [];
|
|
|
|
for (let index = 0; index < 100; index++) {
|
|
response.push({ value: "rishi " + index });
|
|
}
|
|
|
|
return response;
|
|
};
|
|
router.route("/getComicCovers").post(async (req: Request, res: Response) => {
|
|
typeof req.body.extractionOptions === "object"
|
|
? req.body.extractionOptions
|
|
: {};
|
|
const foo = await axios({
|
|
url: "http://localhost:3853/api/import/getComicCovers",
|
|
method: "POST",
|
|
data: {
|
|
extractionOptions: req.body.extractionOptions,
|
|
walkedFolders: req.body.walkedFolders,
|
|
},
|
|
});
|
|
const stream = new Readable({
|
|
objectMode: true,
|
|
highWaterMark: 1,
|
|
read() {},
|
|
});
|
|
|
|
// We create the stream transform using through2 library..
|
|
// We instruct it to handle objects, buffer size and transform function,
|
|
// that is, we convert our object to text to be able to send it through the stream response, which does not handle objects..
|
|
const ndjsonStream = through2(
|
|
{ objectMode: true, highWaterMark: 1 },
|
|
(data, enc, cb) => {
|
|
cb(null, JSON.stringify(data) + "\n");
|
|
},
|
|
);
|
|
|
|
// console.log(ndjsonStream);
|
|
// Through pipe we do a double addressing, our reading stream goes through the transformation
|
|
// to finally go through the stream response..
|
|
stream.pipe(ndjsonStream).pipe(res);
|
|
stream.push({ source1: foo.data });
|
|
stream.push(null);
|
|
});
|
|
|
|
router.route("/walkFolder").post(async (req: Request, res: Response) => {
|
|
const basePathToWalk =
|
|
typeof req.body.basePathToWalk === "string" ? req.body.basePathToWalk : "";
|
|
const walkedFolders = await axios
|
|
.request({
|
|
url: "http://localhost:3853/api/import/walkFolders",
|
|
method: "POST",
|
|
data: {
|
|
basePathToWalk,
|
|
},
|
|
})
|
|
.then((data) => data.data)
|
|
.catch((error) => error);
|
|
return res.json(walkedFolders);
|
|
});
|
|
|
|
export default router;
|