fetchUserRoles function
Fetch and store user roles.
Implementation
Future<UserRolesResponse> fetchUserRoles({
required String accessToken,
HttpClient? httpClient,
}) async {
final config = getOauthConfig();
final client = httpClient ?? HttpClient();
try {
final request = await client.getUrl(Uri.parse(config.rolesUrl));
request.headers.set('Authorization', 'Bearer $accessToken');
final response = await request.close().timeout(const Duration(seconds: 15));
if (response.statusCode != 200) {
throw Exception('Failed to fetch user roles: ${response.statusCode}');
}
final responseBody = await response.transform(utf8.decoder).join();
return UserRolesResponse.fromJson(
jsonDecode(responseBody) as Map<String, dynamic>,
);
} finally {
if (httpClient == null) client.close();
}
}