createRoute method

Future<void> createRoute({
  1. required String projectId,
  2. RouteSpec? spec,
  3. String? domain,
  4. String? roomName,
  5. String? port,
  6. Map<String, String> annotations = const {},
})

POST /accounts/projects/{project_id}/routes Body: { "domain", "room_name" } Returns {} on success.

Implementation

Future<void> createRoute({
  required String projectId,
  RouteSpec? spec,
  String? domain,
  String? roomName,
  String? port,
  Map<String, String> annotations = const {},
}) async {
  spec ??= RouteSpec(
    metadata: RouteMetadata(name: domain!, annotations: annotations),
    domain: domain,
    backend: RouteBackend(room: RouteBackendTarget(name: roomName!)),
    paths: [RoutePath(targetPort: port!)],
  );
  final encodedProjectId = Uri.encodeComponent(projectId);
  final uri = Uri.parse('$baseUrl/accounts/projects/$encodedProjectId/routes');
  final body = {'spec': spec.toJson()};

  final response = await httpClient.post(uri, body: jsonEncode(body));

  if (response.statusCode >= 400) {
    throw MeshagentException(
      'Failed to create domain. '
      'Status code: ${response.statusCode}, body: ${response.body}',
    );
  }
}