Initial commit for OpenECOMP SDN-C OA&M
[sdnc/oam.git] / dgbuilder / dgeflows / node_modules / body-parser / lib / types / raw.js
1 /*!
2  * body-parser
3  * Copyright(c) 2014 Douglas Christopher Wilson
4  * MIT Licensed
5  */
6
7 /**
8  * Module dependencies.
9  */
10
11 var bytes = require('bytes')
12 var read = require('../read')
13 var typeis = require('type-is')
14
15 /**
16  * Module exports.
17  */
18
19 module.exports = raw
20
21 /**
22  * Create a middleware to parse raw bodies.
23  *
24  * @param {object} [options]
25  * @return {function}
26  * @api public
27  */
28
29 function raw(options) {
30   options = options || {};
31
32   var inflate = options.inflate !== false
33   var limit = typeof options.limit !== 'number'
34     ? bytes(options.limit || '100kb')
35     : options.limit
36   var type = options.type || 'application/octet-stream'
37   var verify = options.verify || false
38
39   if (verify !== false && typeof verify !== 'function') {
40     throw new TypeError('option verify must be function')
41   }
42
43   function parse(buf) {
44     return buf
45   }
46
47   return function rawParser(req, res, next) {
48     if (req._body) return next()
49     req.body = req.body || {}
50
51     if (!typeis(req, type)) return next()
52
53     // read
54     read(req, res, next, parse, {
55       encoding: null,
56       inflate: inflate,
57       limit: limit,
58       verify: verify
59     })
60   }
61 }