X-Git-Url: https://git.cworth.org/git?p=obsolete%2Fnotmuch-web;a=blobdiff_plain;f=node_modules%2Fexpress%2Fnode_modules%2Fconnect%2Flib%2Fmiddleware%2FbodyParser.js;fp=node_modules%2Fexpress%2Fnode_modules%2Fconnect%2Flib%2Fmiddleware%2FbodyParser.js;h=6de74db2368a8b4af44b50044f02301dec808903;hp=0000000000000000000000000000000000000000;hb=410c776334299b52b7df74c53dafe761ad51cf0d;hpb=df790f70fe96623e5d2469daedaf7114bde13426 diff --git a/node_modules/express/node_modules/connect/lib/middleware/bodyParser.js b/node_modules/express/node_modules/connect/lib/middleware/bodyParser.js new file mode 100644 index 0000000..6de74db --- /dev/null +++ b/node_modules/express/node_modules/connect/lib/middleware/bodyParser.js @@ -0,0 +1,91 @@ + +/*! + * Connect - bodyParser + * Copyright(c) 2010 Sencha Inc. + * Copyright(c) 2011 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var qs = require('qs'); + +/** + * Extract the mime type from the given request's + * _Content-Type_ header. + * + * @param {IncomingMessage} req + * @return {String} + * @api private + */ + +function mime(req) { + var str = req.headers['content-type'] || ''; + return str.split(';')[0]; +} + +/** + * Parse request bodies. + * + * By default _application/json_ and _application/x-www-form-urlencoded_ + * are supported, however you may map `connect.bodyParser.parse[contentType]` + * to a function of your choice to replace existing parsers, or implement + * one for other content-types. + * + * Examples: + * + * connect.createServer( + * connect.bodyParser() + * , function(req, res) { + * res.end('viewing user ' + req.body.user.name); + * } + * ); + * + * Since both _json_ and _x-www-form-urlencoded_ are supported by + * default, either of the following requests would result in the response + * of "viewing user tj". + * + * $ curl -d 'user[name]=tj' http://localhost/ + * $ curl -d '{"user":{"name":"tj"}}' -H "Content-Type: application/json" http://localhost/ + * + * @return {Function} + * @api public + */ + +exports = module.exports = function bodyParser(){ + return function bodyParser(req, res, next) { + var parser = exports.parse[mime(req)]; + if (parser && !req.body) { + var data = ''; + req.setEncoding('utf8'); + req.on('data', function(chunk) { data += chunk; }); + req.on('end', function(){ + req.rawBody = data; + try { + req.body = data + ? parser(data) + : {}; + } catch (err) { + return next(err); + } + next(); + }); + } else { + next(); + } + } +}; + +/** + * Supported decoders. + * + * - application/x-www-form-urlencoded + * - application/json + */ + +exports.parse = { + 'application/x-www-form-urlencoded': qs.parse + , 'application/json': JSON.parse +}; \ No newline at end of file