Skip to content

Commit bd0601b

Browse files
Shawn DellyssePhillip9587
authored andcommitted
converted raw parser to use generic parser
1 parent 825a78b commit bd0601b

File tree

3 files changed

+10
-88
lines changed

3 files changed

+10
-88
lines changed

lib/generic-parser.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ var bytes = require('bytes')
1616
var contentType = require('content-type')
1717
var createError = require('http-errors')
1818
var debug = require('debug')('body-parser:generic')
19+
var isFinished = require('on-finished').isFinished
1920
var read = require('./read')
2021
var typeis = require('type-is')
2122

@@ -62,13 +63,15 @@ function generic (options) {
6263
: charset
6364

6465
return function genericParser (req, res, next) {
65-
if (req._body) {
66+
if (isFinished(req)) {
6667
debug('body already parsed')
6768
next()
6869
return
6970
}
7071

71-
req.body = req.body || {}
72+
if (!('body' in req)) {
73+
req.body = undefined
74+
}
7275

7376
// skip requests without bodies
7477
if (!typeis.hasBody(req)) {

lib/types/raw.js

Lines changed: 5 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,8 @@
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
3330
function 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
}

test/raw.js

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,6 @@ describe('bodyParser.raw()', function () {
2020
.expect(200, 'buf:746865207573657220697320746f6269', done)
2121
})
2222

23-
it('should parse application/octet-stream with a custom parser', function (done) {
24-
request(createServer({
25-
parser: function (body) { return body.toString('utf8') }
26-
}))
27-
.post('/')
28-
.set('Content-Type', 'application/octet-stream')
29-
.send('the user is tobi')
30-
.expect(200, '"the user is tobi"', done)
31-
})
32-
3323
it('should 400 when invalid content-length', function (done) {
3424
var rawParser = bodyParser.raw()
3525
var server = createServer(function (req, res, next) {

0 commit comments

Comments
 (0)