mintParticipantToken method
Implementation
Future<String> mintParticipantToken(
String projectId, {
required String name,
String? roomName,
String? role,
Map<String, dynamic>? api,
List<Map<String, dynamic>>? grants,
}) async {
final encodedProjectId = Uri.encodeComponent(projectId);
final uri = Uri.parse('$baseUrl/accounts/projects/$encodedProjectId/participant-tokens');
final body = <String, dynamic>{'name': name};
if (grants != null) {
body['grants'] = grants;
} else {
if (roomName != null) {
body['room_name'] = roomName;
}
if (role != null) {
body['role'] = role;
}
if (api != null) {
body['api'] = api;
}
}
final response = await httpClient.post(uri, body: jsonEncode(body));
if (response.statusCode >= 400) {
throw MeshagentException(
'Failed to mint participant token. '
'Status code: ${response.statusCode}, body: ${response.body}',
);
}
final payload = jsonDecode(response.body) as Map<String, dynamic>;
final token = payload['token'];
if (token is! String || token.trim().isEmpty) {
throw MeshagentException('Invalid participant token mint response');
}
return token;
}