getUserProfile method

Future<Map<String, dynamic>> getUserProfile(
  1. String userId, {
  2. String? projectId,
  3. 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>;
}