1010 * Module dependencies.
1111 */
1212
13- var bytes = require ( 'bytes' )
14- var contentType = require ( 'content-type' )
15- var debug = require ( 'debug' ) ( 'body-parser:text' )
16- var isFinished = require ( 'on-finished' ) . isFinished
17- var read = require ( '../read' )
18- var typeis = require ( 'type-is' )
13+ var assign = require ( 'object-assign' )
14+ var genericParser = require ( '../generic-parser' )
1915
2016/**
2117 * Module exports.
@@ -35,95 +31,11 @@ function text (options) {
3531 var opts = options || { }
3632
3733 var defaultCharset = opts . defaultCharset || 'utf-8'
38- var inflate = opts . inflate !== false
39- var limit = typeof opts . limit !== 'number'
40- ? bytes . parse ( opts . limit || '100kb' )
41- : opts . limit
4234 var type = opts . type || 'text/plain'
43- var verify = opts . verify || false
44- var parser = opts . parser || defaultParser
4535
46- if ( verify !== false && typeof verify !== 'function' ) {
47- throw new TypeError ( 'option verify must be function' )
48- }
49-
50- // create the appropriate type checking function
51- var shouldParse = typeof type !== 'function'
52- ? typeChecker ( type )
53- : type
54-
55- function parse ( buf ) {
56- return parser ( buf )
57- }
58-
59- return function textParser ( req , res , next ) {
60- if ( isFinished ( req ) ) {
61- debug ( 'body already parsed' )
62- next ( )
63- return
64- }
65-
66- if ( ! ( 'body' in req ) ) {
67- req . body = undefined
68- }
69-
70- // skip requests without bodies
71- if ( ! typeis . hasBody ( req ) ) {
72- debug ( 'skip empty body' )
73- next ( )
74- return
75- }
76-
77- debug ( 'content-type %j' , req . headers [ 'content-type' ] )
78-
79- // determine if request should be parsed
80- if ( ! shouldParse ( req ) ) {
81- debug ( 'skip parsing' )
82- next ( )
83- return
84- }
85-
86- // get charset
87- var charset = getCharset ( req ) || defaultCharset
88-
89- // read
90- read ( req , res , next , parse , debug , {
91- encoding : charset ,
92- inflate : inflate ,
93- limit : limit ,
94- verify : verify
95- } )
96- }
97- }
98-
99- function defaultParser ( buf ) {
100- return buf
101- }
102-
103- /**
104- * Get the charset of a request.
105- *
106- * @param {object } req
107- * @api private
108- */
109-
110- function getCharset ( req ) {
111- try {
112- return ( contentType . parse ( req ) . parameters . charset || '' ) . toLowerCase ( )
113- } catch ( e ) {
114- return undefined
115- }
116- }
117-
118- /**
119- * Get the simple type checker.
120- *
121- * @param {string } type
122- * @return {function }
123- */
124-
125- function typeChecker ( type ) {
126- return function checkType ( req ) {
127- return Boolean ( typeis ( req , type ) )
128- }
36+ return genericParser ( assign ( { } , opts , {
37+ type : type ,
38+ charset : function validateCharset ( ) { return true } ,
39+ defaultCharset : defaultCharset
40+ } ) )
12941}
0 commit comments