| /*! |
| * 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(); |
| }; |
| }; |