intercept method
Future<HttpResponse>
intercept(
- HttpRequest request,
- CancellationToken token,
- HttpRequestHandler next
override
Implementation
@override
Future<HttpResponse> intercept(HttpRequest request, CancellationToken token,
HttpRequestHandler next) async {
final watch = Stopwatch()..start();
write({
'phase': 'request',
'method': request.method.value,
'url': '${request.uri.origin}${request.uri.path}',
'headers': redactor.redact(request.headers)
});
try {
final response = await next(request, token);
try {
write({
'phase': 'headers',
'status': response.statusCode,
'elapsedMicroseconds': watch.elapsedMicroseconds
});
} catch (_) {
await response.dispose();
rethrow;
}
return response;
} catch (error) {
write({
'phase': 'failure',
'errorType': error.runtimeType.toString(),
'elapsedMicroseconds': watch.elapsedMicroseconds
});
rethrow;
}
}