48 lines
		
	
	
		
			885 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			885 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /*!
 | |
|  * 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();
 | |
|   };
 | |
| };
 |