const XLSX = require('xlsx');const formidable = require('formidable');const Readable = require('stream').Readable;var fs = require('fs');
const streamify = (req) => { if(typeof req.on !== 'undefined') return req; const s = new Readable(); s._read = ()=>{}; s.push(new Buffer(req.body)); s.push(null); Object.assign(s, req); return s;};
module.exports = (context, req) => { const form = new formidable.IncomingForm(); form.parse(streamify(req), (err, fields, files) => { var f = Object.values(files)[0]; if(!f) { context.res = { status: 400, body: "Must submit a file for processing!" }; } else { const wb = XLSX.read(f.path, {type:"file"});
const ext = (fields.bookType || "csv").toLowerCase(); const out = XLSX.write(wb, {type:"string", bookType:ext});
context.res = { status: 200, headers: { "Content-Disposition": `attachment; filename="download.${ext}";` }, body: out }; } context.done(); });};