Files
liberama/server/core/BookConverter/index.js

46 lines
1.3 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
const fs = require('fs-extra');
const FileDetector = require('../FileDetector');
//порядок важен
const convertClassFactory = [
require('./ConvertFb2'),
require('./ConvertSamlib'),
require('./ConvertHtml'),
];
class BookConverter {
constructor(config) {
this.detector = new FileDetector();
this.convertFactory = [];
for (const convertClass of convertClassFactory) {
this.convertFactory.push(new convertClass(config));
}
}
async convertToFb2(inputFile, outputFile, url, callback) {
const fileType = await this.detector.detectFile(inputFile);
const data = await fs.readFile(inputFile);
let result = false;
for (const convert of this.convertFactory) {
result = convert.run(data, {inputFile, url, callback, fileType});
if (result) {
await fs.writeFile(outputFile, result);
break;
}
}
if (!result) {
if (fileType)
throw new Error(`Этот формат файла не поддерживается: ${fileType.mime}`);
else {
throw new Error(`Не удалось определить формат файла: ${url}`);
}
}
callback(100);
}
}
module.exports = BookConverter;