make500 method
Makes Response for 500 error
Respects 'accept' request header and returns corresponding Response
Implementation
Response make500(Context ctx, Object error, [StackTrace? stack]) {
final String accept = ctx.req.headers.value(HttpHeaders.acceptHeader) ?? '';
final List<String> acceptList = accept.split(',');
if (acceptList.contains('text/html')) {
return Response(
body: _write500Html(ctx, error, stack),
statusCode: HttpStatus.notFound,
mimeType: MimeTypes.html);
} else if (acceptList.contains('application/json') ||
acceptList.contains('text/json')) {
final data = <String, dynamic>{
'error': error.toString(),
};
if (stack != null)
data['stack'] =
Trace.from(stack).frames.map((f) => f.toString()).toList();
return Response.json(data, statusCode: 500);
} /* TODO else if (acceptList.contains('application/xml')) {
final data = <String, dynamic>{
'error': error.toString(),
};
if (stack != null) data['stack'] = Trace.format(stack);
return Response.xml(data, statusCode: 500);
} */
else {
return Response(
body: _write500Html(ctx, error, stack),
statusCode: 500,
mimeType: MimeTypes.html);
}
}