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 , res , next ) { res . fail = options => { const { status = HttpStatusCode . BAD_REQUEST_400 , message , title , type , data , instance } = options ; const extension = new ProblemDocumentExtension ( { ... data , docs : res . locals . docUrl , code : type , error : message } ) ; res . status ( status ) ; res . setHeader ( 'Content-Type' , 'application/problem+json' ) ; const json = new ProblemDocument ( { status , title , instance , detail : message , type : type ? `https://docs.joinpeertube.org/api-rest-reference.html#section/Errors/${ type }` : undefined } , extension ) ; logger . debug ( 'Bad HTTP request.' , { json } ) ; res . json ( json ) ; } ; if ( next ) next ( ) ; } export { apiFailMiddleware } ;