39 lines
1.0 KiB
JavaScript
39 lines
1.0 KiB
JavaScript
var TypedError = require("error/typed")
|
|
|
|
var parseArguments = require("./parse-arguments.js")
|
|
var jsonBody = require("./json.js")
|
|
var formBody = require("./form.js")
|
|
|
|
var jsonType = "application/json"
|
|
var formType = "application/x-www-form-urlencoded"
|
|
var INVALID_CONTENT_TYPE = TypedError({
|
|
message: "Could not parse content type header: {contentType}",
|
|
type: "invalid.content.type",
|
|
statusCode: 415,
|
|
contentType: null
|
|
})
|
|
|
|
module.exports = anyBody
|
|
|
|
function anyBody(req, res, opts, callback) {
|
|
var args = parseArguments(req, res, opts, callback)
|
|
req = args.req
|
|
res = args.res
|
|
opts = args.opts
|
|
callback = args.callback
|
|
|
|
if (!callback) {
|
|
return anyBody.bind(null, req, res, opts)
|
|
}
|
|
|
|
var contentType = req.headers["content-type"] || ""
|
|
|
|
if (contentType.indexOf(jsonType) !== -1) {
|
|
jsonBody(req, res, opts, callback)
|
|
} else if (contentType.indexOf(formType) !== -1) {
|
|
formBody(req, res, opts, callback)
|
|
} else {
|
|
callback(INVALID_CONTENT_TYPE({contentType: contentType}))
|
|
}
|
|
}
|