import express from 'express'
import { ProblemDocument, ProblemDocumentExtension } from 'http-problem-details'
+import { logger } from '@server/helpers/logger'
import { HttpStatusCode } from '@shared/models'
function apiFailMiddleware (req: express.Request, res: express.Response, next: express.NextFunction) {
res.status(status)
res.setHeader('Content-Type', 'application/problem+json')
- res.json(new ProblemDocument({
+
+ const json = new ProblemDocument({
status,
title,
instance,
type: type
? `https://docs.joinpeertube.org/api-rest-reference.html#section/Errors/${type}`
: undefined
- }, extension))
+ }, extension)
+
+ logger.debug('Bad HTTP request.', { json })
+
+ res.json(json)
}
if (next) next()
}
+function handleStaticError (err: any, req: express.Request, res: express.Response, next: express.NextFunction) {
+ const message = err.message || ''
+
+ if (message.includes('ENOENT')) {
+ return res.fail({
+ status: err.status || HttpStatusCode.INTERNAL_SERVER_ERROR_500,
+ message: err.message,
+ type: err.name
+ })
+ }
+
+ return next(err)
+}
+
export {
- apiFailMiddleware
+ apiFailMiddleware,
+ handleStaticError
}