UNPKG

smartfacecloud-emulator-dispatcher

Version:

Handles Emulator Dispatcher Part of SmartfaceCloud

53 lines (45 loc) 1.28 kB
const fs = require('fs'); const async = require('async'); const Zipper = require('./Zipper'); const DescriptorFile = require('./DescriptorFile'); const LogToConsole = require('../common/LogToConsole'); function FilePackager() { var zipper = new Zipper(); var descriptor = new DescriptorFile(); var log = new LogToConsole(true, '[FILE]').log; var fileMap = {}; this.addFile = function(fullPath, fileName, fileNameWithType) { fileMap[fullPath] = { fileName: fileName, fileNameWithType: fileNameWithType }; }; this.finalize = function(callback) { var queue = async.queue(function(fullPath, cb) { var fileName = fileMap[fullPath].fileName; fs.readFile(fullPath, function(err, data) { if (err) { log("**ERROR** Couldn't add file", fullPath); } else { descriptor.add(fileName, fileMap[fullPath].fileNameWithType); zipper.add(fileName, data); } cb(); }); }, 20); queue.drain = function() { zipper.add(descriptor.FILE_NAME, descriptor.toString()); zipper.createZip().then(callback.bind(null, null), callback); }; queue.push(Object.keys(fileMap)); }; this.destroy = function() { zipper.zip = null; zipper = null; descriptor = null; log = null; fileMap = null; }; } module.exports = FilePackager;