UNPKG

ahr2

Version:

An Abstract Http Request for Node.JS (http/https) and the Browser (XMLHttpRequeuest2). For `npm install ahr2` for Node and `pakmanager build` for Ender / Pakmanager. It should be required as `var request = require('ahr2')`

62 lines (52 loc) 1.35 kB
/*jshint strict:true node:true es5:true onevar:true laxcomma:true laxbreak:true eqeqeq:true immed:true latedef:true*/ (function () { "use strict"; var fs = require('fs'); function nodeFileClient(req, res) { var options = req.userOptions , size = 0 , data = [] , reqEv; function onFreadData(chunk) { size += chunk.length; res.emit('progress', { lengthComputable: true , loaded: size , total: size }); res.emit('data', chunk); data.push(chunk); } function onFreadError(err) { res.emit('error', err); } function onFreadEnd() { var buffer = Buffer.concat(data); res.emit('load', { lengthComputable: true , loaded: size , total: size , target: { result: buffer } }); } // Request automatically succeeds reqEv = { lengthComputable: false, loaded: 0, total: undefined }; req.emit('loadstart', reqEv); req.emit('load', reqEv); req.emit('loadend', reqEv); // Response... not so much // TODO JSON, MIME, etc res = fs.createReadStream(options.pathname); res.on('error', onFreadError); res.on('data', onFreadData); res.on('end', onFreadEnd); return res; } module.exports = nodeFileClient; }());