|
@@ -13,18 +13,23 @@ import { logger, imagesPath, fileNameConvention, sceneFileNameBlackList } from '
|
|
|
*/
|
|
|
export const asyncMiddleware = fn => (req, res, next) => {
|
|
|
Promise.resolve(fn(req, res, next)).catch(err => {
|
|
|
- // Check whether the error is a boom error
|
|
|
- if (!err.isBoom) {
|
|
|
- // The error was not recognized, send a 500 HTTP error
|
|
|
- return next(boom.internal(err))
|
|
|
- }
|
|
|
- // It is a boom error, pass it to the error handler
|
|
|
next(err)
|
|
|
})
|
|
|
}
|
|
|
|
|
|
// Middleware to handle middleware errors
|
|
|
export const errorHandler = (err, req, res, next) => {
|
|
|
+ // Check whether the error is a boom error
|
|
|
+ if (!err.isBoom) {
|
|
|
+ // Check if error is invalid JSON body
|
|
|
+ if (err instanceof SyntaxError && err.status === 400 && err.hasOwnProperty('body'))
|
|
|
+ err = boom.badRequest(err)
|
|
|
+ else {
|
|
|
+ // The error was not recognized, send a 500 HTTP error
|
|
|
+ err = boom.internal(err)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
const { output: { payload } } = err
|
|
|
|
|
|
// Pass the error to the logging handler
|
|
@@ -51,7 +56,7 @@ export const errorHandler = (err, req, res, next) => {
|
|
|
* @throws missing parameters
|
|
|
*/
|
|
|
export const checkRequiredParameters = (requiredParameters, parameters) => {
|
|
|
- if (!requiredParameters.every(aRequiredParameter => Object.keys(parameters).includes(aRequiredParameter)))
|
|
|
+ if (!requiredParameters.every(aRequiredParameter => parameters.hasOwnProperty(aRequiredParameter)))
|
|
|
throw boom.badRequest(`Missing parameter(s). Required parameters : ${requiredParameters.join(', ')}.`)
|
|
|
}
|
|
|
|