mStream/modules/download.js
2018-10-28 18:41:22 -04:00

39 lines
989 B
JavaScript

const archiver = require('archiver');
const fe = require('path');
const winston = require('winston');
exports.setup = function (mstream, program) {
mstream.post('/download', function (req, res) {
const archive = archiver('zip');
archive.on('error', function (err) {
winston.error(`Download Error: ${err.message}`);
res.status(500).json({ error: err.message });
});
res.attachment(`mstream-playlist.zip`);
//streaming magic
archive.pipe(res);
// Get the POSTed files
var fileArray;
if (req.allowedFiles) {
fileArray = allowedFiles;
} else {
fileArray = JSON.parse(req.body.fileArray);
}
for (var i in fileArray) {
// TODO: Confirm each item in posted data is a real file
const pathInfo = program.getVPathInfo(fileArray[i]);
if (pathInfo === false) {
continue;
}
archive.file(pathInfo.fullPath, { name: fe.basename(fileArray[i]) });
}
archive.finalize();
});
}