|
|
|
@ -1,66 +1,70 @@
|
|
|
|
|
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<string, any>, response: ResponseBuilder = new ResponseBuilder()): Response {
|
|
|
|
|
response.addHeader('Content-Type', 'application/problem+json')
|
|
|
|
|
.body(JSON.stringify(error))
|
|
|
|
|
.status(error.status ?? 500)
|
|
|
|
|
return response.build()
|
|
|
|
|
}
|
|
|
|
|
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<string, any>,
|
|
|
|
|
response: ResponseBuilder = new ResponseBuilder()
|
|
|
|
|
): Response {
|
|
|
|
|
return response
|
|
|
|
|
.addHeader('Content-Type', 'application/problem+json')
|
|
|
|
|
.body(JSON.stringify(error))
|
|
|
|
|
.status(error.status ?? 500)
|
|
|
|
|
.build()
|
|
|
|
|
}
|
|
|
|
|