From 716b8b5b9ac0d0417267ea6d849538445f485bb8 Mon Sep 17 00:00:00 2001 From: Book Pauk Date: Wed, 27 Feb 2019 23:19:18 +0700 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D1=80=D0=B0=D1=81=D0=BF=D0=B0=D0=BA=D0=BE=D0=B2=D0=BA=D1=83=20?= =?UTF-8?q?=D0=B2=D0=BB=D0=BE=D0=B6=D0=B5=D0=BD=D0=BD=D1=8B=D1=85=20=D0=B0?= =?UTF-8?q?=D1=80=D1=85=D0=B8=D0=B2=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/core/BookConverter/index.js | 17 ++++++++++++++++- server/core/FileDecompressor.js | 4 ++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/server/core/BookConverter/index.js b/server/core/BookConverter/index.js index ec3515be..6249b911 100644 --- a/server/core/BookConverter/index.js +++ b/server/core/BookConverter/index.js @@ -23,8 +23,15 @@ class BookConverter { async convertToFb2(inputFiles, outputFile, url, callback) { const selectedFileType = await this.detector.detectFile(inputFiles.selectedFile); - const data = await fs.readFile(inputFiles.selectedFile); + + let selectedFileType2 = null; + let data2 = null; + if (inputFiles.nesting) { + selectedFileType2 = await this.detector.detectFile(inputFiles.nesting.selectedFile); + data2 = await fs.readFile(inputFiles.nesting.selectedFile); + } + let result = false; for (const convert of this.convertFactory) { result = await convert.run(data, {inputFiles, url, callback, dataType: selectedFileType}); @@ -32,6 +39,14 @@ class BookConverter { await fs.writeFile(outputFile, result); break; } + + if (inputFiles.nesting) { + result = await convert.run(data2, {inputFiles: inputFiles.nesting, url, callback, dataType: selectedFileType2}); + if (result) { + await fs.writeFile(outputFile, result); + break; + } + } } if (!result) { diff --git a/server/core/FileDecompressor.js b/server/core/FileDecompressor.js index a6864f97..9948147b 100644 --- a/server/core/FileDecompressor.js +++ b/server/core/FileDecompressor.js @@ -73,6 +73,10 @@ class FileDecompressor { result.selectedFile = sel; result.fileList = fileList; + if (sel != filename) { + result.nesting = await this.decompressFile(sel, `${outputDir}/${utils.randomHexString(10)}`); + } + return result; }