request method
Future<Response>
request(
- Request request, {
- dynamic authenticated = true,
})
Implementation
Future<http.Response> request(
http.Request request, {
authenticated = true,
}) async {
// authenticated request
if (authenticated) {
if (accessToken == null || accessToken!.isExpired) {
if (refreshToken == null) {
_log.warning(
"Can't do authenticated request: missing or expired accessToken + missing refreshToken.");
throw UnauthenticatedError();
}
// try again
await _refreshAccessToken();
return this.request(request, authenticated: authenticated);
}
request.headers["Authorization"] = "Bearer ${accessToken!.token}";
}
// send request
_log.fine(request.toString());
_log.finer(request.headers.toString());
_log.finest(request.body);
var client = http.Client();
late http.Response res;
try {
res = await http.Response.fromStream(await client.send(request));
} finally {
client.close();
}
// unauthorized
// if (res.statusCode == HttpStatus.unauthorized) {
// _accessToken_old == null;
// if (refreshToken == null) {
// throw UnauthorizedError(res.statusCode, res.reasonPhrase);
// }
// await _refreshAccessToken();
// return this.request(request, authenticated: authenticated);
// }
// // forbidden
// if (res.statusCode == HttpStatus.forbidden) {
// throw ForbiddenError();
// }
// other error
if (res.statusCode >= 400) {
throw FloraCloudError(res.statusCode, res.body);
}
return res;
}