getUsage method

Future<List<Map<String, dynamic>>> getUsage(
  1. String projectId, {
  2. DateTime? start,
  3. DateTime? end,
  4. String? interval,
  5. String? report,
  6. List<String>? users,
  7. String? room,
  8. String? provider,
  9. String? model,
  10. String? usageType,
  11. String? client,
  12. Map<String, String>? annotations,
})

Implementation

Future<List<Map<String, dynamic>>> getUsage(
  String projectId, {
  DateTime? start,
  DateTime? end,
  String? interval,
  String? report,
  List<String>? users,
  String? room,
  String? provider,
  String? model,
  String? usageType,
  String? client,
  Map<String, String>? annotations,
}) async {
  final encodedProjectId = Uri.encodeComponent(projectId);
  final uri = Uri.parse('$baseUrl/accounts/projects/$encodedProjectId/usage');
  final queryParams = <String, String>{
    if (start != null) "start": start.toIso8601String(),
    if (end != null) "end": end.toIso8601String(),
    "interval": ?interval,
    "report": ?report,
    if (users != null && users.isNotEmpty) "users": users.join(","),
    if (room != null && room.trim().isNotEmpty) "room": room.trim(),
    if (provider != null && provider.trim().isNotEmpty) "provider": provider.trim(),
    if (model != null && model.trim().isNotEmpty) "model": model.trim(),
    if (usageType != null && usageType.trim().isNotEmpty) "usage_type": usageType.trim(),
    if (client != null && client.trim().isNotEmpty) "client": client.trim(),
    if (annotations != null && annotations.isNotEmpty) "annotations": jsonEncode(annotations),
  };
  final response = await httpClient.get(uri.replace(queryParameters: queryParams));

  List<Map<String, dynamic>> results = [];
  for (final map in (jsonDecode(response.body) as Map<String, dynamic>)["usage"]) {
    results.add(map);
  }

  return results;
}