Name: js-handler/node_modules/restify/lib/plugins/body_parser.js 
1:
// Copyright 2012 Mark Cavage, Inc.  All rights reserved.
2:
 
3:
var assert = require('assert-plus');
4:
 
5:
var errors = require('../errors');
6:
 
7:
var bodyReader = require('./body_reader');
8:
var jsonParser = require('./json_body_parser');
9:
var formParser = require('./form_body_parser');
10:
var multipartParser = require('./multipart_parser');
11:
 
12:
 
13:
 
14:
///--- Globals
15:
 
16:
var UnsupportedMediaTypeError = errors.UnsupportedMediaTypeError;
17:
 
18:
 
19:
 
20:
///--- API
21:
 
22:
function bodyParser(options) {
23:
        assert.optionalObject(options, 'options');
24:
        options = options || {};
25:
        options.bodyReader = true;
26:
 
27:
        var read = bodyReader(options);
28:
        var parseForm = formParser(options);
29:
        var parseJson = jsonParser(options);
30:
        var parseMultipart = multipartParser(options);
31:
 
32:
        function parseBody(req, res, next) {
33:
                // Allow use of 'requestBodyOnGet' flag to allow for merging of
34:
                // the request body of a GET request into req.params
35:
                if (req.method === 'HEAD') {
36:
                        next();
37:
                        return;
38:
                }
39:
                if (req.method === 'GET') {
40:
                        if (!options.requestBodyOnGet) {
41:
                                next();
42:
                                return;
43:
                        }
44:
                }
45:
 
46:
                if (req.contentLength() === 0 && !req.isChunked()) {
47:
                        next();
48:
                        return;
49:
                }
50:
 
51:
                var parser;
52:
                var type = req.contentType();
53:
                switch (type) {
54:
                case 'application/json':
55:
                        parser = parseJson[0];
56:
                        break;
57:
                case 'application/x-www-form-urlencoded':
58:
                        parser = parseForm[0];
59:
                        break;
60:
                case 'multipart/form-data':
61:
                        parser = parseMultipart;
62:
                        break;
63:
                default:
64:
                        break;
65:
                }
66:
 
67:
                if (parser) {
68:
                        parser(req, res, next);
69:
                } else if (options && options.rejectUnknown) {
70:
                        next(new UnsupportedMediaTypeError(type));
71:
                } else {
72:
                        next();
73:
                }
74:
        }
75:
 
76:
        return ([read, parseBody]);
77:
}
78:
 
79:
module.exports = bodyParser;