overleaf/services/web/app/src/infrastructure/BodyParserWrapper.js
Simon Detheridge 3d9c8f80f4 Merge pull request #10227 from overleaf/spd-td-opentelementry
Add opentelemetry to dev environment

GitOrigin-RevId: 31a8234197337a264412b411429692525793c8b0
2022-11-01 09:04:53 +00:00

35 lines
820 B
JavaScript

const bodyParser = require('body-parser')
const HttpErrorHandler = require('../Features/Errors/HttpErrorHandler')
function isBodyParserError(nextArg) {
if (nextArg instanceof Error) {
return (
nextArg.statusCode &&
nextArg.statusCode >= 400 &&
nextArg.statusCode < 600
)
}
return false
}
const wrapBodyParser = method => opts => {
const middleware = bodyParser[method](opts)
return function bodyParser(req, res, next) {
middleware(req, res, nextArg => {
if (isBodyParserError(nextArg)) {
return HttpErrorHandler.handleErrorByStatusCode(
req,
res,
nextArg,
nextArg.statusCode
)
}
next(nextArg)
})
}
}
module.exports = {
urlencoded: wrapBodyParser('urlencoded'),
json: wrapBodyParser('json'),
}