Skip to content

Commit 149966b

Browse files
Shawn DellyssePhillip9587
authored andcommitted
converted text parser to use generic parser
1 parent bd0601b commit 149966b

File tree

2 files changed

+7
-105
lines changed

2 files changed

+7
-105
lines changed

lib/types/text.js

Lines changed: 7 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,8 @@
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
}

test/text.js

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,6 @@ describe('bodyParser.text()', function () {
2020
.expect(200, '"user is tobi"', done)
2121
})
2222

23-
it('should parse text/plain with a custom parser', function (done) {
24-
request(createServer({
25-
parser: function (input) { return input.toUpperCase() }
26-
}))
27-
.post('/')
28-
.set('Content-Type', 'text/plain')
29-
.send('user is tobi')
30-
.expect(200, '"USER IS TOBI"', done)
31-
})
32-
3323
it('should 400 when invalid content-length', function (done) {
3424
var textParser = bodyParser.text()
3525
var server = createServer(function (req, res, next) {

0 commit comments

Comments
 (0)