Наладил сжатие файлов книг в /tmp
This commit is contained in:
@@ -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;
|
||||
Reference in New Issue
Block a user