1010 * Module dependencies.
1111 */
1212
13- var bytes = require ( 'bytes' )
14- var debug = require ( 'debug' ) ( 'body-parser:raw' )
15- var isFinished = require ( 'on-finished' ) . isFinished
16- var read = require ( '../read' )
17- var typeis = require ( 'type-is' )
13+ var assign = require ( 'object-assign' )
14+ var genericParser = require ( '../generic-parser' )
1815
1916/**
2017 * Module exports.
@@ -33,77 +30,9 @@ module.exports = raw
3330function raw ( options ) {
3431 var opts = options || { }
3532
36- var inflate = opts . inflate !== false
37- var limit = typeof opts . limit !== 'number'
38- ? bytes . parse ( opts . limit || '100kb' )
39- : opts . limit
4033 var type = opts . type || 'application/octet-stream'
41- var verify = opts . verify || false
42- var parser = opts . parser || defaultParser
4334
44- if ( verify !== false && typeof verify !== 'function' ) {
45- throw new TypeError ( 'option verify must be function' )
46- }
47-
48- // create the appropriate type checking function
49- var shouldParse = typeof type !== 'function'
50- ? typeChecker ( type )
51- : type
52-
53- function parse ( buf ) {
54- return parser ( buf )
55- }
56-
57- return function rawParser ( req , res , next ) {
58- if ( isFinished ( req ) ) {
59- debug ( 'body already parsed' )
60- next ( )
61- return
62- }
63-
64- if ( ! ( 'body' in req ) ) {
65- req . body = undefined
66- }
67-
68- // skip requests without bodies
69- if ( ! typeis . hasBody ( req ) ) {
70- debug ( 'skip empty body' )
71- next ( )
72- return
73- }
74-
75- debug ( 'content-type %j' , req . headers [ 'content-type' ] )
76-
77- // determine if request should be parsed
78- if ( ! shouldParse ( req ) ) {
79- debug ( 'skip parsing' )
80- next ( )
81- return
82- }
83-
84- // read
85- read ( req , res , next , parse , debug , {
86- encoding : null ,
87- inflate : inflate ,
88- limit : limit ,
89- verify : verify
90- } )
91- }
92- }
93-
94- function defaultParser ( buf ) {
95- return buf
96- }
97-
98- /**
99- * Get the simple type checker.
100- *
101- * @param {string } type
102- * @return {function }
103- */
104-
105- function typeChecker ( type ) {
106- return function checkType ( req ) {
107- return Boolean ( typeis ( req , type ) )
108- }
35+ return genericParser ( assign ( { } , opts , {
36+ type : type
37+ } ) )
10938}
0 commit comments