getUserProfile method
Future<Map<String, dynamic> >
getUserProfile(
- String userId, {
- String? projectId,
- UserProfileView view = UserProfileView.merged,
Corresponds to: GET /accounts/profiles/:user_id Returns user profile JSON, e.g. { "id", "first_name", "last_name", "email" } on success or throws an error if not found.
Implementation
Future<Map<String, dynamic>> getUserProfile(String userId, {String? projectId, UserProfileView view = UserProfileView.merged}) async {
if (projectId == null && view == UserProfileView.project) {
throw ArgumentError('projectId is required for the project view');
}
final encodedUserId = Uri.encodeComponent(userId);
final uri = projectId == null
? Uri.parse('$baseUrl/accounts/profiles/$encodedUserId')
: Uri.parse(
'$baseUrl/accounts/projects/${Uri.encodeComponent(projectId)}/users/$encodedUserId/profile',
).replace(queryParameters: {'view': view.name});
final response = await httpClient.get(uri);
if (response.statusCode == 403) {
throw ForbiddenException('Failed to get user profile. Status code: ${response.statusCode}, body: ${response.body}');
}
if (response.statusCode >= 400) {
throw MeshagentException('Failed to get user profile. Status code: ${response.statusCode}, body: ${response.body}');
}
return jsonDecode(response.body) as Map<String, dynamic>;
}