mirror of
https://github.com/spacebarchat/server.git
synced 2024-11-09 12:12:35 +01:00
Merge pull request #1189 from greysilly7/dev/bodyparser
This commit is contained in:
commit
08fc90a879
@ -20,6 +20,19 @@ import bodyParser, { OptionsJson } from "body-parser";
|
|||||||
import { NextFunction, Request, Response } from "express";
|
import { NextFunction, Request, Response } from "express";
|
||||||
import { HTTPError } from "lambert-server";
|
import { HTTPError } from "lambert-server";
|
||||||
|
|
||||||
|
const errorMessages: { [key: string]: [string, number] } = {
|
||||||
|
"entity.too.large": ["Request body too large", 413],
|
||||||
|
"entity.parse.failed": ["Invalid JSON body", 400],
|
||||||
|
"entity.verify.failed": ["Entity verification failed", 403],
|
||||||
|
"request.aborted": ["Request aborted", 400],
|
||||||
|
"request.size.invalid": ["Request size did not match content length", 400],
|
||||||
|
"stream.encoding.set": ["Stream encoding should not be set", 500],
|
||||||
|
"stream.not.readable": ["Stream is not readable", 500],
|
||||||
|
"parameters.too.many": ["Too many parameters", 413],
|
||||||
|
"charset.unsupported": ["Unsupported charset", 415],
|
||||||
|
"encoding.unsupported": ["Unsupported content encoding", 415],
|
||||||
|
};
|
||||||
|
|
||||||
export function BodyParser(opts?: OptionsJson) {
|
export function BodyParser(opts?: OptionsJson) {
|
||||||
const jsonParser = bodyParser.json(opts);
|
const jsonParser = bodyParser.json(opts);
|
||||||
|
|
||||||
@ -29,8 +42,15 @@ export function BodyParser(opts?: OptionsJson) {
|
|||||||
|
|
||||||
jsonParser(req, res, (err) => {
|
jsonParser(req, res, (err) => {
|
||||||
if (err) {
|
if (err) {
|
||||||
// TODO: different errors for body parser (request size limit, wrong body type, invalid body, ...)
|
const [message, status] = errorMessages[err.type] || [
|
||||||
return next(new HTTPError("Invalid Body", 400));
|
"Invalid Body",
|
||||||
|
400,
|
||||||
|
];
|
||||||
|
const errorMessage =
|
||||||
|
message.includes("charset") || message.includes("encoding")
|
||||||
|
? `${message} "${err.charset || err.encoding}"`
|
||||||
|
: message;
|
||||||
|
return next(new HTTPError(errorMessage, status));
|
||||||
}
|
}
|
||||||
next();
|
next();
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user