intercept method
Future<HttpResponse>
intercept(
- HttpRequest request,
- CancellationToken token,
- HttpRequestHandler next
override
Implementation
@override
Future<HttpResponse> intercept(HttpRequest request, CancellationToken token,
HttpRequestHandler next) async {
if (!allowedOrigins.contains(request.uri.origin)) {
return next(request, token);
}
final credential = await token.race(coordinator.provider.getToken());
final response = await next(_authorize(request, credential), token);
final safe = {HttpMethod.get, HttpMethod.head, HttpMethod.options}
.contains(request.method);
if (response.statusCode != 401 ||
request.body?.isReplayable == false ||
(!safe && !replayWrites)) {
return response;
}
await response.dispose();
final refreshed = await coordinator.refresh(credential, token);
return next(_authorize(request, refreshed), token);
}