GT2/GT2-Android/node_modules/logfmt/lib/body_parser.js

52 lines
1.1 KiB
JavaScript

/*
Module dependencies.
*/
/*
JSON:
Parse logplex request bodies, providing the
parsed object as `req.body`.
Options: none
@param content_type {String} use when Content-Type matches this string
@param parser {Function} parsing function takes String body and returns new body
@return {Function}
@api public
*/
exports = module.exports = function(options) {
var limit;
if (options == null) options = {};
return function(req, res, next) {
if (req._body) return next();
var is_mime = req.header('content-type') === options.contentType;
if (!is_mime) return next();
req._body = true;
req.body = req.body || {};
var buf;
buf = "";
req.setEncoding("utf8");
req.on("data", function(chunk) {
return buf += chunk;
});
req.on("end", function() {
try {
var lines = []
buf.trim().split("\n").forEach(function(line){
lines.push(options.parser(line))
})
req.body = lines;
} catch (err) {
err.body = buf;
err.status = 400;
return next(err);
}
return next();
});
};
};