import ResponseBuilder from '../ResponseBuilder' /** * Add headers: * Content-Type: application/problem+json * * following https://www.rfc-editor.org/rfc/rfc7807.html */ export default interface RFC7807 { /** * A URI reference [RFC3986] that identifies the * problem type. * * This specification encourages that, when * dereferenced, it provide human-readable documentation for the * problem type (e.g., using HTML [W3C.REC-html5-20141028]). * * When * this member is not present, its value is assumed to be * "about:blank" */ type?: string /** * A short, human-readable summary of the problem * type. * * It SHOULD NOT change from occurrence to occurrence of the * problem, except for purposes of localization (e.g., using * proactive content negotiation; see [RFC7231], Section 3.4). */ title?: string /** * The HTTP status code ([RFC7231], Section 6) * generated by the origin server for this occurrence of the problem. */ status?: number /** * A human-readable explanation specific to this * occurrence of the problem. */ details?: string /** * A URI reference that identifies the specific * occurrence of the problem. * * It may or may not yield further * information if dereferenced. */ instance?: string } /** * * @param error the error (base items are type, status, title details and instance) * @returns */ export function buildRFC7807( error: RFC7807 & Record, response: ResponseBuilder = new ResponseBuilder() ): Response { return response .addHeader('Content-Type', 'application/problem+json') .body(JSON.stringify(error)) .status(error.status ?? 500) .build() }