From 4ddf28f34414c93b4f677c7532119494843c2f47 Mon Sep 17 00:00:00 2001 From: Book Pauk Date: Mon, 28 Oct 2019 15:55:26 +0700 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=20unpack?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/core/ZipStreamer.js | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/server/core/ZipStreamer.js b/server/core/ZipStreamer.js index 7c6b1a30..50eec0c7 100644 --- a/server/core/ZipStreamer.js +++ b/server/core/ZipStreamer.js @@ -52,7 +52,26 @@ class ZipStreamer { })().catch(reject); }); } - unpack(zipFile, entryCallback) { + unpack(zipFile, outputDir, entryCallback) { + return new Promise((resolve, reject) => { + entryCallback = (entryCallback ? entryCallback : () => {}); + const unzip = new unzipStream({file: zipFile}); + + let files = []; + unzip.on('extract', (en) => { + const entry = {path: en.name, size: en.size, compressedSize: en.compressedSize}; + entryCallback(entry); + files.push(entry); + }); + + unzip.on('ready', () => { + unzip.extract(null, outputDir, (err) => { + if (err) reject(err); + unzip.close(); + resolve(files); + }); + }); + }); } }