You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
885 B
47 lines
885 B
/*! |
|
* express |
|
* Copyright(c) 2009-2013 TJ Holowaychuk |
|
* Copyright(c) 2013 Roman Shtylman |
|
* Copyright(c) 2014-2015 Douglas Christopher Wilson |
|
* MIT Licensed |
|
*/ |
|
|
|
'use strict'; |
|
|
|
/** |
|
* Module dependencies. |
|
*/ |
|
|
|
var merge = require('utils-merge') |
|
var parseUrl = require('parseurl'); |
|
var qs = require('qs'); |
|
|
|
/** |
|
* @param {Object} options |
|
* @return {Function} |
|
* @api public |
|
*/ |
|
|
|
module.exports = function query(options) { |
|
var opts = merge({}, options) |
|
var queryparse = qs.parse; |
|
|
|
if (typeof options === 'function') { |
|
queryparse = options; |
|
opts = undefined; |
|
} |
|
|
|
if (opts !== undefined && opts.allowPrototypes === undefined) { |
|
// back-compat for qs module |
|
opts.allowPrototypes = true; |
|
} |
|
|
|
return function query(req, res, next){ |
|
if (!req.query) { |
|
var val = parseUrl(req).query; |
|
req.query = queryparse(val, opts); |
|
} |
|
|
|
next(); |
|
}; |
|
};
|
|
|