smartfacecloud-emulator-dispatcher
Version:
Handles Emulator Dispatcher Part of SmartfaceCloud
53 lines (45 loc) • 1.28 kB
JavaScript
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;