« index

Coverage for /Users/yunong/workspace/node-restify/lib/plugins/query.js : 95%

45 lines | 43 run | 2 missing | 0 partial | 7 blocks | 6 blocks run | 1 blocks missing

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

  // Copyright 2012 Mark Cavage, Inc.  All rights reserved.
  
  var qs = require('qs');
  var url = require('url');
  
  var assert = require('assert-plus');
  
  
  /**
   * Returns a plugin that will parse the query string, and merge the results
   * into req.params.
   *
   * @return {Function} restify handler.
   * @throws {TypeError} on bad input
   */
  function queryParser(options) {
      if (!options)
          options = {};
      assert.object(options, 'options');
  
  
      function parseQueryString(req, res, next) {
          if (!req.getQuery()) {
              req.query = {};
              return (next());
          }
  
          req.query = qs.parse(req.getQuery());
          if (options.mapParams !== false) {
              Object.keys(req.query).forEach(function (k) {
                  if (req.params[k] && !options.overrideParams)
                      return (false);
  
                  req.params[k] = req.query[k];
                  return (true);
              });
          }
  
          return (next());
      }
  
      return (parseQueryString);
  }
  
  module.exports = queryParser;
« index | cover.io