Наладил сжатие файлов книг в /tmp

This commit is contained in:
Book Pauk
2019-01-21 18:09:50 +07:00
parent 2fd737a2a7
commit 8c85b7be37
6 changed files with 53 additions and 6 deletions

View File

@@ -1,3 +1,6 @@
const fs = require('fs-extra');
const zlib = require('zlib');
const crypto = require('crypto');
const decompress = require('decompress');
const FileDetector = require('./FileDetector');
@@ -28,6 +31,29 @@ class FileDecompressor {
return result;
}
async gzipBuffer(buf) {
return new Promise((resolve, reject) => {
zlib.gzip(buf, {level: 1}, (err, result) => {
if (err) reject(err);
resolve(result);
});
});
}
async gzipFileIfNotExists(filename, outDir) {
const buf = await fs.readFile(filename);
const hash = crypto.createHash('sha256').update(buf).digest('hex');
const outFilename = `${outDir}/${hash}`;
if (!await fs.pathExists(outFilename)) {
await fs.writeFile(outFilename, await this.gzipBuffer(buf))
}
return outFilename;
}
}
module.exports = FileDecompressor;