twitst4tz

twitter statistics web application
Log | Files | Refs | README | LICENSE

query.js (885B)


      1 /*!
      2  * express
      3  * Copyright(c) 2009-2013 TJ Holowaychuk
      4  * Copyright(c) 2013 Roman Shtylman
      5  * Copyright(c) 2014-2015 Douglas Christopher Wilson
      6  * MIT Licensed
      7  */
      8 
      9 'use strict';
     10 
     11 /**
     12  * Module dependencies.
     13  */
     14 
     15 var merge = require('utils-merge')
     16 var parseUrl = require('parseurl');
     17 var qs = require('qs');
     18 
     19 /**
     20  * @param {Object} options
     21  * @return {Function}
     22  * @api public
     23  */
     24 
     25 module.exports = function query(options) {
     26   var opts = merge({}, options)
     27   var queryparse = qs.parse;
     28 
     29   if (typeof options === 'function') {
     30     queryparse = options;
     31     opts = undefined;
     32   }
     33 
     34   if (opts !== undefined && opts.allowPrototypes === undefined) {
     35     // back-compat for qs module
     36     opts.allowPrototypes = true;
     37   }
     38 
     39   return function query(req, res, next){
     40     if (!req.query) {
     41       var val = parseUrl(req).query;
     42       req.query = queryparse(val, opts);
     43     }
     44 
     45     next();
     46   };
     47 };