From a2c51b9e12a66ebca48249daf7627f2acd7dce7c Mon Sep 17 00:00:00 2001 From: Forest Anderson Date: Wed, 1 May 2024 08:58:11 -0400 Subject: [PATCH] feat(svc): add servers database --- .../servers/servers_multiple_port_routers.md | 9 + .../servers/servers_multiple_runtimes.md | 9 + .../servers/servers_no_port_routers.md | 9 + errors/servers/servers/servers_no_runtime.md | 9 + fern/definition/cloud/games/tokens.yml | 14 + fern/definition/servers/__package__.yml | 5 - fern/definition/servers/common.yml | 69 +- .../servers/datacenters/__package__.yml | 11 - .../definition/servers/images/__package__.yml | 20 - fern/definition/servers/servers.yml | 59 + .../servers/servers/__package__.yml | 52 - lib/claims/src/lib.rs | 33 + lib/convert/src/impls/ds.rs | 317 + lib/convert/src/impls/mod.rs | 1 + lib/operation/core/Cargo.toml | 2 +- proto/backend/cluster.proto | 1 - proto/backend/dynamic_servers.proto | 68 + proto/backend/servers.proto | 61 - proto/claims.proto | 6 + sdks/full/go/client/client.go | 4 +- sdks/full/go/cloud/games/tokens/client.go | 78 + sdks/full/go/cloud/games/types.go | 32 + sdks/full/go/servers/client/client.go | 9 +- sdks/full/go/servers/images/client/client.go | 110 - sdks/full/go/servers/images/images.go | 38 - sdks/full/go/servers/servers.go | 109 + .../go/servers/servers/{client => }/client.go | 26 +- sdks/full/go/servers/servers/servers.go | 103 - sdks/full/go/servers/types.go | 92 +- sdks/full/openapi/openapi.yml | 529 +- sdks/full/openapi_compat/openapi.yml | 271 +- sdks/full/rust-cli/.openapi-generator/FILES | 24 +- sdks/full/rust-cli/README.md | 13 +- ...> CloudGamesCreateServiceTokenResponse.md} | 4 +- .../full/rust-cli/docs/CloudGamesTokensApi.md | 31 + .../docs/ServersCreateServerRequest.md | 15 + .../docs/ServersCreateServerResponse.md} | 2 +- .../docs/ServersDestroyServerResponse.md} | 4 +- .../docs/ServersDockerGameGuardRouting.md | 11 + .../rust-cli/docs/ServersDockerNetwork.md | 2 +- .../rust-cli/docs/ServersDockerPortRouting.md | 4 +- .../rust-cli/docs/ServersDockerRuntime.md | 6 +- sdks/full/rust-cli/docs/ServersImagesApi.md | 39 - sdks/full/rust-cli/docs/ServersResources.md | 12 + sdks/full/rust-cli/docs/ServersServer.md | 11 +- sdks/full/rust-cli/docs/ServersServersApi.md | 14 +- .../docs/ServersServersCreateRequest.md | 15 - .../src/apis/cloud_games_tokens_api.rs | 44 + sdks/full/rust-cli/src/apis/mod.rs | 1 - .../rust-cli/src/apis/servers_images_api.rs | 63 - .../rust-cli/src/apis/servers_servers_api.rs | 12 +- ...ud_games_create_service_token_response.rs} | 15 +- sdks/full/rust-cli/src/models/mod.rs | 22 +- .../models/servers_create_server_request.rs | 42 + .../models/servers_create_server_response.rs} | 8 +- ....rs => servers_destroy_server_response.rs} | 14 +- .../servers_docker_game_guard_routing.rs | 28 + .../src/models/servers_docker_network.rs | 8 +- .../src/models/servers_docker_network_mode.rs | 8 +- .../src/models/servers_docker_port_routing.rs | 4 +- .../src/models/servers_docker_runtime.rs | 16 +- .../models/servers_images_create_request.rs | 28 - .../rust-cli/src/models/servers_resources.rs | 33 + .../rust-cli/src/models/servers_server.rs | 36 +- .../models/servers_servers_create_request.rs | 42 - sdks/full/rust/.openapi-generator/FILES | 24 +- sdks/full/rust/README.md | 13 +- .../CloudGamesCreateServiceTokenResponse.md} | 4 +- sdks/full/rust/docs/CloudGamesTokensApi.md | 31 + .../rust/docs/ServersCreateServerRequest.md | 15 + .../docs/ServersCreateServerResponse.md} | 2 +- .../docs/ServersDestroyServerResponse.md} | 4 +- .../docs/ServersDockerGameGuardRouting.md | 11 + sdks/full/rust/docs/ServersDockerNetwork.md | 2 +- .../rust/docs/ServersDockerPortRouting.md | 4 +- sdks/full/rust/docs/ServersDockerRuntime.md | 6 +- sdks/full/rust/docs/ServersImagesApi.md | 39 - .../rust/docs/ServersImagesCreateRequest.md | 11 - sdks/full/rust/docs/ServersResources.md | 12 + sdks/full/rust/docs/ServersServer.md | 11 +- sdks/full/rust/docs/ServersServersApi.md | 14 +- .../rust/docs/ServersServersCreateRequest.md | 15 - .../rust/docs/ServersServersDestroyRequest.md | 11 - .../rust/src/apis/cloud_games_tokens_api.rs | 44 + sdks/full/rust/src/apis/mod.rs | 1 - sdks/full/rust/src/apis/servers_images_api.rs | 63 - .../full/rust/src/apis/servers_servers_api.rs | 12 +- ...ud_games_create_service_token_response.rs} | 15 +- sdks/full/rust/src/models/mod.rs | 22 +- .../models/servers_create_server_request.rs | 42 + .../models/servers_create_server_response.rs} | 8 +- ....rs => servers_destroy_server_response.rs} | 14 +- .../servers_docker_game_guard_routing.rs | 28 + .../rust/src/models/servers_docker_network.rs | 8 +- .../src/models/servers_docker_network_mode.rs | 8 +- .../src/models/servers_docker_port_routing.rs | 4 +- .../rust/src/models/servers_docker_runtime.rs | 16 +- .../models/servers_images_create_request.rs | 28 - .../full/rust/src/models/servers_resources.rs | 33 + sdks/full/rust/src/models/servers_server.rs | 36 +- .../models/servers_servers_create_request.rs | 42 - sdks/full/typescript/archive.tgz | 4 +- sdks/full/typescript/src/Client.ts | 14 +- .../games/resources/tokens/client/Client.ts | 121 + .../games/resources/tokens/types/index.ts | 1 + .../typescript/src/api/resources/index.ts | 2 +- .../api/resources/servers/client/Client.ts | 7 - .../servers/resources/images/client/Client.ts | 154 - .../servers/resources/images/client/index.ts | 1 - .../servers/resources/images/index.ts | 2 - .../api/resources/servers/resources/index.ts | 5 +- .../resources/servers/client/Client.ts | 30 +- .../servers/resources/servers/client/index.ts | 2 +- .../client/requests/DestroyServerRequest.ts | 10 + .../servers/client/requests/index.ts | 1 + .../games/resources/tokens/types/index.ts | 1 + .../src/serialization/resources/index.ts | 2 +- .../servers/resources/images/index.ts | 1 - .../resources/servers/resources/index.ts | 4 +- sdks/full/typescript/types/Client.d.ts | 6 +- .../games/resources/tokens/client/Client.d.ts | 10 + .../types/CreateServiceTokenResponse.d.ts | 6 +- .../games/resources/tokens/types/index.d.ts | 1 + .../typescript/types/api/resources/index.d.ts | 2 +- .../games/resources/tokens/types/index.d.ts | 1 + .../types/serialization/resources/index.d.ts | 2 +- sdks/runtime/typescript/archive.tgz | 4 +- svc/Cargo.lock | 10736 ++++++++++++++++ svc/Cargo.toml | 3 +- svc/api/cloud/Cargo.toml | 1 + svc/api/cloud/src/route/games/tokens.rs | 44 +- svc/api/cloud/src/route/mod.rs | 3 + svc/api/monolith/Cargo.toml | 1 + svc/api/monolith/Service.toml | 7 + svc/api/monolith/src/route/mod.rs | 4 + svc/api/servers/Cargo.toml | 10 +- svc/api/servers/Service.toml | 2 +- svc/api/servers/src/auth.rs | 32 +- svc/api/servers/src/route/images.rs | 17 - svc/api/servers/src/route/mod.rs | 11 +- svc/api/servers/src/route/servers.rs | 77 +- svc/api/servers/tests/basic.rs | 11 +- svc/pkg/ds/db/servers/Service.toml | 7 + .../migrations/20240501133910_init.down.sql | 0 .../migrations/20240501133910_init.up.sql | 45 + .../ops/server-create/Cargo.toml | 2 +- svc/pkg/ds/ops/server-create/Service.toml | 10 + svc/pkg/ds/ops/server-create/src/lib.rs | 193 + .../ds/ops/server-create/tests/integration.rs | 41 + svc/pkg/ds/ops/server-delete/Cargo.toml | 17 + svc/pkg/ds/ops/server-delete/Service.toml | 10 + svc/pkg/ds/ops/server-delete/src/lib.rs | 38 + .../ops/server-delete}/tests/integration.rs | 0 svc/pkg/ds/types/server-create.proto | 23 + svc/pkg/ds/types/server-delete.proto | 14 + .../servers/ops/server-create/Service.toml | 7 - svc/pkg/servers/ops/server-create/src/lib.rs | 12 - svc/pkg/servers/types/server-create.proto | 14 - 158 files changed, 13553 insertions(+), 1673 deletions(-) create mode 100644 errors/servers/servers/servers_multiple_port_routers.md create mode 100644 errors/servers/servers/servers_multiple_runtimes.md create mode 100644 errors/servers/servers/servers_no_port_routers.md create mode 100644 errors/servers/servers/servers_no_runtime.md delete mode 100644 fern/definition/servers/__package__.yml delete mode 100644 fern/definition/servers/datacenters/__package__.yml delete mode 100644 fern/definition/servers/images/__package__.yml create mode 100644 fern/definition/servers/servers.yml delete mode 100644 fern/definition/servers/servers/__package__.yml create mode 100644 lib/convert/src/impls/ds.rs create mode 100644 proto/backend/dynamic_servers.proto delete mode 100644 proto/backend/servers.proto delete mode 100644 sdks/full/go/servers/images/client/client.go delete mode 100644 sdks/full/go/servers/images/images.go create mode 100644 sdks/full/go/servers/servers.go rename sdks/full/go/servers/servers/{client => }/client.go (87%) delete mode 100644 sdks/full/go/servers/servers/servers.go rename sdks/full/rust-cli/docs/{ServersDockerHostRouting.md => CloudGamesCreateServiceTokenResponse.md} (76%) create mode 100644 sdks/full/rust-cli/docs/ServersCreateServerRequest.md rename sdks/full/{rust/docs/ServersServersCreateResponse.md => rust-cli/docs/ServersCreateServerResponse.md} (91%) rename sdks/full/{rust/docs/ServersDockerHostRouting.md => rust-cli/docs/ServersDestroyServerResponse.md} (76%) create mode 100644 sdks/full/rust-cli/docs/ServersDockerGameGuardRouting.md delete mode 100644 sdks/full/rust-cli/docs/ServersImagesApi.md create mode 100644 sdks/full/rust-cli/docs/ServersResources.md delete mode 100644 sdks/full/rust-cli/docs/ServersServersCreateRequest.md delete mode 100644 sdks/full/rust-cli/src/apis/servers_images_api.rs rename sdks/full/{rust/src/models/servers_docker_host_routing.rs => rust-cli/src/models/cloud_games_create_service_token_response.rs} (51%) create mode 100644 sdks/full/rust-cli/src/models/servers_create_server_request.rs rename sdks/full/{rust/src/models/servers_servers_create_response.rs => rust-cli/src/models/servers_create_server_response.rs} (68%) rename sdks/full/rust-cli/src/models/{servers_servers_destroy_request.rs => servers_destroy_server_response.rs} (51%) create mode 100644 sdks/full/rust-cli/src/models/servers_docker_game_guard_routing.rs delete mode 100644 sdks/full/rust-cli/src/models/servers_images_create_request.rs create mode 100644 sdks/full/rust-cli/src/models/servers_resources.rs delete mode 100644 sdks/full/rust-cli/src/models/servers_servers_create_request.rs rename sdks/full/{rust-cli/docs/ServersServersDestroyRequest.md => rust/docs/CloudGamesCreateServiceTokenResponse.md} (76%) create mode 100644 sdks/full/rust/docs/ServersCreateServerRequest.md rename sdks/full/{rust-cli/docs/ServersServersCreateResponse.md => rust/docs/ServersCreateServerResponse.md} (91%) rename sdks/full/{rust-cli/docs/ServersImagesCreateRequest.md => rust/docs/ServersDestroyServerResponse.md} (76%) create mode 100644 sdks/full/rust/docs/ServersDockerGameGuardRouting.md delete mode 100644 sdks/full/rust/docs/ServersImagesApi.md delete mode 100644 sdks/full/rust/docs/ServersImagesCreateRequest.md create mode 100644 sdks/full/rust/docs/ServersResources.md delete mode 100644 sdks/full/rust/docs/ServersServersCreateRequest.md delete mode 100644 sdks/full/rust/docs/ServersServersDestroyRequest.md delete mode 100644 sdks/full/rust/src/apis/servers_images_api.rs rename sdks/full/{rust-cli/src/models/servers_docker_host_routing.rs => rust/src/models/cloud_games_create_service_token_response.rs} (51%) create mode 100644 sdks/full/rust/src/models/servers_create_server_request.rs rename sdks/full/{rust-cli/src/models/servers_servers_create_response.rs => rust/src/models/servers_create_server_response.rs} (68%) rename sdks/full/rust/src/models/{servers_servers_destroy_request.rs => servers_destroy_server_response.rs} (51%) create mode 100644 sdks/full/rust/src/models/servers_docker_game_guard_routing.rs delete mode 100644 sdks/full/rust/src/models/servers_images_create_request.rs create mode 100644 sdks/full/rust/src/models/servers_resources.rs delete mode 100644 sdks/full/rust/src/models/servers_servers_create_request.rs delete mode 100644 sdks/full/typescript/src/api/resources/servers/resources/images/client/Client.ts delete mode 100644 sdks/full/typescript/src/api/resources/servers/resources/images/client/index.ts delete mode 100644 sdks/full/typescript/src/api/resources/servers/resources/images/index.ts create mode 100644 sdks/full/typescript/src/api/resources/servers/resources/servers/client/requests/DestroyServerRequest.ts create mode 100644 sdks/full/typescript/src/api/resources/servers/resources/servers/client/requests/index.ts delete mode 100644 sdks/full/typescript/src/serialization/resources/servers/resources/images/index.ts create mode 100644 svc/Cargo.lock delete mode 100644 svc/api/servers/src/route/images.rs create mode 100644 svc/pkg/ds/db/servers/Service.toml create mode 100644 svc/pkg/ds/db/servers/migrations/20240501133910_init.down.sql create mode 100644 svc/pkg/ds/db/servers/migrations/20240501133910_init.up.sql rename svc/pkg/{servers => ds}/ops/server-create/Cargo.toml (96%) create mode 100644 svc/pkg/ds/ops/server-create/Service.toml create mode 100644 svc/pkg/ds/ops/server-create/src/lib.rs create mode 100644 svc/pkg/ds/ops/server-create/tests/integration.rs create mode 100644 svc/pkg/ds/ops/server-delete/Cargo.toml create mode 100644 svc/pkg/ds/ops/server-delete/Service.toml create mode 100644 svc/pkg/ds/ops/server-delete/src/lib.rs rename svc/pkg/{servers/ops/server-create => ds/ops/server-delete}/tests/integration.rs (100%) create mode 100644 svc/pkg/ds/types/server-create.proto create mode 100644 svc/pkg/ds/types/server-delete.proto delete mode 100644 svc/pkg/servers/ops/server-create/Service.toml delete mode 100644 svc/pkg/servers/ops/server-create/src/lib.rs delete mode 100644 svc/pkg/servers/types/server-create.proto diff --git a/errors/servers/servers/servers_multiple_port_routers.md b/errors/servers/servers/servers_multiple_port_routers.md new file mode 100644 index 000000000..9f610f229 --- /dev/null +++ b/errors/servers/servers/servers_multiple_port_routers.md @@ -0,0 +1,9 @@ +--- +name = "SERVERS_MULTIPLE_PORT_ROUTERS" +description = "Multiple server port routers were provided." +http_status = 400 +--- + +# Multiple Server Port Routers + +Multiple server port routers were provided. diff --git a/errors/servers/servers/servers_multiple_runtimes.md b/errors/servers/servers/servers_multiple_runtimes.md new file mode 100644 index 000000000..a2a83356b --- /dev/null +++ b/errors/servers/servers/servers_multiple_runtimes.md @@ -0,0 +1,9 @@ +--- +name = "SERVERS_MULTIPLE_RUNTIMES" +description = "Multiple server runtimes were provided." +http_status = 400 +--- + +# Multiple Server Runtimes + +Multiple server runtimes were provided. diff --git a/errors/servers/servers/servers_no_port_routers.md b/errors/servers/servers/servers_no_port_routers.md new file mode 100644 index 000000000..bbca4f021 --- /dev/null +++ b/errors/servers/servers/servers_no_port_routers.md @@ -0,0 +1,9 @@ +--- +name = "SERVERS_NO_PORT_ROUTERS" +description = "No port routers were provided." +http_status = 400 +--- + +# No Port Routers + +No port routers were provided. diff --git a/errors/servers/servers/servers_no_runtime.md b/errors/servers/servers/servers_no_runtime.md new file mode 100644 index 000000000..8490f1021 --- /dev/null +++ b/errors/servers/servers/servers_no_runtime.md @@ -0,0 +1,9 @@ +--- +name = "SERVERS_NO_RUNTIME" +description = "No server runtime were provided." +http_status = 400 +--- + +# No Server Runtime + +No server runtime were provided. diff --git a/fern/definition/cloud/games/tokens.yml b/fern/definition/cloud/games/tokens.yml index f5d851bab..ecdef3b30 100644 --- a/fern/definition/cloud/games/tokens.yml +++ b/fern/definition/cloud/games/tokens.yml @@ -12,6 +12,14 @@ service: game_id: type: uuid response: CreateCloudTokenResponse + createServiceToken: + path: /games/{game_id}/tokens/service + method: POST + docs: Creates a new game service token. + path-parameters: + game_id: + type: uuid + response: CreateCloudTokenResponse types: CreateCloudTokenResponse: @@ -22,3 +30,9 @@ types: Slightly modified to include a description prefix and use Protobufs of JSON. type: string + CreateServiceTokenResponse: + properties: + token: + docs: |- + A JSON Web Token. + type: string diff --git a/fern/definition/servers/__package__.yml b/fern/definition/servers/__package__.yml deleted file mode 100644 index f060327b5..000000000 --- a/fern/definition/servers/__package__.yml +++ /dev/null @@ -1,5 +0,0 @@ -# yaml-language-server: $schema=https://raw.githubusercontent.com/fern-api/fern/main/fern.schema.json - -imports: - commons: ../common.yml - localCommons: common.yml diff --git a/fern/definition/servers/common.yml b/fern/definition/servers/common.yml index 0e973f6a2..81dc5f6d1 100644 --- a/fern/definition/servers/common.yml +++ b/fern/definition/servers/common.yml @@ -1,49 +1,78 @@ # yaml-language-server: $schema=https://raw.githubusercontent.com/fern-api/fern/main/fern.schema.json types: + Server: + properties: + server_id: uuid + game_id: uuid + datacenter_id: uuid + cluster_id: uuid + metadata: unknown + resources: Resources + kill_timeout: + docs: >- + The duration to wait for in milliseconds before killing the server. + This should be set to a safe default, and can be overridden during a + DELETE request if needed. + type: optional + runtime: Runtime + create_ts: long + destroy_ts: optional + + Resources: + properties: + cpu: + docs: | + The number of CPU cores in millicores, or 1/1000 of a core. For example, + 1/8 of a core would be 125 millicores, and 1 core would be 1000 + millicores. + type: integer + memory: + docs: The amount of memory in megabytes + type: integer + Runtime: properties: docker: optional DockerRuntime: properties: - image_id: string - args: list - environment: map + image_id: uuid + args: optional> + environment: optional> network: DockerNetwork DockerNetwork: properties: - mode: DockerNetworkMode + mode: optional ports: map DockerNetworkMode: enum: - - host - bridge - - GameGuardProtocol: - enum: - - http - - https - - tcp - - tcp_tls - - udp + - host DockerPort: properties: port: optional routing: DockerPortRouting - DockerPortRouting: + DockerPortRouting: properties: - game_guard: optional + game_guard: optional host: optional - DockerHostRouting: + DockerGameGuardRouting: properties: - null: unknown + protocol: optional - Server: - properties: - null: unknown + GameGuardProtocol: + enum: + - http + - https + - tcp + - tcp_tls + - udp + + DockerHostRouting: + properties: {} \ No newline at end of file diff --git a/fern/definition/servers/datacenters/__package__.yml b/fern/definition/servers/datacenters/__package__.yml deleted file mode 100644 index 582433e48..000000000 --- a/fern/definition/servers/datacenters/__package__.yml +++ /dev/null @@ -1,11 +0,0 @@ -# yaml-language-server: $schema=https://raw.githubusercontent.com/fern-api/fern/main/fern.schema.json - -imports: - commons: ../common.yml - -# service: -# auth: true -# base-path: /servers/datacenters -# endpoints: - -# types: diff --git a/fern/definition/servers/images/__package__.yml b/fern/definition/servers/images/__package__.yml deleted file mode 100644 index c7b4f177d..000000000 --- a/fern/definition/servers/images/__package__.yml +++ /dev/null @@ -1,20 +0,0 @@ -# yaml-language-server: $schema=https://raw.githubusercontent.com/fern-api/fern/main/fern.schema.json - -imports: - commons: ../common.yml - -service: - auth: true - base-path: /servers/docker - endpoints: - create: - path: "" - method: POST - docs: Create a new docker image. - request: - body: CreateRequest - -types: - CreateRequest: - properties: - null: unknown diff --git a/fern/definition/servers/servers.yml b/fern/definition/servers/servers.yml new file mode 100644 index 000000000..dcdcdcd4e --- /dev/null +++ b/fern/definition/servers/servers.yml @@ -0,0 +1,59 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/fern-api/fern/main/fern.schema.json + +imports: + commons: common.yml + +service: + auth: true + base-path: /servers/servers + endpoints: + create: + path: "" + method: POST + docs: Create a new dynamic server. + request: + body: CreateServerRequest + response: CreateServerResponse + destroy: + path: "/{server_id}" + method: DELETE + docs: Destroy a dynamic server. + path-parameters: + server_id: + docs: The id of the server to destroy + type: uuid + request: + name: DestroyServerRequest + query-parameters: + override_kill_timeout: + docs: >- + The duration to wait for in milliseconds before killing the server. + This should be used to override the default kill timeout if a faster + time is needed, say for ignoring a graceful shutdown. + type: optional + response: DestroyServerResponse + +types: + CreateServerRequest: + properties: + datacenter: + docs: The name ID of the datacenter + type: string + metadata: unknown + resources: commons.Resources + kill_timeout: + docs: >- + The duration to wait for in milliseconds before killing the server. + This should be set to a safe default, and can be overridden during a + DELETE request if needed. + type: optional + runtime: commons.Runtime + CreateServerResponse: + properties: + server: + docs: The server that was created + type: commons.Server + DestroyServerResponse: + properties: + server_id: + type: uuid diff --git a/fern/definition/servers/servers/__package__.yml b/fern/definition/servers/servers/__package__.yml deleted file mode 100644 index 4b4712253..000000000 --- a/fern/definition/servers/servers/__package__.yml +++ /dev/null @@ -1,52 +0,0 @@ -# yaml-language-server: $schema=https://raw.githubusercontent.com/fern-api/fern/main/fern.schema.json - -imports: - commons: ../common.yml - -service: - auth: true - base-path: /servers/servers - endpoints: - create: - path: "" - method: POST - docs: Create a new dynamic server. - request: - body: CreateRequest - response: CreateResponse - destroy: - path: "/{server_id}" - method: DELETE - docs: Destroy a dynamic server. - path-parameters: - server_id: - docs: The id of the server to destroy - type: uuid - request: - body: DestroyRequest - -types: - CreateRequest: - properties: - metadata: map - cluster: - docs: The name id of the cluster - type: string - datacenter: - docs: The name id of the datacenter - type: string - # resources: - # cpu: - # docs: The number of CPUs - # type: integer - # memory: - # docs: The amount of memory in MB - # type: integer - kill_timeout: integer - runtime: commons.Runtime - CreateResponse: - properties: - server: commons.Server - DestroyRequest: - properties: - kill_timeout: optional \ No newline at end of file diff --git a/lib/claims/src/lib.rs b/lib/claims/src/lib.rs index b8885ab31..1f48f511c 100644 --- a/lib/claims/src/lib.rs +++ b/lib/claims/src/lib.rs @@ -363,6 +363,21 @@ pub mod ent { }) } } + + #[derive(Clone, Debug)] + pub struct GameService { + pub game_id: Uuid, + } + + impl TryFrom<&schema::entitlement::GameService> for GameService { + type Error = GlobalError; + + fn try_from(value: &schema::entitlement::GameService) -> GlobalResult { + Ok(GameService { + game_id: unwrap!(value.game_id).as_uuid(), + }) + } + } } pub trait ClaimsDecode { @@ -388,6 +403,7 @@ pub trait ClaimsDecode { fn as_access_token(&self) -> GlobalResult; fn as_provisioned_server(&self) -> GlobalResult; fn as_opengb_db(&self) -> GlobalResult; + fn as_game_service(&self) -> GlobalResult; } impl ClaimsDecode for schema::Claims { @@ -685,6 +701,22 @@ impl ClaimsDecode for schema::Claims { )) .and_then(std::convert::identity) } + + fn as_game_service(&self) -> GlobalResult { + self.entitlements + .iter() + .find_map(|ent| match &ent.kind { + Some(schema::entitlement::Kind::GameService(ent)) => { + Some(ent::GameService::try_from(ent)) + } + _ => None, + }) + .ok_or(err_code!( + CLAIMS_MISSING_ENTITLEMENT, + entitlements = "GameService" + )) + .and_then(std::convert::identity) + } } pub trait EntitlementTag { @@ -713,6 +745,7 @@ impl EntitlementTag for schema::Entitlement { schema::entitlement::Kind::AccessToken(_) => 16, schema::entitlement::Kind::ProvisionedServer(_) => 17, schema::entitlement::Kind::OpengbDb(_) => 18, + schema::entitlement::Kind::GameService(_) => 19, }) } } diff --git a/lib/convert/src/impls/ds.rs b/lib/convert/src/impls/ds.rs new file mode 100644 index 000000000..259953ecc --- /dev/null +++ b/lib/convert/src/impls/ds.rs @@ -0,0 +1,317 @@ +use std::collections::HashMap; + +use proto::backend; +use rivet_api::models; +use rivet_operation::prelude::*; + +use crate::{ApiFrom, ApiInto, ApiTryFrom, ApiTryInto}; +use serde_json::to_value; + +impl ApiTryFrom for models::ServersServer { + type Error = GlobalError; + fn api_try_from( + value: backend::dynamic_servers::Server, + ) -> GlobalResult { + Ok(models::ServersServer { + cluster_id: unwrap!(value.cluster_id).as_uuid(), + create_ts: value.create_ts, + datacenter_id: unwrap!(value.datacenter_id).as_uuid(), + destroy_ts: value.destroy_ts, + game_id: unwrap!(value.game_id).as_uuid(), + kill_timeout: Some(value.kill_timeout_ms), + metadata: Some(to_value(value.metadata).unwrap()), + resources: Box::new(unwrap!(value.resources).api_into()), + runtime: Box::new(unwrap!(value.runtime).api_try_into()?), + server_id: unwrap!(value.server_id).as_uuid(), + }) + } +} + +impl ApiFrom for backend::dynamic_servers::ServerResources { + fn api_from(value: models::ServersResources) -> backend::dynamic_servers::ServerResources { + backend::dynamic_servers::ServerResources { + cpu_millicores: value.cpu, + memory_mib: value.memory, + } + } +} + +impl ApiFrom for models::ServersResources { + fn api_from(value: backend::dynamic_servers::ServerResources) -> models::ServersResources { + models::ServersResources { + cpu: value.cpu_millicores, + memory: value.memory_mib, + } + } +} + +impl ApiTryFrom + for backend::pkg::dynamic_servers::server_create::request::Runtime +{ + type Error = GlobalError; + + fn api_try_from( + value: models::ServersRuntime, + ) -> GlobalResult { + match (value.docker,) { + (Some(docker_runtime),) => Ok( + backend::pkg::dynamic_servers::server_create::request::Runtime::DockerRuntime( + backend::dynamic_servers::DockerRuntime { + args: docker_runtime.args.unwrap_or_default(), + environment: docker_runtime.environment.unwrap_or_default(), + image_id: Some(docker_runtime.image_id.into()), + network: Some(backend::dynamic_servers::DockerNetwork::api_try_from( + *docker_runtime.network, + )?), + }, + ), + ), + (None,) => bail_with!(SERVERS_NO_RUNTIME), + // This needs to be added if other runtimes are added + // _ => bail_with!(SERVERS_MULTIPLE_RUNTIMES), + } + } +} + +impl ApiTryFrom for models::ServersRuntime { + type Error = GlobalError; + + fn api_try_from( + value: backend::dynamic_servers::server::Runtime, + ) -> GlobalResult { + match value { + backend::dynamic_servers::server::Runtime::DockerRuntime(docker_runtime) => { + Ok(models::ServersRuntime { + docker: Some(Box::new(models::ServersDockerRuntime { + args: Some(docker_runtime.args), + environment: Some(docker_runtime.environment), + image_id: unwrap!(docker_runtime.image_id).as_uuid(), + network: Box::new(unwrap!(docker_runtime.network).api_try_into()?), + })), + }) + } + } + } +} + +impl ApiTryFrom for backend::dynamic_servers::DockerNetwork { + type Error = GlobalError; + + fn api_try_from( + value: models::ServersDockerNetwork, + ) -> GlobalResult { + Ok(backend::dynamic_servers::DockerNetwork { + mode: backend::dynamic_servers::DockerNetworkMode::api_from( + value.mode.unwrap_or_default(), + ) as i32, + ports: unwrap!(value + .ports + .into_iter() + .map(|(s, p)| Ok((s, p.api_try_into()?))) + .collect::>>()), + }) + } +} + +impl ApiTryInto for backend::dynamic_servers::DockerNetwork { + type Error = GlobalError; + + fn api_try_into(self) -> GlobalResult { + Ok(models::ServersDockerNetwork { + mode: Some( + unwrap!(backend::dynamic_servers::DockerNetworkMode::from_i32( + self.mode + )) + .api_into(), + ), + ports: self + .ports + .into_iter() + .map(|(s, p)| Ok((s, p.api_try_into()?))) + .collect::>>()?, + }) + } +} + +impl ApiFrom for backend::dynamic_servers::DockerNetworkMode { + fn api_from( + value: models::ServersDockerNetworkMode, + ) -> backend::dynamic_servers::DockerNetworkMode { + match value { + models::ServersDockerNetworkMode::Bridge => { + backend::dynamic_servers::DockerNetworkMode::Bridge + } + models::ServersDockerNetworkMode::Host => { + backend::dynamic_servers::DockerNetworkMode::Host + } + } + } +} + +impl ApiFrom for models::ServersDockerNetworkMode { + fn api_from( + value: backend::dynamic_servers::DockerNetworkMode, + ) -> models::ServersDockerNetworkMode { + match value { + backend::dynamic_servers::DockerNetworkMode::Bridge => { + models::ServersDockerNetworkMode::Bridge + } + backend::dynamic_servers::DockerNetworkMode::Host => { + models::ServersDockerNetworkMode::Host + } + } + } +} + +impl ApiTryFrom for backend::dynamic_servers::DockerPort { + type Error = GlobalError; + + fn api_try_from( + value: models::ServersDockerPort, + ) -> GlobalResult { + Ok(backend::dynamic_servers::DockerPort { + port: value.port, + routing: Some((*value.routing).api_try_into()?), + }) + } +} + +impl ApiTryFrom for models::ServersDockerPort { + type Error = GlobalError; + + fn api_try_from( + value: backend::dynamic_servers::DockerPort, + ) -> GlobalResult { + Ok(models::ServersDockerPort { + port: value.port, + routing: Box::new(unwrap!(value.routing).api_try_into()?), + }) + } +} + +impl ApiTryFrom + for backend::dynamic_servers::docker_port::Routing +{ + type Error = GlobalError; + + fn api_try_from( + value: models::ServersDockerPortRouting, + ) -> GlobalResult { + match (value.game_guard, value.host) { + (Some(game_guard), None) => Ok( + backend::dynamic_servers::docker_port::Routing::GameGuard((*game_guard).api_into()), + ), + (None, Some(_)) => Ok(backend::dynamic_servers::docker_port::Routing::Host( + backend::dynamic_servers::DockerHostRouting {}, + )), + (None, None) => bail_with!(SERVERS_NO_PORT_ROUTERS), + _ => bail_with!(SERVERS_MULTIPLE_PORT_ROUTERS), + } + } +} + +impl ApiTryFrom + for models::ServersDockerPortRouting +{ + type Error = GlobalError; + + fn api_try_from( + value: backend::dynamic_servers::docker_port::Routing, + ) -> GlobalResult { + match value { + backend::dynamic_servers::docker_port::Routing::GameGuard(game_guard) => { + Ok(models::ServersDockerPortRouting { + game_guard: Some(Box::new(game_guard.api_try_into()?)), + host: None, + }) + } + backend::dynamic_servers::docker_port::Routing::Host(_) => { + Ok(models::ServersDockerPortRouting { + game_guard: None, + host: Some(to_value({})?), + }) + } + } + } +} + +impl ApiFrom + for backend::dynamic_servers::DockerGameGuardRouting +{ + fn api_from( + value: models::ServersDockerGameGuardRouting, + ) -> backend::dynamic_servers::DockerGameGuardRouting { + backend::dynamic_servers::DockerGameGuardRouting { + protocol: backend::dynamic_servers::GameGuardProtocol::api_from( + value.protocol.unwrap_or_default().into(), + ) as i32, + } + } +} + +impl ApiTryFrom + for models::ServersDockerGameGuardRouting +{ + type Error = GlobalError; + + fn api_try_from( + value: backend::dynamic_servers::DockerGameGuardRouting, + ) -> GlobalResult { + Ok(models::ServersDockerGameGuardRouting { + protocol: Some( + unwrap!(backend::dynamic_servers::GameGuardProtocol::from_i32( + value.protocol + )) + .api_into(), + ), + }) + } +} + +impl ApiFrom for backend::dynamic_servers::GameGuardProtocol { + fn api_from( + value: models::ServersGameGuardProtocol, + ) -> backend::dynamic_servers::GameGuardProtocol { + match value { + models::ServersGameGuardProtocol::Udp => { + backend::dynamic_servers::GameGuardProtocol::Udp + } + models::ServersGameGuardProtocol::Tcp => { + backend::dynamic_servers::GameGuardProtocol::Tcp + } + models::ServersGameGuardProtocol::Http => { + backend::dynamic_servers::GameGuardProtocol::Http + } + models::ServersGameGuardProtocol::Https => { + backend::dynamic_servers::GameGuardProtocol::Https + } + models::ServersGameGuardProtocol::TcpTls => { + backend::dynamic_servers::GameGuardProtocol::TcpTls + } + } + } +} + +impl ApiFrom for models::ServersGameGuardProtocol { + fn api_from( + value: backend::dynamic_servers::GameGuardProtocol, + ) -> models::ServersGameGuardProtocol { + match value { + backend::dynamic_servers::GameGuardProtocol::Udp => { + models::ServersGameGuardProtocol::Udp + } + backend::dynamic_servers::GameGuardProtocol::Tcp => { + models::ServersGameGuardProtocol::Tcp + } + backend::dynamic_servers::GameGuardProtocol::Http => { + models::ServersGameGuardProtocol::Http + } + backend::dynamic_servers::GameGuardProtocol::Https => { + models::ServersGameGuardProtocol::Https + } + backend::dynamic_servers::GameGuardProtocol::TcpTls => { + models::ServersGameGuardProtocol::TcpTls + } + } + } +} diff --git a/lib/convert/src/impls/mod.rs b/lib/convert/src/impls/mod.rs index 9c981bf62..f2fc7172c 100644 --- a/lib/convert/src/impls/mod.rs +++ b/lib/convert/src/impls/mod.rs @@ -12,6 +12,7 @@ pub mod group; pub mod identity; pub mod kv; pub mod portal; +pub mod ds; pub mod user; impl ApiFrom for new_models::ValidationError { diff --git a/lib/operation/core/Cargo.toml b/lib/operation/core/Cargo.toml index 8af04240d..aa2c3eb1e 100644 --- a/lib/operation/core/Cargo.toml +++ b/lib/operation/core/Cargo.toml @@ -21,7 +21,7 @@ rivet-connection = { path = "../../connection" } rivet-operation-macros = { path = "../macros" } rivet-pools = { path = "../../pools" } rivet-util = { path = "../../util/core" } -serde_json = "1.0" +serde_json = { version = "1.0", features = ["raw_value"] } thiserror = "1.0" tokio = { version = "1.29", features = ["full", "tracing"] } tracing = "0.1" diff --git a/proto/backend/cluster.proto b/proto/backend/cluster.proto index 8c901f555..a6c28f6e5 100644 --- a/proto/backend/cluster.proto +++ b/proto/backend/cluster.proto @@ -3,7 +3,6 @@ syntax = "proto3"; package rivet.backend.cluster; import "proto/common.proto"; -import "proto/backend/net.proto"; message Cluster { rivet.common.Uuid cluster_id = 1; diff --git a/proto/backend/dynamic_servers.proto b/proto/backend/dynamic_servers.proto new file mode 100644 index 000000000..47ca82c95 --- /dev/null +++ b/proto/backend/dynamic_servers.proto @@ -0,0 +1,68 @@ +syntax = "proto3"; + +package rivet.backend.dynamic_servers; + +import "proto/common.proto"; + +message Server { + rivet.common.Uuid server_id = 1; + rivet.common.Uuid game_id = 2; + rivet.common.Uuid datacenter_id = 3; + rivet.common.Uuid cluster_id = 4; + map metadata = 5; + rivet.backend.dynamic_servers.ServerResources resources = 6; + int64 kill_timeout_ms = 7; + + int64 create_ts = 8; + optional int64 destroy_ts = 9; + + oneof runtime { + rivet.backend.dynamic_servers.DockerRuntime docker_runtime = 10; + } +} + +message ServerResources { + int32 cpu_millicores = 1; + int32 memory_mib = 2; +} + +message DockerRuntime { + repeated string args = 1; + map environment = 2; + rivet.common.Uuid image_id = 3; + DockerNetwork network = 4; +} + +message DockerNetwork { + DockerNetworkMode mode = 1; + map ports = 2; +} + +enum DockerNetworkMode { + BRIDGE = 0; + HOST = 1; +} + +message DockerPort { + // Null when using host networking since one is automatially assigned + optional int32 port = 1; + + oneof routing { + DockerGameGuardRouting game_guard = 2; + DockerHostRouting host = 3; + } +} + +message DockerGameGuardRouting { + GameGuardProtocol protocol = 1; +} + +enum GameGuardProtocol { + HTTP = 0; + HTTPS = 1; + TCP = 2; + TCP_TLS = 3; + UDP = 4; +} + +message DockerHostRouting {} diff --git a/proto/backend/servers.proto b/proto/backend/servers.proto deleted file mode 100644 index 9b81582dc..000000000 --- a/proto/backend/servers.proto +++ /dev/null @@ -1,61 +0,0 @@ -syntax = "proto3"; - -package rivet.backend.servers; - -import "google/protobuf/struct.proto"; -import "proto/common.proto"; - -message Server { - rivet.common.Uuid cluster_id = 1; - rivet.common.Uuid datacenter_id = 2; - int32 kill_timeout = 3; - map metadata = 4; - Runtime runtime = 5; -} - -message MetadataJson { - string value = 1; -} - -message Runtime { - optional DockerRuntime docker = 1; -} - -message DockerRuntime { - repeated string args = 1; - map environment = 2; - string image_id = 3; - DockerNetwork network = 4; -} - -message DockerNetwork { - DockerNetworkMode mode = 1; - map ports = 2; -} - -enum DockerNetworkMode { - HOST = 0; - BRIDGE = 1; -} - -message DockerPort { - optional int32 port = 1; - DockerPortRouting routing = 2; -} - -message DockerPortRouting { - optional GameGuardProtocol game_guard = 1; - optional DockerHostRouting host = 2; -} - -enum GameGuardProtocol { - HTTP = 0; - HTTPS = 1; - TCP = 2; - TCP_TLS = 3; - UDP = 4; -} - -message DockerHostRouting { - google.protobuf.Value null = 1; -} \ No newline at end of file diff --git a/proto/claims.proto b/proto/claims.proto index 854a27bff..684311a61 100644 --- a/proto/claims.proto +++ b/proto/claims.proto @@ -119,6 +119,11 @@ message Entitlement { string db_name = 2; } + message GameService { + // The game ID that the server will be running. + rivet.common.Uuid game_id = 1; + } + oneof kind { Refresh refresh = 1; User user = 2; @@ -137,6 +142,7 @@ message Entitlement { AccessToken access_token = 16; ProvisionedServer provisioned_server = 17; OpenGbDb opengb_db = 18; + GameService game_service = 19; } reserved 13; diff --git a/sdks/full/go/client/client.go b/sdks/full/go/client/client.go index b02b1e520..3b20977cd 100644 --- a/sdks/full/go/client/client.go +++ b/sdks/full/go/client/client.go @@ -29,11 +29,11 @@ type Client struct { Identity *identityclient.Client Kv *kvclient.Client Provision *provisionclient.Client - Servers *serversclient.Client Auth *authclient.Client Job *jobclient.Client Matchmaker *matchmakerclient.Client Portal *portalclient.Client + Servers *serversclient.Client } func NewClient(opts ...core.ClientOption) *Client { @@ -51,10 +51,10 @@ func NewClient(opts ...core.ClientOption) *Client { Identity: identityclient.NewClient(opts...), Kv: kvclient.NewClient(opts...), Provision: provisionclient.NewClient(opts...), - Servers: serversclient.NewClient(opts...), Auth: authclient.NewClient(opts...), Job: jobclient.NewClient(opts...), Matchmaker: matchmakerclient.NewClient(opts...), Portal: portalclient.NewClient(opts...), + Servers: serversclient.NewClient(opts...), } } diff --git a/sdks/full/go/cloud/games/tokens/client.go b/sdks/full/go/cloud/games/tokens/client.go index 79ae853bd..73865dcc1 100644 --- a/sdks/full/go/cloud/games/tokens/client.go +++ b/sdks/full/go/cloud/games/tokens/client.go @@ -111,3 +111,81 @@ func (c *Client) CreateCloudToken(ctx context.Context, gameId uuid.UUID) (*games } return response, nil } + +// Creates a new game service token. +func (c *Client) CreateServiceToken(ctx context.Context, gameId uuid.UUID) (*games.CreateCloudTokenResponse, error) { + baseURL := "https://api.rivet.gg" + if c.baseURL != "" { + baseURL = c.baseURL + } + endpointURL := fmt.Sprintf(baseURL+"/"+"cloud/games/%v/tokens/service", gameId) + + errorDecoder := func(statusCode int, body io.Reader) error { + raw, err := io.ReadAll(body) + if err != nil { + return err + } + apiError := core.NewAPIError(statusCode, errors.New(string(raw))) + decoder := json.NewDecoder(bytes.NewReader(raw)) + switch statusCode { + case 500: + value := new(sdk.InternalError) + value.APIError = apiError + if err := decoder.Decode(value); err != nil { + return apiError + } + return value + case 429: + value := new(sdk.RateLimitError) + value.APIError = apiError + if err := decoder.Decode(value); err != nil { + return apiError + } + return value + case 403: + value := new(sdk.ForbiddenError) + value.APIError = apiError + if err := decoder.Decode(value); err != nil { + return apiError + } + return value + case 408: + value := new(sdk.UnauthorizedError) + value.APIError = apiError + if err := decoder.Decode(value); err != nil { + return apiError + } + return value + case 404: + value := new(sdk.NotFoundError) + value.APIError = apiError + if err := decoder.Decode(value); err != nil { + return apiError + } + return value + case 400: + value := new(sdk.BadRequestError) + value.APIError = apiError + if err := decoder.Decode(value); err != nil { + return apiError + } + return value + } + return apiError + } + + var response *games.CreateCloudTokenResponse + if err := c.caller.Call( + ctx, + &core.CallParams{ + URL: endpointURL, + Method: http.MethodPost, + Headers: c.header, + Response: &response, + ErrorDecoder: errorDecoder, + }, + ); err != nil { + return nil, err + } + return response, nil +} diff --git a/sdks/full/go/cloud/games/types.go b/sdks/full/go/cloud/games/types.go index 7943c6ed4..729a89c39 100644 --- a/sdks/full/go/cloud/games/types.go +++ b/sdks/full/go/cloud/games/types.go @@ -3,7 +3,9 @@ package games import ( + json "encoding/json" fmt "fmt" + core "sdk/core" ) type GetGameByIdRequest struct { @@ -63,3 +65,33 @@ func NewBuildKindFromString(s string) (BuildKind, error) { func (b BuildKind) Ptr() *BuildKind { return &b } + +type CreateServiceTokenResponse struct { + // A JSON Web Token. + Token string `json:"token"` + + _rawJSON json.RawMessage +} + +func (c *CreateServiceTokenResponse) UnmarshalJSON(data []byte) error { + type unmarshaler CreateServiceTokenResponse + var value unmarshaler + if err := json.Unmarshal(data, &value); err != nil { + return err + } + *c = CreateServiceTokenResponse(value) + c._rawJSON = json.RawMessage(data) + return nil +} + +func (c *CreateServiceTokenResponse) String() string { + if len(c._rawJSON) > 0 { + if value, err := core.StringifyJSON(c._rawJSON); err == nil { + return value + } + } + if value, err := core.StringifyJSON(c); err == nil { + return value + } + return fmt.Sprintf("%#v", c) +} diff --git a/sdks/full/go/servers/client/client.go b/sdks/full/go/servers/client/client.go index bbd62b77b..7c5274c0c 100644 --- a/sdks/full/go/servers/client/client.go +++ b/sdks/full/go/servers/client/client.go @@ -5,8 +5,7 @@ package client import ( http "net/http" core "sdk/core" - imagesclient "sdk/servers/images/client" - serversclient "sdk/servers/servers/client" + servers "sdk/servers/servers" ) type Client struct { @@ -14,8 +13,7 @@ type Client struct { caller *core.Caller header http.Header - Images *imagesclient.Client - Servers *serversclient.Client + Servers *servers.Client } func NewClient(opts ...core.ClientOption) *Client { @@ -27,7 +25,6 @@ func NewClient(opts ...core.ClientOption) *Client { baseURL: options.BaseURL, caller: core.NewCaller(options.HTTPClient), header: options.ToHeader(), - Images: imagesclient.NewClient(opts...), - Servers: serversclient.NewClient(opts...), + Servers: servers.NewClient(opts...), } } diff --git a/sdks/full/go/servers/images/client/client.go b/sdks/full/go/servers/images/client/client.go deleted file mode 100644 index bfc8f1a59..000000000 --- a/sdks/full/go/servers/images/client/client.go +++ /dev/null @@ -1,110 +0,0 @@ -// This file was auto-generated by Fern from our API Definition. - -package client - -import ( - bytes "bytes" - context "context" - json "encoding/json" - errors "errors" - io "io" - http "net/http" - sdk "sdk" - core "sdk/core" - images "sdk/servers/images" -) - -type Client struct { - baseURL string - caller *core.Caller - header http.Header -} - -func NewClient(opts ...core.ClientOption) *Client { - options := core.NewClientOptions() - for _, opt := range opts { - opt(options) - } - return &Client{ - baseURL: options.BaseURL, - caller: core.NewCaller(options.HTTPClient), - header: options.ToHeader(), - } -} - -// Create a new docker image. -func (c *Client) Create(ctx context.Context, request *images.CreateRequest) error { - baseURL := "https://api.rivet.gg" - if c.baseURL != "" { - baseURL = c.baseURL - } - endpointURL := baseURL + "/" + "servers/docker" - - errorDecoder := func(statusCode int, body io.Reader) error { - raw, err := io.ReadAll(body) - if err != nil { - return err - } - apiError := core.NewAPIError(statusCode, errors.New(string(raw))) - decoder := json.NewDecoder(bytes.NewReader(raw)) - switch statusCode { - case 500: - value := new(sdk.InternalError) - value.APIError = apiError - if err := decoder.Decode(value); err != nil { - return apiError - } - return value - case 429: - value := new(sdk.RateLimitError) - value.APIError = apiError - if err := decoder.Decode(value); err != nil { - return apiError - } - return value - case 403: - value := new(sdk.ForbiddenError) - value.APIError = apiError - if err := decoder.Decode(value); err != nil { - return apiError - } - return value - case 408: - value := new(sdk.UnauthorizedError) - value.APIError = apiError - if err := decoder.Decode(value); err != nil { - return apiError - } - return value - case 404: - value := new(sdk.NotFoundError) - value.APIError = apiError - if err := decoder.Decode(value); err != nil { - return apiError - } - return value - case 400: - value := new(sdk.BadRequestError) - value.APIError = apiError - if err := decoder.Decode(value); err != nil { - return apiError - } - return value - } - return apiError - } - - if err := c.caller.Call( - ctx, - &core.CallParams{ - URL: endpointURL, - Method: http.MethodPost, - Headers: c.header, - Request: request, - ErrorDecoder: errorDecoder, - }, - ); err != nil { - return err - } - return nil -} diff --git a/sdks/full/go/servers/images/images.go b/sdks/full/go/servers/images/images.go deleted file mode 100644 index 4e7b7dae6..000000000 --- a/sdks/full/go/servers/images/images.go +++ /dev/null @@ -1,38 +0,0 @@ -// This file was auto-generated by Fern from our API Definition. - -package images - -import ( - json "encoding/json" - fmt "fmt" - core "sdk/core" -) - -type CreateRequest struct { - Null interface{} `json:"null,omitempty"` - - _rawJSON json.RawMessage -} - -func (c *CreateRequest) UnmarshalJSON(data []byte) error { - type unmarshaler CreateRequest - var value unmarshaler - if err := json.Unmarshal(data, &value); err != nil { - return err - } - *c = CreateRequest(value) - c._rawJSON = json.RawMessage(data) - return nil -} - -func (c *CreateRequest) String() string { - if len(c._rawJSON) > 0 { - if value, err := core.StringifyJSON(c._rawJSON); err == nil { - return value - } - } - if value, err := core.StringifyJSON(c); err == nil { - return value - } - return fmt.Sprintf("%#v", c) -} diff --git a/sdks/full/go/servers/servers.go b/sdks/full/go/servers/servers.go new file mode 100644 index 000000000..76c7a33bb --- /dev/null +++ b/sdks/full/go/servers/servers.go @@ -0,0 +1,109 @@ +// This file was auto-generated by Fern from our API Definition. + +package servers + +import ( + json "encoding/json" + fmt "fmt" + uuid "github.com/google/uuid" + core "sdk/core" +) + +type DestroyServerRequest struct { + // The duration to wait for in milliseconds before killing the server. This should be used to override the default kill timeout if a faster time is needed, say for ignoring a graceful shutdown. + OverrideKillTimeout *int64 `json:"-"` +} + +type CreateServerRequest struct { + // The name ID of the datacenter + Datacenter string `json:"datacenter"` + Metadata interface{} `json:"metadata,omitempty"` + Resources *Resources `json:"resources,omitempty"` + // The duration to wait for in milliseconds before killing the server. This should be set to a safe default, and can be overridden during a DELETE request if needed. + KillTimeout *int64 `json:"kill_timeout,omitempty"` + Runtime *Runtime `json:"runtime,omitempty"` + + _rawJSON json.RawMessage +} + +func (c *CreateServerRequest) UnmarshalJSON(data []byte) error { + type unmarshaler CreateServerRequest + var value unmarshaler + if err := json.Unmarshal(data, &value); err != nil { + return err + } + *c = CreateServerRequest(value) + c._rawJSON = json.RawMessage(data) + return nil +} + +func (c *CreateServerRequest) String() string { + if len(c._rawJSON) > 0 { + if value, err := core.StringifyJSON(c._rawJSON); err == nil { + return value + } + } + if value, err := core.StringifyJSON(c); err == nil { + return value + } + return fmt.Sprintf("%#v", c) +} + +type CreateServerResponse struct { + // The server that was created + Server *Server `json:"server,omitempty"` + + _rawJSON json.RawMessage +} + +func (c *CreateServerResponse) UnmarshalJSON(data []byte) error { + type unmarshaler CreateServerResponse + var value unmarshaler + if err := json.Unmarshal(data, &value); err != nil { + return err + } + *c = CreateServerResponse(value) + c._rawJSON = json.RawMessage(data) + return nil +} + +func (c *CreateServerResponse) String() string { + if len(c._rawJSON) > 0 { + if value, err := core.StringifyJSON(c._rawJSON); err == nil { + return value + } + } + if value, err := core.StringifyJSON(c); err == nil { + return value + } + return fmt.Sprintf("%#v", c) +} + +type DestroyServerResponse struct { + ServerId uuid.UUID `json:"server_id"` + + _rawJSON json.RawMessage +} + +func (d *DestroyServerResponse) UnmarshalJSON(data []byte) error { + type unmarshaler DestroyServerResponse + var value unmarshaler + if err := json.Unmarshal(data, &value); err != nil { + return err + } + *d = DestroyServerResponse(value) + d._rawJSON = json.RawMessage(data) + return nil +} + +func (d *DestroyServerResponse) String() string { + if len(d._rawJSON) > 0 { + if value, err := core.StringifyJSON(d._rawJSON); err == nil { + return value + } + } + if value, err := core.StringifyJSON(d); err == nil { + return value + } + return fmt.Sprintf("%#v", d) +} diff --git a/sdks/full/go/servers/servers/client/client.go b/sdks/full/go/servers/servers/client.go similarity index 87% rename from sdks/full/go/servers/servers/client/client.go rename to sdks/full/go/servers/servers/client.go index 8fb7cb22a..1affa462d 100644 --- a/sdks/full/go/servers/servers/client/client.go +++ b/sdks/full/go/servers/servers/client.go @@ -1,6 +1,6 @@ // This file was auto-generated by Fern from our API Definition. -package client +package servers import ( bytes "bytes" @@ -11,9 +11,10 @@ import ( uuid "github.com/google/uuid" io "io" http "net/http" + url "net/url" sdk "sdk" core "sdk/core" - servers "sdk/servers/servers" + servers "sdk/servers" ) type Client struct { @@ -35,7 +36,7 @@ func NewClient(opts ...core.ClientOption) *Client { } // Create a new dynamic server. -func (c *Client) Create(ctx context.Context, request *servers.CreateRequest) (*servers.CreateResponse, error) { +func (c *Client) Create(ctx context.Context, request *servers.CreateServerRequest) (*servers.CreateServerResponse, error) { baseURL := "https://api.rivet.gg" if c.baseURL != "" { baseURL = c.baseURL @@ -96,7 +97,7 @@ func (c *Client) Create(ctx context.Context, request *servers.CreateRequest) (*s return apiError } - var response *servers.CreateResponse + var response *servers.CreateServerResponse if err := c.caller.Call( ctx, &core.CallParams{ @@ -116,13 +117,21 @@ func (c *Client) Create(ctx context.Context, request *servers.CreateRequest) (*s // Destroy a dynamic server. // // The id of the server to destroy -func (c *Client) Destroy(ctx context.Context, serverId uuid.UUID, request *servers.DestroyRequest) error { +func (c *Client) Destroy(ctx context.Context, serverId uuid.UUID, request *servers.DestroyServerRequest) (*servers.DestroyServerResponse, error) { baseURL := "https://api.rivet.gg" if c.baseURL != "" { baseURL = c.baseURL } endpointURL := fmt.Sprintf(baseURL+"/"+"servers/servers/%v", serverId) + queryParams := make(url.Values) + if request.OverrideKillTimeout != nil { + queryParams.Add("override_kill_timeout", fmt.Sprintf("%v", *request.OverrideKillTimeout)) + } + if len(queryParams) > 0 { + endpointURL += "?" + queryParams.Encode() + } + errorDecoder := func(statusCode int, body io.Reader) error { raw, err := io.ReadAll(body) if err != nil { @@ -177,17 +186,18 @@ func (c *Client) Destroy(ctx context.Context, serverId uuid.UUID, request *serve return apiError } + var response *servers.DestroyServerResponse if err := c.caller.Call( ctx, &core.CallParams{ URL: endpointURL, Method: http.MethodDelete, Headers: c.header, - Request: request, + Response: &response, ErrorDecoder: errorDecoder, }, ); err != nil { - return err + return nil, err } - return nil + return response, nil } diff --git a/sdks/full/go/servers/servers/servers.go b/sdks/full/go/servers/servers/servers.go deleted file mode 100644 index ca5e412c8..000000000 --- a/sdks/full/go/servers/servers/servers.go +++ /dev/null @@ -1,103 +0,0 @@ -// This file was auto-generated by Fern from our API Definition. - -package servers - -import ( - json "encoding/json" - fmt "fmt" - core "sdk/core" - servers "sdk/servers" -) - -type CreateRequest struct { - Metadata map[string]interface{} `json:"metadata,omitempty"` - // The name id of the cluster - Cluster string `json:"cluster"` - // The name id of the datacenter - Datacenter string `json:"datacenter"` - KillTimeout int `json:"kill_timeout"` - Runtime *servers.Runtime `json:"runtime,omitempty"` - - _rawJSON json.RawMessage -} - -func (c *CreateRequest) UnmarshalJSON(data []byte) error { - type unmarshaler CreateRequest - var value unmarshaler - if err := json.Unmarshal(data, &value); err != nil { - return err - } - *c = CreateRequest(value) - c._rawJSON = json.RawMessage(data) - return nil -} - -func (c *CreateRequest) String() string { - if len(c._rawJSON) > 0 { - if value, err := core.StringifyJSON(c._rawJSON); err == nil { - return value - } - } - if value, err := core.StringifyJSON(c); err == nil { - return value - } - return fmt.Sprintf("%#v", c) -} - -type CreateResponse struct { - Server *servers.Server `json:"server,omitempty"` - - _rawJSON json.RawMessage -} - -func (c *CreateResponse) UnmarshalJSON(data []byte) error { - type unmarshaler CreateResponse - var value unmarshaler - if err := json.Unmarshal(data, &value); err != nil { - return err - } - *c = CreateResponse(value) - c._rawJSON = json.RawMessage(data) - return nil -} - -func (c *CreateResponse) String() string { - if len(c._rawJSON) > 0 { - if value, err := core.StringifyJSON(c._rawJSON); err == nil { - return value - } - } - if value, err := core.StringifyJSON(c); err == nil { - return value - } - return fmt.Sprintf("%#v", c) -} - -type DestroyRequest struct { - KillTimeout *int `json:"kill_timeout,omitempty"` - - _rawJSON json.RawMessage -} - -func (d *DestroyRequest) UnmarshalJSON(data []byte) error { - type unmarshaler DestroyRequest - var value unmarshaler - if err := json.Unmarshal(data, &value); err != nil { - return err - } - *d = DestroyRequest(value) - d._rawJSON = json.RawMessage(data) - return nil -} - -func (d *DestroyRequest) String() string { - if len(d._rawJSON) > 0 { - if value, err := core.StringifyJSON(d._rawJSON); err == nil { - return value - } - } - if value, err := core.StringifyJSON(d); err == nil { - return value - } - return fmt.Sprintf("%#v", d) -} diff --git a/sdks/full/go/servers/types.go b/sdks/full/go/servers/types.go index c1b1b4086..d589f5873 100644 --- a/sdks/full/go/servers/types.go +++ b/sdks/full/go/servers/types.go @@ -5,15 +5,43 @@ package servers import ( json "encoding/json" fmt "fmt" + uuid "github.com/google/uuid" core "sdk/core" ) -type DockerHostRouting struct { - Null interface{} `json:"null,omitempty"` +type DockerGameGuardRouting struct { + Protocol *GameGuardProtocol `json:"protocol,omitempty"` _rawJSON json.RawMessage } +func (d *DockerGameGuardRouting) UnmarshalJSON(data []byte) error { + type unmarshaler DockerGameGuardRouting + var value unmarshaler + if err := json.Unmarshal(data, &value); err != nil { + return err + } + *d = DockerGameGuardRouting(value) + d._rawJSON = json.RawMessage(data) + return nil +} + +func (d *DockerGameGuardRouting) String() string { + if len(d._rawJSON) > 0 { + if value, err := core.StringifyJSON(d._rawJSON); err == nil { + return value + } + } + if value, err := core.StringifyJSON(d); err == nil { + return value + } + return fmt.Sprintf("%#v", d) +} + +type DockerHostRouting struct { + _rawJSON json.RawMessage +} + func (d *DockerHostRouting) UnmarshalJSON(data []byte) error { type unmarshaler DockerHostRouting var value unmarshaler @@ -38,7 +66,7 @@ func (d *DockerHostRouting) String() string { } type DockerNetwork struct { - Mode DockerNetworkMode `json:"mode,omitempty"` + Mode *DockerNetworkMode `json:"mode,omitempty"` Ports map[string]*DockerPort `json:"ports,omitempty"` _rawJSON json.RawMessage @@ -70,16 +98,16 @@ func (d *DockerNetwork) String() string { type DockerNetworkMode string const ( - DockerNetworkModeHost DockerNetworkMode = "host" DockerNetworkModeBridge DockerNetworkMode = "bridge" + DockerNetworkModeHost DockerNetworkMode = "host" ) func NewDockerNetworkModeFromString(s string) (DockerNetworkMode, error) { switch s { - case "host": - return DockerNetworkModeHost, nil case "bridge": return DockerNetworkModeBridge, nil + case "host": + return DockerNetworkModeHost, nil } var t DockerNetworkMode return "", fmt.Errorf("%s is not a valid %T", s, t) @@ -120,8 +148,8 @@ func (d *DockerPort) String() string { } type DockerPortRouting struct { - GameGuard *GameGuardProtocol `json:"game_guard,omitempty"` - Host *DockerHostRouting `json:"host,omitempty"` + GameGuard *DockerGameGuardRouting `json:"game_guard,omitempty"` + Host *DockerHostRouting `json:"host,omitempty"` _rawJSON json.RawMessage } @@ -150,7 +178,7 @@ func (d *DockerPortRouting) String() string { } type DockerRuntime struct { - ImageId string `json:"image_id"` + ImageId uuid.UUID `json:"image_id"` Args []string `json:"args,omitempty"` Environment map[string]string `json:"environment,omitempty"` Network *DockerNetwork `json:"network,omitempty"` @@ -212,6 +240,40 @@ func (g GameGuardProtocol) Ptr() *GameGuardProtocol { return &g } +type Resources struct { + // The number of CPU cores in millicores, or 1/1000 of a core. For example, + // 1/8 of a core would be 125 millicores, and 1 core would be 1000 + // millicores. + Cpu int `json:"cpu"` + // The amount of memory in megabytes + Memory int `json:"memory"` + + _rawJSON json.RawMessage +} + +func (r *Resources) UnmarshalJSON(data []byte) error { + type unmarshaler Resources + var value unmarshaler + if err := json.Unmarshal(data, &value); err != nil { + return err + } + *r = Resources(value) + r._rawJSON = json.RawMessage(data) + return nil +} + +func (r *Resources) String() string { + if len(r._rawJSON) > 0 { + if value, err := core.StringifyJSON(r._rawJSON); err == nil { + return value + } + } + if value, err := core.StringifyJSON(r); err == nil { + return value + } + return fmt.Sprintf("%#v", r) +} + type Runtime struct { Docker *DockerRuntime `json:"docker,omitempty"` @@ -242,7 +304,17 @@ func (r *Runtime) String() string { } type Server struct { - Null interface{} `json:"null,omitempty"` + ServerId uuid.UUID `json:"server_id"` + GameId uuid.UUID `json:"game_id"` + DatacenterId uuid.UUID `json:"datacenter_id"` + ClusterId uuid.UUID `json:"cluster_id"` + Metadata interface{} `json:"metadata,omitempty"` + Resources *Resources `json:"resources,omitempty"` + // The duration to wait for in milliseconds before killing the server. This should be set to a safe default, and can be overridden during a DELETE request if needed. + KillTimeout *int64 `json:"kill_timeout,omitempty"` + Runtime *Runtime `json:"runtime,omitempty"` + CreateTs int64 `json:"create_ts"` + DestroyTs *int64 `json:"destroy_ts,omitempty"` _rawJSON json.RawMessage } diff --git a/sdks/full/openapi/openapi.yml b/sdks/full/openapi/openapi.yml index b0402ef7c..f11fd2247 100644 --- a/sdks/full/openapi/openapi.yml +++ b/sdks/full/openapi/openapi.yml @@ -4874,176 +4874,6 @@ paths: schema: $ref: '#/components/schemas/ErrorBody' security: *ref_0 - /servers/docker: - post: - description: Create a new docker image. - operationId: servers_images_create - tags: - - ServersImages - parameters: [] - responses: - '204': - description: '' - '400': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorBody' - '403': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorBody' - '404': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorBody' - '408': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorBody' - '429': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorBody' - '500': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorBody' - security: *ref_0 - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/ServersImagesCreateRequest' - /servers/servers: - post: - description: Create a new dynamic server. - operationId: servers_servers_create - tags: - - ServersServers - parameters: [] - responses: - '200': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/ServersServersCreateResponse' - '400': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorBody' - '403': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorBody' - '404': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorBody' - '408': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorBody' - '429': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorBody' - '500': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorBody' - security: *ref_0 - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/ServersServersCreateRequest' - /servers/servers/{server_id}: - delete: - description: Destroy a dynamic server. - operationId: servers_servers_destroy - tags: - - ServersServers - parameters: - - name: server_id - in: path - description: The id of the server to destroy - required: true - schema: - type: string - format: uuid - responses: - '204': - description: '' - '400': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorBody' - '403': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorBody' - '404': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorBody' - '408': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorBody' - '429': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorBody' - '500': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorBody' - security: *ref_0 - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/ServersServersDestroyRequest' /admin/clusters/{cluster_id}/datacenters: get: description: Get datacenters of a cluster @@ -6837,6 +6667,63 @@ paths: schema: $ref: '#/components/schemas/ErrorBody' security: *ref_0 + /cloud/games/{game_id}/tokens/service: + post: + description: Creates a new game service token. + operationId: cloud_games_tokens_createServiceToken + tags: + - CloudGamesTokens + parameters: + - name: game_id + in: path + required: true + schema: + type: string + format: uuid + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/CloudGamesCreateCloudTokenResponse' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorBody' + '403': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorBody' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorBody' + '408': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorBody' + '429': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorBody' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorBody' + security: *ref_0 /cloud/games/{game_id}/versions: post: description: Creates a new game version. @@ -9018,6 +8905,131 @@ paths: schema: $ref: '#/components/schemas/ErrorBody' security: *ref_0 + /servers/servers: + post: + description: Create a new dynamic server. + operationId: servers_servers_create + tags: + - ServersServers + parameters: [] + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ServersCreateServerResponse' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorBody' + '403': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorBody' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorBody' + '408': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorBody' + '429': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorBody' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorBody' + security: *ref_0 + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ServersCreateServerRequest' + /servers/servers/{server_id}: + delete: + description: Destroy a dynamic server. + operationId: servers_servers_destroy + tags: + - ServersServers + parameters: + - name: server_id + in: path + description: The id of the server to destroy + required: true + schema: + type: string + format: uuid + - name: override_kill_timeout + in: query + description: >- + The duration to wait for in milliseconds before killing the server. + This should be used to override the default kill timeout if a faster + time is needed, say for ignoring a graceful shutdown. + required: false + schema: + type: integer + format: int64 + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ServersDestroyServerResponse' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorBody' + '403': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorBody' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorBody' + '408': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorBody' + '429': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorBody' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorBody' + security: *ref_0 components: schemas: AdminLoginRequest: @@ -10145,46 +10157,6 @@ components: - datacenter_id - cluster_id - vlan_ip - ServersImagesCreateRequest: - type: object - properties: - 'null': {} - required: - - 'null' - ServersServersCreateRequest: - type: object - properties: - metadata: - type: object - additionalProperties: {} - cluster: - type: string - description: The name id of the cluster - datacenter: - type: string - description: The name id of the datacenter - kill_timeout: - type: integer - runtime: - $ref: '#/components/schemas/ServersRuntime' - required: - - metadata - - cluster - - datacenter - - kill_timeout - - runtime - ServersServersCreateResponse: - type: object - properties: - server: - $ref: '#/components/schemas/ServersServer' - required: - - server - ServersServersDestroyRequest: - type: object - properties: - kill_timeout: - type: integer AdminClustersPoolType: type: string enum: @@ -11596,6 +11568,14 @@ components: JSON. required: - token + CloudGamesCreateServiceTokenResponse: + type: object + properties: + token: + type: string + description: A JSON Web Token. + required: + - token CloudGamesCreateGameVersionRequest: type: object properties: @@ -13573,6 +13553,66 @@ components: required: - game - watch + ServersServer: + type: object + properties: + server_id: + type: string + format: uuid + game_id: + type: string + format: uuid + datacenter_id: + type: string + format: uuid + cluster_id: + type: string + format: uuid + metadata: {} + resources: + $ref: '#/components/schemas/ServersResources' + kill_timeout: + type: integer + format: int64 + description: >- + The duration to wait for in milliseconds before killing the server. + This should be set to a safe default, and can be overridden during a + DELETE request if needed. + runtime: + $ref: '#/components/schemas/ServersRuntime' + create_ts: + type: integer + format: int64 + destroy_ts: + type: integer + format: int64 + required: + - server_id + - game_id + - datacenter_id + - cluster_id + - metadata + - resources + - runtime + - create_ts + ServersResources: + type: object + properties: + cpu: + type: integer + description: >- + The number of CPU cores in millicores, or 1/1000 of a core. For + example, + + 1/8 of a core would be 125 millicores, and 1 core would be 1000 + + millicores. + memory: + type: integer + description: The amount of memory in megabytes + required: + - cpu + - memory ServersRuntime: type: object properties: @@ -13583,6 +13623,7 @@ components: properties: image_id: type: string + format: uuid args: type: array items: @@ -13595,8 +13636,6 @@ components: $ref: '#/components/schemas/ServersDockerNetwork' required: - image_id - - args - - environment - network ServersDockerNetwork: type: object @@ -13608,21 +13647,12 @@ components: additionalProperties: $ref: '#/components/schemas/ServersDockerPort' required: - - mode - ports ServersDockerNetworkMode: type: string enum: - - host - bridge - ServersGameGuardProtocol: - type: string - enum: - - http - - https - - tcp - - tcp_tls - - udp + - host ServersDockerPort: type: object properties: @@ -13636,21 +13666,64 @@ components: type: object properties: game_guard: - $ref: '#/components/schemas/ServersGameGuardProtocol' + $ref: '#/components/schemas/ServersDockerGameGuardRouting' host: $ref: '#/components/schemas/ServersDockerHostRouting' + ServersDockerGameGuardRouting: + type: object + properties: + protocol: + $ref: '#/components/schemas/ServersGameGuardProtocol' + ServersGameGuardProtocol: + type: string + enum: + - http + - https + - tcp + - tcp_tls + - udp ServersDockerHostRouting: + type: object + properties: {} + ServersCreateServerRequest: type: object properties: - 'null': {} + datacenter: + type: string + description: The name ID of the datacenter + metadata: {} + resources: + $ref: '#/components/schemas/ServersResources' + kill_timeout: + type: integer + format: int64 + description: >- + The duration to wait for in milliseconds before killing the server. + This should be set to a safe default, and can be overridden during a + DELETE request if needed. + runtime: + $ref: '#/components/schemas/ServersRuntime' required: - - 'null' - ServersServer: + - datacenter + - metadata + - resources + - runtime + ServersCreateServerResponse: + type: object + properties: + server: + $ref: '#/components/schemas/ServersServer' + description: The server that was created + required: + - server + ServersDestroyServerResponse: type: object properties: - 'null': {} + server_id: + type: string + format: uuid required: - - 'null' + - server_id UploadPresignedRequest: type: object description: >- diff --git a/sdks/full/openapi_compat/openapi.yml b/sdks/full/openapi_compat/openapi.yml index 0b83f2353..56534d0a8 100644 --- a/sdks/full/openapi_compat/openapi.yml +++ b/sdks/full/openapi_compat/openapi.yml @@ -856,6 +856,14 @@ components: required: - version_id type: object + CloudGamesCreateServiceTokenResponse: + properties: + token: + description: A JSON Web Token. + type: string + required: + - token + type: object CloudGamesDeleteMatchmakerLobbyResponse: properties: did_remove: @@ -4389,11 +4397,51 @@ components: - cluster_id - vlan_ip type: object - ServersDockerHostRouting: + ServersCreateServerRequest: + properties: + datacenter: + description: The name ID of the datacenter + type: string + kill_timeout: + description: The duration to wait for in milliseconds before killing the + server. This should be set to a safe default, and can be overridden during + a DELETE request if needed. + format: int64 + type: integer + metadata: {} + resources: + $ref: '#/components/schemas/ServersResources' + runtime: + $ref: '#/components/schemas/ServersRuntime' + required: + - datacenter + - metadata + - resources + - runtime + type: object + ServersCreateServerResponse: + properties: + server: + $ref: '#/components/schemas/ServersServer' + description: The server that was created + required: + - server + type: object + ServersDestroyServerResponse: properties: - 'null': {} + server_id: + format: uuid + type: string required: - - 'null' + - server_id + type: object + ServersDockerGameGuardRouting: + properties: + protocol: + $ref: '#/components/schemas/ServersGameGuardProtocol' + type: object + ServersDockerHostRouting: + properties: {} type: object ServersDockerNetwork: properties: @@ -4404,13 +4452,12 @@ components: $ref: '#/components/schemas/ServersDockerPort' type: object required: - - mode - ports type: object ServersDockerNetworkMode: enum: - - host - bridge + - host type: string ServersDockerPort: properties: @@ -4424,7 +4471,7 @@ components: ServersDockerPortRouting: properties: game_guard: - $ref: '#/components/schemas/ServersGameGuardProtocol' + $ref: '#/components/schemas/ServersDockerGameGuardRouting' host: $ref: '#/components/schemas/ServersDockerHostRouting' type: object @@ -4439,13 +4486,12 @@ components: type: string type: object image_id: + format: uuid type: string network: $ref: '#/components/schemas/ServersDockerNetwork' required: - image_id - - args - - environment - network type: object ServersGameGuardProtocol: @@ -4456,11 +4502,22 @@ components: - tcp_tls - udp type: string - ServersImagesCreateRequest: + ServersResources: properties: - 'null': {} + cpu: + description: 'The number of CPU cores in millicores, or 1/1000 of a core. + For example, + + 1/8 of a core would be 125 millicores, and 1 core would be 1000 + + millicores.' + type: integer + memory: + description: The amount of memory in megabytes + type: integer required: - - 'null' + - cpu + - memory type: object ServersRuntime: properties: @@ -4469,43 +4526,44 @@ components: type: object ServersServer: properties: - 'null': {} - required: - - 'null' - type: object - ServersServersCreateRequest: - properties: - cluster: - description: The name id of the cluster + cluster_id: + format: uuid type: string - datacenter: - description: The name id of the datacenter + create_ts: + format: int64 + type: integer + datacenter_id: + format: uuid + type: string + destroy_ts: + format: int64 + type: integer + game_id: + format: uuid type: string kill_timeout: + description: The duration to wait for in milliseconds before killing the + server. This should be set to a safe default, and can be overridden during + a DELETE request if needed. + format: int64 type: integer - metadata: - additionalProperties: {} - type: object + metadata: {} + resources: + $ref: '#/components/schemas/ServersResources' runtime: $ref: '#/components/schemas/ServersRuntime' + server_id: + format: uuid + type: string required: + - server_id + - game_id + - datacenter_id + - cluster_id - metadata - - cluster - - datacenter - - kill_timeout + - resources - runtime - type: object - ServersServersCreateResponse: - properties: - server: - $ref: '#/components/schemas/ServersServer' - required: - - server - type: object - ServersServersDestroyRequest: - properties: - kill_timeout: - type: integer + - create_ts type: object Timestamp: description: RFC3339 timestamp @@ -8124,6 +8182,63 @@ paths: security: *id001 tags: - CloudGamesTokens + /cloud/games/{game_id}/tokens/service: + post: + description: Creates a new game service token. + operationId: cloud_games_tokens_createServiceToken + parameters: + - in: path + name: game_id + required: true + schema: + format: uuid + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/CloudGamesCreateCloudTokenResponse' + description: '' + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorBody' + description: '' + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorBody' + description: '' + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorBody' + description: '' + '408': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorBody' + description: '' + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorBody' + description: '' + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorBody' + description: '' + security: *id001 + tags: + - CloudGamesTokens /cloud/games/{game_id}/versions: post: description: Creates a new game version. @@ -13277,59 +13392,6 @@ paths: security: *id001 tags: - PortalGames - /servers/docker: - post: - description: Create a new docker image. - operationId: servers_images_create - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ServersImagesCreateRequest' - required: true - responses: - '204': - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorBody' - description: '' - '403': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorBody' - description: '' - '404': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorBody' - description: '' - '408': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorBody' - description: '' - '429': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorBody' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorBody' - description: '' - security: *id001 - tags: - - ServersImages /servers/servers: post: description: Create a new dynamic server. @@ -13339,14 +13401,14 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ServersServersCreateRequest' + $ref: '#/components/schemas/ServersCreateServerRequest' required: true responses: '200': content: application/json: schema: - $ref: '#/components/schemas/ServersServersCreateResponse' + $ref: '#/components/schemas/ServersCreateServerResponse' description: '' '400': content: @@ -13399,14 +13461,21 @@ paths: schema: format: uuid type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ServersServersDestroyRequest' - required: true + - description: The duration to wait for in milliseconds before killing the server. + This should be used to override the default kill timeout if a faster time + is needed, say for ignoring a graceful shutdown. + in: query + name: override_kill_timeout + required: false + schema: + format: int64 + type: integer responses: - '204': + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ServersDestroyServerResponse' description: '' '400': content: diff --git a/sdks/full/rust-cli/.openapi-generator/FILES b/sdks/full/rust-cli/.openapi-generator/FILES index 7e5490b50..904328249 100644 --- a/sdks/full/rust-cli/.openapi-generator/FILES +++ b/sdks/full/rust-cli/.openapi-generator/FILES @@ -84,6 +84,7 @@ docs/CloudGamesCreateGameRequest.md docs/CloudGamesCreateGameResponse.md docs/CloudGamesCreateGameVersionRequest.md docs/CloudGamesCreateGameVersionResponse.md +docs/CloudGamesCreateServiceTokenResponse.md docs/CloudGamesDeleteMatchmakerLobbyResponse.md docs/CloudGamesExportLobbyLogsRequest.md docs/CloudGamesExportLobbyLogsResponse.md @@ -345,21 +346,20 @@ docs/ProvisionDatacentersApi.md docs/ProvisionDatacentersGetTlsResponse.md docs/ProvisionServersApi.md docs/ProvisionServersGetInfoResponse.md -docs/ServersDockerHostRouting.md +docs/ServersCreateServerRequest.md +docs/ServersCreateServerResponse.md +docs/ServersDestroyServerResponse.md +docs/ServersDockerGameGuardRouting.md docs/ServersDockerNetwork.md docs/ServersDockerNetworkMode.md docs/ServersDockerPort.md docs/ServersDockerPortRouting.md docs/ServersDockerRuntime.md docs/ServersGameGuardProtocol.md -docs/ServersImagesApi.md -docs/ServersImagesCreateRequest.md +docs/ServersResources.md docs/ServersRuntime.md docs/ServersServer.md docs/ServersServersApi.md -docs/ServersServersCreateRequest.md -docs/ServersServersCreateResponse.md -docs/ServersServersDestroyRequest.md docs/UploadPrepareFile.md docs/UploadPresignedRequest.md docs/ValidationError.md @@ -406,7 +406,6 @@ src/apis/mod.rs src/apis/portal_games_api.rs src/apis/provision_datacenters_api.rs src/apis/provision_servers_api.rs -src/apis/servers_images_api.rs src/apis/servers_servers_api.rs src/lib.rs src/models/admin_clusters_build_delivery_method.rs @@ -476,6 +475,7 @@ src/models/cloud_games_create_game_request.rs src/models/cloud_games_create_game_response.rs src/models/cloud_games_create_game_version_request.rs src/models/cloud_games_create_game_version_response.rs +src/models/cloud_games_create_service_token_response.rs src/models/cloud_games_delete_matchmaker_lobby_response.rs src/models/cloud_games_export_lobby_logs_request.rs src/models/cloud_games_export_lobby_logs_response.rs @@ -713,19 +713,19 @@ src/models/portal_notification_register_service.rs src/models/portal_notification_unregister_service.rs src/models/provision_datacenters_get_tls_response.rs src/models/provision_servers_get_info_response.rs -src/models/servers_docker_host_routing.rs +src/models/servers_create_server_request.rs +src/models/servers_create_server_response.rs +src/models/servers_destroy_server_response.rs +src/models/servers_docker_game_guard_routing.rs src/models/servers_docker_network.rs src/models/servers_docker_network_mode.rs src/models/servers_docker_port.rs src/models/servers_docker_port_routing.rs src/models/servers_docker_runtime.rs src/models/servers_game_guard_protocol.rs -src/models/servers_images_create_request.rs +src/models/servers_resources.rs src/models/servers_runtime.rs src/models/servers_server.rs -src/models/servers_servers_create_request.rs -src/models/servers_servers_create_response.rs -src/models/servers_servers_destroy_request.rs src/models/upload_prepare_file.rs src/models/upload_presigned_request.rs src/models/validation_error.rs diff --git a/sdks/full/rust-cli/README.md b/sdks/full/rust-cli/README.md index e18723cad..9cef5338c 100644 --- a/sdks/full/rust-cli/README.md +++ b/sdks/full/rust-cli/README.md @@ -82,6 +82,7 @@ Class | Method | HTTP request | Description *CloudGamesNamespacesLogsApi* | [**cloud_games_namespaces_logs_get_namespace_lobby**](docs/CloudGamesNamespacesLogsApi.md#cloud_games_namespaces_logs_get_namespace_lobby) | **GET** /cloud/games/{game_id}/namespaces/{namespace_id}/logs/lobbies/{lobby_id} | *CloudGamesNamespacesLogsApi* | [**cloud_games_namespaces_logs_list_namespace_lobbies**](docs/CloudGamesNamespacesLogsApi.md#cloud_games_namespaces_logs_list_namespace_lobbies) | **GET** /cloud/games/{game_id}/namespaces/{namespace_id}/logs/lobbies | *CloudGamesTokensApi* | [**cloud_games_tokens_create_cloud_token**](docs/CloudGamesTokensApi.md#cloud_games_tokens_create_cloud_token) | **POST** /cloud/games/{game_id}/tokens/cloud | +*CloudGamesTokensApi* | [**cloud_games_tokens_create_service_token**](docs/CloudGamesTokensApi.md#cloud_games_tokens_create_service_token) | **POST** /cloud/games/{game_id}/tokens/service | *CloudGamesVersionsApi* | [**cloud_games_versions_create_game_version**](docs/CloudGamesVersionsApi.md#cloud_games_versions_create_game_version) | **POST** /cloud/games/{game_id}/versions | *CloudGamesVersionsApi* | [**cloud_games_versions_get_game_version_by_id**](docs/CloudGamesVersionsApi.md#cloud_games_versions_get_game_version_by_id) | **GET** /cloud/games/{game_id}/versions/{version_id} | *CloudGamesVersionsApi* | [**cloud_games_versions_reserve_version_name**](docs/CloudGamesVersionsApi.md#cloud_games_versions_reserve_version_name) | **POST** /cloud/games/{game_id}/versions/reserve-name | @@ -166,7 +167,6 @@ Class | Method | HTTP request | Description *PortalGamesApi* | [**portal_games_get_game_profile**](docs/PortalGamesApi.md#portal_games_get_game_profile) | **GET** /portal/games/{game_name_id}/profile | *ProvisionDatacentersApi* | [**provision_datacenters_get_tls**](docs/ProvisionDatacentersApi.md#provision_datacenters_get_tls) | **GET** /datacenters/{datacenter_id}/tls | *ProvisionServersApi* | [**provision_servers_get_info**](docs/ProvisionServersApi.md#provision_servers_get_info) | **GET** /servers/{ip} | -*ServersImagesApi* | [**servers_images_create**](docs/ServersImagesApi.md#servers_images_create) | **POST** /servers/docker | *ServersServersApi* | [**servers_servers_create**](docs/ServersServersApi.md#servers_servers_create) | **POST** /servers/servers | *ServersServersApi* | [**servers_servers_destroy**](docs/ServersServersApi.md#servers_servers_destroy) | **DELETE** /servers/servers/{server_id} | @@ -240,6 +240,7 @@ Class | Method | HTTP request | Description - [CloudGamesCreateGameResponse](docs/CloudGamesCreateGameResponse.md) - [CloudGamesCreateGameVersionRequest](docs/CloudGamesCreateGameVersionRequest.md) - [CloudGamesCreateGameVersionResponse](docs/CloudGamesCreateGameVersionResponse.md) + - [CloudGamesCreateServiceTokenResponse](docs/CloudGamesCreateServiceTokenResponse.md) - [CloudGamesDeleteMatchmakerLobbyResponse](docs/CloudGamesDeleteMatchmakerLobbyResponse.md) - [CloudGamesExportLobbyLogsRequest](docs/CloudGamesExportLobbyLogsRequest.md) - [CloudGamesExportLobbyLogsResponse](docs/CloudGamesExportLobbyLogsResponse.md) @@ -476,19 +477,19 @@ Class | Method | HTTP request | Description - [PortalNotificationUnregisterService](docs/PortalNotificationUnregisterService.md) - [ProvisionDatacentersGetTlsResponse](docs/ProvisionDatacentersGetTlsResponse.md) - [ProvisionServersGetInfoResponse](docs/ProvisionServersGetInfoResponse.md) - - [ServersDockerHostRouting](docs/ServersDockerHostRouting.md) + - [ServersCreateServerRequest](docs/ServersCreateServerRequest.md) + - [ServersCreateServerResponse](docs/ServersCreateServerResponse.md) + - [ServersDestroyServerResponse](docs/ServersDestroyServerResponse.md) + - [ServersDockerGameGuardRouting](docs/ServersDockerGameGuardRouting.md) - [ServersDockerNetwork](docs/ServersDockerNetwork.md) - [ServersDockerNetworkMode](docs/ServersDockerNetworkMode.md) - [ServersDockerPort](docs/ServersDockerPort.md) - [ServersDockerPortRouting](docs/ServersDockerPortRouting.md) - [ServersDockerRuntime](docs/ServersDockerRuntime.md) - [ServersGameGuardProtocol](docs/ServersGameGuardProtocol.md) - - [ServersImagesCreateRequest](docs/ServersImagesCreateRequest.md) + - [ServersResources](docs/ServersResources.md) - [ServersRuntime](docs/ServersRuntime.md) - [ServersServer](docs/ServersServer.md) - - [ServersServersCreateRequest](docs/ServersServersCreateRequest.md) - - [ServersServersCreateResponse](docs/ServersServersCreateResponse.md) - - [ServersServersDestroyRequest](docs/ServersServersDestroyRequest.md) - [UploadPrepareFile](docs/UploadPrepareFile.md) - [UploadPresignedRequest](docs/UploadPresignedRequest.md) - [ValidationError](docs/ValidationError.md) diff --git a/sdks/full/rust-cli/docs/ServersDockerHostRouting.md b/sdks/full/rust-cli/docs/CloudGamesCreateServiceTokenResponse.md similarity index 76% rename from sdks/full/rust-cli/docs/ServersDockerHostRouting.md rename to sdks/full/rust-cli/docs/CloudGamesCreateServiceTokenResponse.md index 54c03a90a..c8d021b0f 100644 --- a/sdks/full/rust-cli/docs/ServersDockerHostRouting.md +++ b/sdks/full/rust-cli/docs/CloudGamesCreateServiceTokenResponse.md @@ -1,10 +1,10 @@ -# ServersDockerHostRouting +# CloudGamesCreateServiceTokenResponse ## Properties Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**null** | Option<[**serde_json::Value**](.md)> | | +**token** | **String** | A JSON Web Token. | [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/sdks/full/rust-cli/docs/CloudGamesTokensApi.md b/sdks/full/rust-cli/docs/CloudGamesTokensApi.md index c0ee6276f..8c64a9865 100644 --- a/sdks/full/rust-cli/docs/CloudGamesTokensApi.md +++ b/sdks/full/rust-cli/docs/CloudGamesTokensApi.md @@ -5,6 +5,7 @@ All URIs are relative to *https://api.rivet.gg* Method | HTTP request | Description ------------- | ------------- | ------------- [**cloud_games_tokens_create_cloud_token**](CloudGamesTokensApi.md#cloud_games_tokens_create_cloud_token) | **POST** /cloud/games/{game_id}/tokens/cloud | +[**cloud_games_tokens_create_service_token**](CloudGamesTokensApi.md#cloud_games_tokens_create_service_token) | **POST** /cloud/games/{game_id}/tokens/service | @@ -37,3 +38,33 @@ Name | Type | Description | Required | Notes [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +## cloud_games_tokens_create_service_token + +> crate::models::CloudGamesCreateCloudTokenResponse cloud_games_tokens_create_service_token(game_id) + + +Creates a new game service token. + +### Parameters + + +Name | Type | Description | Required | Notes +------------- | ------------- | ------------- | ------------- | ------------- +**game_id** | **uuid::Uuid** | | [required] | + +### Return type + +[**crate::models::CloudGamesCreateCloudTokenResponse**](CloudGamesCreateCloudTokenResponse.md) + +### Authorization + +[BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/sdks/full/rust-cli/docs/ServersCreateServerRequest.md b/sdks/full/rust-cli/docs/ServersCreateServerRequest.md new file mode 100644 index 000000000..d47c5be94 --- /dev/null +++ b/sdks/full/rust-cli/docs/ServersCreateServerRequest.md @@ -0,0 +1,15 @@ +# ServersCreateServerRequest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**datacenter** | **String** | The name ID of the datacenter | +**kill_timeout** | Option<**i64**> | The duration to wait for in milliseconds before killing the server. This should be set to a safe default, and can be overridden during a DELETE request if needed. | [optional] +**metadata** | Option<[**serde_json::Value**](.md)> | | +**resources** | [**crate::models::ServersResources**](ServersResources.md) | | +**runtime** | [**crate::models::ServersRuntime**](ServersRuntime.md) | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/sdks/full/rust/docs/ServersServersCreateResponse.md b/sdks/full/rust-cli/docs/ServersCreateServerResponse.md similarity index 91% rename from sdks/full/rust/docs/ServersServersCreateResponse.md rename to sdks/full/rust-cli/docs/ServersCreateServerResponse.md index 9d7ecbe33..29bae37bf 100644 --- a/sdks/full/rust/docs/ServersServersCreateResponse.md +++ b/sdks/full/rust-cli/docs/ServersCreateServerResponse.md @@ -1,4 +1,4 @@ -# ServersServersCreateResponse +# ServersCreateServerResponse ## Properties diff --git a/sdks/full/rust/docs/ServersDockerHostRouting.md b/sdks/full/rust-cli/docs/ServersDestroyServerResponse.md similarity index 76% rename from sdks/full/rust/docs/ServersDockerHostRouting.md rename to sdks/full/rust-cli/docs/ServersDestroyServerResponse.md index 54c03a90a..0cf193ed7 100644 --- a/sdks/full/rust/docs/ServersDockerHostRouting.md +++ b/sdks/full/rust-cli/docs/ServersDestroyServerResponse.md @@ -1,10 +1,10 @@ -# ServersDockerHostRouting +# ServersDestroyServerResponse ## Properties Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**null** | Option<[**serde_json::Value**](.md)> | | +**server_id** | [**uuid::Uuid**](uuid::Uuid.md) | | [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/sdks/full/rust-cli/docs/ServersDockerGameGuardRouting.md b/sdks/full/rust-cli/docs/ServersDockerGameGuardRouting.md new file mode 100644 index 000000000..b8fd80314 --- /dev/null +++ b/sdks/full/rust-cli/docs/ServersDockerGameGuardRouting.md @@ -0,0 +1,11 @@ +# ServersDockerGameGuardRouting + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**protocol** | Option<[**crate::models::ServersGameGuardProtocol**](ServersGameGuardProtocol.md)> | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/sdks/full/rust-cli/docs/ServersDockerNetwork.md b/sdks/full/rust-cli/docs/ServersDockerNetwork.md index d49da5124..e46c1756e 100644 --- a/sdks/full/rust-cli/docs/ServersDockerNetwork.md +++ b/sdks/full/rust-cli/docs/ServersDockerNetwork.md @@ -4,7 +4,7 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**mode** | [**crate::models::ServersDockerNetworkMode**](ServersDockerNetworkMode.md) | | +**mode** | Option<[**crate::models::ServersDockerNetworkMode**](ServersDockerNetworkMode.md)> | | [optional] **ports** | [**::std::collections::HashMap**](ServersDockerPort.md) | | [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/sdks/full/rust-cli/docs/ServersDockerPortRouting.md b/sdks/full/rust-cli/docs/ServersDockerPortRouting.md index c9573a2dc..6e17d8970 100644 --- a/sdks/full/rust-cli/docs/ServersDockerPortRouting.md +++ b/sdks/full/rust-cli/docs/ServersDockerPortRouting.md @@ -4,8 +4,8 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**game_guard** | Option<[**crate::models::ServersGameGuardProtocol**](ServersGameGuardProtocol.md)> | | [optional] -**host** | Option<[**crate::models::ServersDockerHostRouting**](ServersDockerHostRouting.md)> | | [optional] +**game_guard** | Option<[**crate::models::ServersDockerGameGuardRouting**](ServersDockerGameGuardRouting.md)> | | [optional] +**host** | Option<[**serde_json::Value**](.md)> | | [optional] [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/sdks/full/rust-cli/docs/ServersDockerRuntime.md b/sdks/full/rust-cli/docs/ServersDockerRuntime.md index 2d416c64c..5bb34818a 100644 --- a/sdks/full/rust-cli/docs/ServersDockerRuntime.md +++ b/sdks/full/rust-cli/docs/ServersDockerRuntime.md @@ -4,9 +4,9 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**args** | **Vec** | | -**environment** | **::std::collections::HashMap** | | -**image_id** | **String** | | +**args** | Option<**Vec**> | | [optional] +**environment** | Option<**::std::collections::HashMap**> | | [optional] +**image_id** | [**uuid::Uuid**](uuid::Uuid.md) | | **network** | [**crate::models::ServersDockerNetwork**](ServersDockerNetwork.md) | | [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/sdks/full/rust-cli/docs/ServersImagesApi.md b/sdks/full/rust-cli/docs/ServersImagesApi.md deleted file mode 100644 index 48e368a0b..000000000 --- a/sdks/full/rust-cli/docs/ServersImagesApi.md +++ /dev/null @@ -1,39 +0,0 @@ -# \ServersImagesApi - -All URIs are relative to *https://api.rivet.gg* - -Method | HTTP request | Description -------------- | ------------- | ------------- -[**servers_images_create**](ServersImagesApi.md#servers_images_create) | **POST** /servers/docker | - - - -## servers_images_create - -> servers_images_create(servers_images_create_request) - - -Create a new docker image. - -### Parameters - - -Name | Type | Description | Required | Notes -------------- | ------------- | ------------- | ------------- | ------------- -**servers_images_create_request** | [**ServersImagesCreateRequest**](ServersImagesCreateRequest.md) | | [required] | - -### Return type - - (empty response body) - -### Authorization - -[BearerAuth](../README.md#BearerAuth) - -### HTTP request headers - -- **Content-Type**: application/json -- **Accept**: application/json - -[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - diff --git a/sdks/full/rust-cli/docs/ServersResources.md b/sdks/full/rust-cli/docs/ServersResources.md new file mode 100644 index 000000000..3b3f9d688 --- /dev/null +++ b/sdks/full/rust-cli/docs/ServersResources.md @@ -0,0 +1,12 @@ +# ServersResources + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**cpu** | **i32** | The number of CPU cores in millicores, or 1/1000 of a core. For example, 1/8 of a core would be 125 millicores, and 1 core would be 1000 millicores. | +**memory** | **i32** | The amount of memory in megabytes | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/sdks/full/rust-cli/docs/ServersServer.md b/sdks/full/rust-cli/docs/ServersServer.md index 81a703dd8..8327f7167 100644 --- a/sdks/full/rust-cli/docs/ServersServer.md +++ b/sdks/full/rust-cli/docs/ServersServer.md @@ -4,7 +4,16 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**null** | Option<[**serde_json::Value**](.md)> | | +**cluster_id** | [**uuid::Uuid**](uuid::Uuid.md) | | +**create_ts** | **i64** | | +**datacenter_id** | [**uuid::Uuid**](uuid::Uuid.md) | | +**destroy_ts** | Option<**i64**> | | [optional] +**game_id** | [**uuid::Uuid**](uuid::Uuid.md) | | +**kill_timeout** | Option<**i64**> | The duration to wait for in milliseconds before killing the server. This should be set to a safe default, and can be overridden during a DELETE request if needed. | [optional] +**metadata** | Option<[**serde_json::Value**](.md)> | | +**resources** | [**crate::models::ServersResources**](ServersResources.md) | | +**runtime** | [**crate::models::ServersRuntime**](ServersRuntime.md) | | +**server_id** | [**uuid::Uuid**](uuid::Uuid.md) | | [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/sdks/full/rust-cli/docs/ServersServersApi.md b/sdks/full/rust-cli/docs/ServersServersApi.md index 37d90ce7f..216b1035c 100644 --- a/sdks/full/rust-cli/docs/ServersServersApi.md +++ b/sdks/full/rust-cli/docs/ServersServersApi.md @@ -11,7 +11,7 @@ Method | HTTP request | Description ## servers_servers_create -> crate::models::ServersServersCreateResponse servers_servers_create(servers_servers_create_request) +> crate::models::ServersCreateServerResponse servers_servers_create(servers_create_server_request) Create a new dynamic server. @@ -21,11 +21,11 @@ Create a new dynamic server. Name | Type | Description | Required | Notes ------------- | ------------- | ------------- | ------------- | ------------- -**servers_servers_create_request** | [**ServersServersCreateRequest**](ServersServersCreateRequest.md) | | [required] | +**servers_create_server_request** | [**ServersCreateServerRequest**](ServersCreateServerRequest.md) | | [required] | ### Return type -[**crate::models::ServersServersCreateResponse**](ServersServersCreateResponse.md) +[**crate::models::ServersCreateServerResponse**](ServersCreateServerResponse.md) ### Authorization @@ -41,7 +41,7 @@ Name | Type | Description | Required | Notes ## servers_servers_destroy -> servers_servers_destroy(server_id, servers_servers_destroy_request) +> crate::models::ServersDestroyServerResponse servers_servers_destroy(server_id, override_kill_timeout) Destroy a dynamic server. @@ -52,11 +52,11 @@ Destroy a dynamic server. Name | Type | Description | Required | Notes ------------- | ------------- | ------------- | ------------- | ------------- **server_id** | **uuid::Uuid** | The id of the server to destroy | [required] | -**servers_servers_destroy_request** | [**ServersServersDestroyRequest**](ServersServersDestroyRequest.md) | | [required] | +**override_kill_timeout** | Option<**i64**> | The duration to wait for in milliseconds before killing the server. This should be used to override the default kill timeout if a faster time is needed, say for ignoring a graceful shutdown. | | ### Return type - (empty response body) +[**crate::models::ServersDestroyServerResponse**](ServersDestroyServerResponse.md) ### Authorization @@ -64,7 +64,7 @@ Name | Type | Description | Required | Notes ### HTTP request headers -- **Content-Type**: application/json +- **Content-Type**: Not defined - **Accept**: application/json [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) diff --git a/sdks/full/rust-cli/docs/ServersServersCreateRequest.md b/sdks/full/rust-cli/docs/ServersServersCreateRequest.md deleted file mode 100644 index 784335374..000000000 --- a/sdks/full/rust-cli/docs/ServersServersCreateRequest.md +++ /dev/null @@ -1,15 +0,0 @@ -# ServersServersCreateRequest - -## Properties - -Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- -**cluster** | **String** | The name id of the cluster | -**datacenter** | **String** | The name id of the datacenter | -**kill_timeout** | **i32** | | -**metadata** | [**::std::collections::HashMap**](serde_json::Value.md) | | -**runtime** | [**crate::models::ServersRuntime**](ServersRuntime.md) | | - -[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) - - diff --git a/sdks/full/rust-cli/src/apis/cloud_games_tokens_api.rs b/sdks/full/rust-cli/src/apis/cloud_games_tokens_api.rs index 42318b546..5541d0582 100644 --- a/sdks/full/rust-cli/src/apis/cloud_games_tokens_api.rs +++ b/sdks/full/rust-cli/src/apis/cloud_games_tokens_api.rs @@ -28,6 +28,19 @@ pub enum CloudGamesTokensCreateCloudTokenError { UnknownValue(serde_json::Value), } +/// struct for typed errors of method [`cloud_games_tokens_create_service_token`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum CloudGamesTokensCreateServiceTokenError { + Status400(crate::models::ErrorBody), + Status403(crate::models::ErrorBody), + Status404(crate::models::ErrorBody), + Status408(crate::models::ErrorBody), + Status429(crate::models::ErrorBody), + Status500(crate::models::ErrorBody), + UnknownValue(serde_json::Value), +} + /// Creates a new game cloud token. pub async fn cloud_games_tokens_create_cloud_token(configuration: &configuration::Configuration, game_id: &str) -> Result> { @@ -60,3 +73,34 @@ pub async fn cloud_games_tokens_create_cloud_token(configuration: &configuration } } +/// Creates a new game service token. +pub async fn cloud_games_tokens_create_service_token(configuration: &configuration::Configuration, game_id: &str) -> Result> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!("{}/cloud/games/{game_id}/tokens/service", local_var_configuration.base_path, game_id=crate::apis::urlencode(game_id)); + let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + serde_json::from_str(&local_var_content).map_err(Error::from) + } else { + let local_var_entity: Option = serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity }; + Err(Error::ResponseError(local_var_error)) + } +} + diff --git a/sdks/full/rust-cli/src/apis/mod.rs b/sdks/full/rust-cli/src/apis/mod.rs index ce7fb0fae..3afd18ee7 100644 --- a/sdks/full/rust-cli/src/apis/mod.rs +++ b/sdks/full/rust-cli/src/apis/mod.rs @@ -129,7 +129,6 @@ pub mod matchmaker_regions_api; pub mod portal_games_api; pub mod provision_datacenters_api; pub mod provision_servers_api; -pub mod servers_images_api; pub mod servers_servers_api; pub mod configuration; diff --git a/sdks/full/rust-cli/src/apis/servers_images_api.rs b/sdks/full/rust-cli/src/apis/servers_images_api.rs deleted file mode 100644 index fad00d9a2..000000000 --- a/sdks/full/rust-cli/src/apis/servers_images_api.rs +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Rivet API - * - * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - * - * The version of the OpenAPI document: 0.0.1 - * - * Generated by: https://openapi-generator.tech - */ - - -use reqwest; - -use crate::apis::ResponseContent; -use super::{Error, configuration}; - - -/// struct for typed errors of method [`servers_images_create`] -#[derive(Debug, Clone, Serialize, Deserialize)] -#[serde(untagged)] -pub enum ServersImagesCreateError { - Status400(crate::models::ErrorBody), - Status403(crate::models::ErrorBody), - Status404(crate::models::ErrorBody), - Status408(crate::models::ErrorBody), - Status429(crate::models::ErrorBody), - Status500(crate::models::ErrorBody), - UnknownValue(serde_json::Value), -} - - -/// Create a new docker image. -pub async fn servers_images_create(configuration: &configuration::Configuration, servers_images_create_request: crate::models::ServersImagesCreateRequest) -> Result<(), Error> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/servers/docker", local_var_configuration.base_path); - let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); - - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - local_var_req_builder = local_var_req_builder.json(&servers_images_create_request); - - let local_var_req = local_var_req_builder.build()?; - let local_var_resp = local_var_client.execute(local_var_req).await?; - - let local_var_status = local_var_resp.status(); - let local_var_content = local_var_resp.text().await?; - - if !local_var_status.is_client_error() && !local_var_status.is_server_error() { - Ok(()) - } else { - let local_var_entity: Option = serde_json::from_str(&local_var_content).ok(); - let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity }; - Err(Error::ResponseError(local_var_error)) - } -} - diff --git a/sdks/full/rust-cli/src/apis/servers_servers_api.rs b/sdks/full/rust-cli/src/apis/servers_servers_api.rs index e6f9abd50..48f38ff72 100644 --- a/sdks/full/rust-cli/src/apis/servers_servers_api.rs +++ b/sdks/full/rust-cli/src/apis/servers_servers_api.rs @@ -43,7 +43,7 @@ pub enum ServersServersDestroyError { /// Create a new dynamic server. -pub async fn servers_servers_create(configuration: &configuration::Configuration, servers_servers_create_request: crate::models::ServersServersCreateRequest) -> Result> { +pub async fn servers_servers_create(configuration: &configuration::Configuration, servers_create_server_request: crate::models::ServersCreateServerRequest) -> Result> { let local_var_configuration = configuration; let local_var_client = &local_var_configuration.client; @@ -57,7 +57,7 @@ pub async fn servers_servers_create(configuration: &configuration::Configuration if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); }; - local_var_req_builder = local_var_req_builder.json(&servers_servers_create_request); + local_var_req_builder = local_var_req_builder.json(&servers_create_server_request); let local_var_req = local_var_req_builder.build()?; let local_var_resp = local_var_client.execute(local_var_req).await?; @@ -75,7 +75,7 @@ pub async fn servers_servers_create(configuration: &configuration::Configuration } /// Destroy a dynamic server. -pub async fn servers_servers_destroy(configuration: &configuration::Configuration, server_id: &str, servers_servers_destroy_request: crate::models::ServersServersDestroyRequest) -> Result<(), Error> { +pub async fn servers_servers_destroy(configuration: &configuration::Configuration, server_id: &str, override_kill_timeout: Option) -> Result> { let local_var_configuration = configuration; let local_var_client = &local_var_configuration.client; @@ -83,13 +83,15 @@ pub async fn servers_servers_destroy(configuration: &configuration::Configuratio let local_var_uri_str = format!("{}/servers/servers/{server_id}", local_var_configuration.base_path, server_id=crate::apis::urlencode(server_id)); let mut local_var_req_builder = local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str()); + if let Some(ref local_var_str) = override_kill_timeout { + local_var_req_builder = local_var_req_builder.query(&[("override_kill_timeout", &local_var_str.to_string())]); + } if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); } if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); }; - local_var_req_builder = local_var_req_builder.json(&servers_servers_destroy_request); let local_var_req = local_var_req_builder.build()?; let local_var_resp = local_var_client.execute(local_var_req).await?; @@ -98,7 +100,7 @@ pub async fn servers_servers_destroy(configuration: &configuration::Configuratio let local_var_content = local_var_resp.text().await?; if !local_var_status.is_client_error() && !local_var_status.is_server_error() { - Ok(()) + serde_json::from_str(&local_var_content).map_err(Error::from) } else { let local_var_entity: Option = serde_json::from_str(&local_var_content).ok(); let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity }; diff --git a/sdks/full/rust/src/models/servers_docker_host_routing.rs b/sdks/full/rust-cli/src/models/cloud_games_create_service_token_response.rs similarity index 51% rename from sdks/full/rust/src/models/servers_docker_host_routing.rs rename to sdks/full/rust-cli/src/models/cloud_games_create_service_token_response.rs index 2fc814f8f..7221b7131 100644 --- a/sdks/full/rust/src/models/servers_docker_host_routing.rs +++ b/sdks/full/rust-cli/src/models/cloud_games_create_service_token_response.rs @@ -12,15 +12,16 @@ #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] -pub struct ServersDockerHostRouting { - #[serde(rename = "null", deserialize_with = "Option::deserialize")] - pub null: Option, +pub struct CloudGamesCreateServiceTokenResponse { + /// A JSON Web Token. + #[serde(rename = "token")] + pub token: String, } -impl ServersDockerHostRouting { - pub fn new(null: Option) -> ServersDockerHostRouting { - ServersDockerHostRouting { - null, +impl CloudGamesCreateServiceTokenResponse { + pub fn new(token: String) -> CloudGamesCreateServiceTokenResponse { + CloudGamesCreateServiceTokenResponse { + token, } } } diff --git a/sdks/full/rust-cli/src/models/mod.rs b/sdks/full/rust-cli/src/models/mod.rs index 48448576e..cd6c4836c 100644 --- a/sdks/full/rust-cli/src/models/mod.rs +++ b/sdks/full/rust-cli/src/models/mod.rs @@ -132,6 +132,8 @@ pub mod cloud_games_create_game_version_request; pub use self::cloud_games_create_game_version_request::CloudGamesCreateGameVersionRequest; pub mod cloud_games_create_game_version_response; pub use self::cloud_games_create_game_version_response::CloudGamesCreateGameVersionResponse; +pub mod cloud_games_create_service_token_response; +pub use self::cloud_games_create_service_token_response::CloudGamesCreateServiceTokenResponse; pub mod cloud_games_delete_matchmaker_lobby_response; pub use self::cloud_games_delete_matchmaker_lobby_response::CloudGamesDeleteMatchmakerLobbyResponse; pub mod cloud_games_export_lobby_logs_request; @@ -604,8 +606,14 @@ pub mod provision_datacenters_get_tls_response; pub use self::provision_datacenters_get_tls_response::ProvisionDatacentersGetTlsResponse; pub mod provision_servers_get_info_response; pub use self::provision_servers_get_info_response::ProvisionServersGetInfoResponse; -pub mod servers_docker_host_routing; -pub use self::servers_docker_host_routing::ServersDockerHostRouting; +pub mod servers_create_server_request; +pub use self::servers_create_server_request::ServersCreateServerRequest; +pub mod servers_create_server_response; +pub use self::servers_create_server_response::ServersCreateServerResponse; +pub mod servers_destroy_server_response; +pub use self::servers_destroy_server_response::ServersDestroyServerResponse; +pub mod servers_docker_game_guard_routing; +pub use self::servers_docker_game_guard_routing::ServersDockerGameGuardRouting; pub mod servers_docker_network; pub use self::servers_docker_network::ServersDockerNetwork; pub mod servers_docker_network_mode; @@ -618,18 +626,12 @@ pub mod servers_docker_runtime; pub use self::servers_docker_runtime::ServersDockerRuntime; pub mod servers_game_guard_protocol; pub use self::servers_game_guard_protocol::ServersGameGuardProtocol; -pub mod servers_images_create_request; -pub use self::servers_images_create_request::ServersImagesCreateRequest; +pub mod servers_resources; +pub use self::servers_resources::ServersResources; pub mod servers_runtime; pub use self::servers_runtime::ServersRuntime; pub mod servers_server; pub use self::servers_server::ServersServer; -pub mod servers_servers_create_request; -pub use self::servers_servers_create_request::ServersServersCreateRequest; -pub mod servers_servers_create_response; -pub use self::servers_servers_create_response::ServersServersCreateResponse; -pub mod servers_servers_destroy_request; -pub use self::servers_servers_destroy_request::ServersServersDestroyRequest; pub mod upload_prepare_file; pub use self::upload_prepare_file::UploadPrepareFile; pub mod upload_presigned_request; diff --git a/sdks/full/rust-cli/src/models/servers_create_server_request.rs b/sdks/full/rust-cli/src/models/servers_create_server_request.rs new file mode 100644 index 000000000..a538478cd --- /dev/null +++ b/sdks/full/rust-cli/src/models/servers_create_server_request.rs @@ -0,0 +1,42 @@ +/* + * Rivet API + * + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 0.0.1 + * + * Generated by: https://openapi-generator.tech + */ + + + + +#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] +pub struct ServersCreateServerRequest { + /// The name ID of the datacenter + #[serde(rename = "datacenter")] + pub datacenter: String, + /// The duration to wait for in milliseconds before killing the server. This should be set to a safe default, and can be overridden during a DELETE request if needed. + #[serde(rename = "kill_timeout", skip_serializing_if = "Option::is_none")] + pub kill_timeout: Option, + #[serde(rename = "metadata", deserialize_with = "Option::deserialize")] + pub metadata: Option, + #[serde(rename = "resources")] + pub resources: Box, + #[serde(rename = "runtime")] + pub runtime: Box, +} + +impl ServersCreateServerRequest { + pub fn new(datacenter: String, metadata: Option, resources: crate::models::ServersResources, runtime: crate::models::ServersRuntime) -> ServersCreateServerRequest { + ServersCreateServerRequest { + datacenter, + kill_timeout: None, + metadata, + resources: Box::new(resources), + runtime: Box::new(runtime), + } + } +} + + diff --git a/sdks/full/rust/src/models/servers_servers_create_response.rs b/sdks/full/rust-cli/src/models/servers_create_server_response.rs similarity index 68% rename from sdks/full/rust/src/models/servers_servers_create_response.rs rename to sdks/full/rust-cli/src/models/servers_create_server_response.rs index 8058d1add..3c32cbd89 100644 --- a/sdks/full/rust/src/models/servers_servers_create_response.rs +++ b/sdks/full/rust-cli/src/models/servers_create_server_response.rs @@ -12,14 +12,14 @@ #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] -pub struct ServersServersCreateResponse { +pub struct ServersCreateServerResponse { #[serde(rename = "server")] pub server: Box, } -impl ServersServersCreateResponse { - pub fn new(server: crate::models::ServersServer) -> ServersServersCreateResponse { - ServersServersCreateResponse { +impl ServersCreateServerResponse { + pub fn new(server: crate::models::ServersServer) -> ServersCreateServerResponse { + ServersCreateServerResponse { server: Box::new(server), } } diff --git a/sdks/full/rust-cli/src/models/servers_servers_destroy_request.rs b/sdks/full/rust-cli/src/models/servers_destroy_server_response.rs similarity index 51% rename from sdks/full/rust-cli/src/models/servers_servers_destroy_request.rs rename to sdks/full/rust-cli/src/models/servers_destroy_server_response.rs index 701ddcbe1..f993e53a9 100644 --- a/sdks/full/rust-cli/src/models/servers_servers_destroy_request.rs +++ b/sdks/full/rust-cli/src/models/servers_destroy_server_response.rs @@ -12,15 +12,15 @@ #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] -pub struct ServersServersDestroyRequest { - #[serde(rename = "kill_timeout", skip_serializing_if = "Option::is_none")] - pub kill_timeout: Option, +pub struct ServersDestroyServerResponse { + #[serde(rename = "server_id")] + pub server_id: uuid::Uuid, } -impl ServersServersDestroyRequest { - pub fn new() -> ServersServersDestroyRequest { - ServersServersDestroyRequest { - kill_timeout: None, +impl ServersDestroyServerResponse { + pub fn new(server_id: uuid::Uuid) -> ServersDestroyServerResponse { + ServersDestroyServerResponse { + server_id, } } } diff --git a/sdks/full/rust-cli/src/models/servers_docker_game_guard_routing.rs b/sdks/full/rust-cli/src/models/servers_docker_game_guard_routing.rs new file mode 100644 index 000000000..c076bcf12 --- /dev/null +++ b/sdks/full/rust-cli/src/models/servers_docker_game_guard_routing.rs @@ -0,0 +1,28 @@ +/* + * Rivet API + * + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 0.0.1 + * + * Generated by: https://openapi-generator.tech + */ + + + + +#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] +pub struct ServersDockerGameGuardRouting { + #[serde(rename = "protocol", skip_serializing_if = "Option::is_none")] + pub protocol: Option, +} + +impl ServersDockerGameGuardRouting { + pub fn new() -> ServersDockerGameGuardRouting { + ServersDockerGameGuardRouting { + protocol: None, + } + } +} + + diff --git a/sdks/full/rust-cli/src/models/servers_docker_network.rs b/sdks/full/rust-cli/src/models/servers_docker_network.rs index ff7270d59..1350f9a9f 100644 --- a/sdks/full/rust-cli/src/models/servers_docker_network.rs +++ b/sdks/full/rust-cli/src/models/servers_docker_network.rs @@ -13,16 +13,16 @@ #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct ServersDockerNetwork { - #[serde(rename = "mode")] - pub mode: crate::models::ServersDockerNetworkMode, + #[serde(rename = "mode", skip_serializing_if = "Option::is_none")] + pub mode: Option, #[serde(rename = "ports")] pub ports: ::std::collections::HashMap, } impl ServersDockerNetwork { - pub fn new(mode: crate::models::ServersDockerNetworkMode, ports: ::std::collections::HashMap) -> ServersDockerNetwork { + pub fn new(ports: ::std::collections::HashMap) -> ServersDockerNetwork { ServersDockerNetwork { - mode, + mode: None, ports, } } diff --git a/sdks/full/rust-cli/src/models/servers_docker_network_mode.rs b/sdks/full/rust-cli/src/models/servers_docker_network_mode.rs index 8ff224904..b9d6ea916 100644 --- a/sdks/full/rust-cli/src/models/servers_docker_network_mode.rs +++ b/sdks/full/rust-cli/src/models/servers_docker_network_mode.rs @@ -12,25 +12,25 @@ /// #[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] pub enum ServersDockerNetworkMode { - #[serde(rename = "host")] - Host, #[serde(rename = "bridge")] Bridge, + #[serde(rename = "host")] + Host, } impl ToString for ServersDockerNetworkMode { fn to_string(&self) -> String { match self { - Self::Host => String::from("host"), Self::Bridge => String::from("bridge"), + Self::Host => String::from("host"), } } } impl Default for ServersDockerNetworkMode { fn default() -> ServersDockerNetworkMode { - Self::Host + Self::Bridge } } diff --git a/sdks/full/rust-cli/src/models/servers_docker_port_routing.rs b/sdks/full/rust-cli/src/models/servers_docker_port_routing.rs index 73b15a0fe..bb37ecb42 100644 --- a/sdks/full/rust-cli/src/models/servers_docker_port_routing.rs +++ b/sdks/full/rust-cli/src/models/servers_docker_port_routing.rs @@ -14,9 +14,9 @@ #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct ServersDockerPortRouting { #[serde(rename = "game_guard", skip_serializing_if = "Option::is_none")] - pub game_guard: Option, + pub game_guard: Option>, #[serde(rename = "host", skip_serializing_if = "Option::is_none")] - pub host: Option>, + pub host: Option, } impl ServersDockerPortRouting { diff --git a/sdks/full/rust-cli/src/models/servers_docker_runtime.rs b/sdks/full/rust-cli/src/models/servers_docker_runtime.rs index 7c6f2ed79..57c4f9013 100644 --- a/sdks/full/rust-cli/src/models/servers_docker_runtime.rs +++ b/sdks/full/rust-cli/src/models/servers_docker_runtime.rs @@ -13,21 +13,21 @@ #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct ServersDockerRuntime { - #[serde(rename = "args")] - pub args: Vec, - #[serde(rename = "environment")] - pub environment: ::std::collections::HashMap, + #[serde(rename = "args", skip_serializing_if = "Option::is_none")] + pub args: Option>, + #[serde(rename = "environment", skip_serializing_if = "Option::is_none")] + pub environment: Option<::std::collections::HashMap>, #[serde(rename = "image_id")] - pub image_id: String, + pub image_id: uuid::Uuid, #[serde(rename = "network")] pub network: Box, } impl ServersDockerRuntime { - pub fn new(args: Vec, environment: ::std::collections::HashMap, image_id: String, network: crate::models::ServersDockerNetwork) -> ServersDockerRuntime { + pub fn new(image_id: uuid::Uuid, network: crate::models::ServersDockerNetwork) -> ServersDockerRuntime { ServersDockerRuntime { - args, - environment, + args: None, + environment: None, image_id, network: Box::new(network), } diff --git a/sdks/full/rust-cli/src/models/servers_images_create_request.rs b/sdks/full/rust-cli/src/models/servers_images_create_request.rs deleted file mode 100644 index 2156f9831..000000000 --- a/sdks/full/rust-cli/src/models/servers_images_create_request.rs +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Rivet API - * - * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - * - * The version of the OpenAPI document: 0.0.1 - * - * Generated by: https://openapi-generator.tech - */ - - - - -#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] -pub struct ServersImagesCreateRequest { - #[serde(rename = "null", deserialize_with = "Option::deserialize")] - pub null: Option, -} - -impl ServersImagesCreateRequest { - pub fn new(null: Option) -> ServersImagesCreateRequest { - ServersImagesCreateRequest { - null, - } - } -} - - diff --git a/sdks/full/rust-cli/src/models/servers_resources.rs b/sdks/full/rust-cli/src/models/servers_resources.rs new file mode 100644 index 000000000..d29a3cb0a --- /dev/null +++ b/sdks/full/rust-cli/src/models/servers_resources.rs @@ -0,0 +1,33 @@ +/* + * Rivet API + * + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 0.0.1 + * + * Generated by: https://openapi-generator.tech + */ + + + + +#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] +pub struct ServersResources { + /// The number of CPU cores in millicores, or 1/1000 of a core. For example, 1/8 of a core would be 125 millicores, and 1 core would be 1000 millicores. + #[serde(rename = "cpu")] + pub cpu: i32, + /// The amount of memory in megabytes + #[serde(rename = "memory")] + pub memory: i32, +} + +impl ServersResources { + pub fn new(cpu: i32, memory: i32) -> ServersResources { + ServersResources { + cpu, + memory, + } + } +} + + diff --git a/sdks/full/rust-cli/src/models/servers_server.rs b/sdks/full/rust-cli/src/models/servers_server.rs index 30db9313e..966e6a837 100644 --- a/sdks/full/rust-cli/src/models/servers_server.rs +++ b/sdks/full/rust-cli/src/models/servers_server.rs @@ -13,14 +13,42 @@ #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct ServersServer { - #[serde(rename = "null", deserialize_with = "Option::deserialize")] - pub null: Option, + #[serde(rename = "cluster_id")] + pub cluster_id: uuid::Uuid, + #[serde(rename = "create_ts")] + pub create_ts: i64, + #[serde(rename = "datacenter_id")] + pub datacenter_id: uuid::Uuid, + #[serde(rename = "destroy_ts", skip_serializing_if = "Option::is_none")] + pub destroy_ts: Option, + #[serde(rename = "game_id")] + pub game_id: uuid::Uuid, + /// The duration to wait for in milliseconds before killing the server. This should be set to a safe default, and can be overridden during a DELETE request if needed. + #[serde(rename = "kill_timeout", skip_serializing_if = "Option::is_none")] + pub kill_timeout: Option, + #[serde(rename = "metadata", deserialize_with = "Option::deserialize")] + pub metadata: Option, + #[serde(rename = "resources")] + pub resources: Box, + #[serde(rename = "runtime")] + pub runtime: Box, + #[serde(rename = "server_id")] + pub server_id: uuid::Uuid, } impl ServersServer { - pub fn new(null: Option) -> ServersServer { + pub fn new(cluster_id: uuid::Uuid, create_ts: i64, datacenter_id: uuid::Uuid, game_id: uuid::Uuid, metadata: Option, resources: crate::models::ServersResources, runtime: crate::models::ServersRuntime, server_id: uuid::Uuid) -> ServersServer { ServersServer { - null, + cluster_id, + create_ts, + datacenter_id, + destroy_ts: None, + game_id, + kill_timeout: None, + metadata, + resources: Box::new(resources), + runtime: Box::new(runtime), + server_id, } } } diff --git a/sdks/full/rust-cli/src/models/servers_servers_create_request.rs b/sdks/full/rust-cli/src/models/servers_servers_create_request.rs deleted file mode 100644 index 6912a5a1e..000000000 --- a/sdks/full/rust-cli/src/models/servers_servers_create_request.rs +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Rivet API - * - * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - * - * The version of the OpenAPI document: 0.0.1 - * - * Generated by: https://openapi-generator.tech - */ - - - - -#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] -pub struct ServersServersCreateRequest { - /// The name id of the cluster - #[serde(rename = "cluster")] - pub cluster: String, - /// The name id of the datacenter - #[serde(rename = "datacenter")] - pub datacenter: String, - #[serde(rename = "kill_timeout")] - pub kill_timeout: i32, - #[serde(rename = "metadata")] - pub metadata: ::std::collections::HashMap, - #[serde(rename = "runtime")] - pub runtime: Box, -} - -impl ServersServersCreateRequest { - pub fn new(cluster: String, datacenter: String, kill_timeout: i32, metadata: ::std::collections::HashMap, runtime: crate::models::ServersRuntime) -> ServersServersCreateRequest { - ServersServersCreateRequest { - cluster, - datacenter, - kill_timeout, - metadata, - runtime: Box::new(runtime), - } - } -} - - diff --git a/sdks/full/rust/.openapi-generator/FILES b/sdks/full/rust/.openapi-generator/FILES index 7e5490b50..904328249 100644 --- a/sdks/full/rust/.openapi-generator/FILES +++ b/sdks/full/rust/.openapi-generator/FILES @@ -84,6 +84,7 @@ docs/CloudGamesCreateGameRequest.md docs/CloudGamesCreateGameResponse.md docs/CloudGamesCreateGameVersionRequest.md docs/CloudGamesCreateGameVersionResponse.md +docs/CloudGamesCreateServiceTokenResponse.md docs/CloudGamesDeleteMatchmakerLobbyResponse.md docs/CloudGamesExportLobbyLogsRequest.md docs/CloudGamesExportLobbyLogsResponse.md @@ -345,21 +346,20 @@ docs/ProvisionDatacentersApi.md docs/ProvisionDatacentersGetTlsResponse.md docs/ProvisionServersApi.md docs/ProvisionServersGetInfoResponse.md -docs/ServersDockerHostRouting.md +docs/ServersCreateServerRequest.md +docs/ServersCreateServerResponse.md +docs/ServersDestroyServerResponse.md +docs/ServersDockerGameGuardRouting.md docs/ServersDockerNetwork.md docs/ServersDockerNetworkMode.md docs/ServersDockerPort.md docs/ServersDockerPortRouting.md docs/ServersDockerRuntime.md docs/ServersGameGuardProtocol.md -docs/ServersImagesApi.md -docs/ServersImagesCreateRequest.md +docs/ServersResources.md docs/ServersRuntime.md docs/ServersServer.md docs/ServersServersApi.md -docs/ServersServersCreateRequest.md -docs/ServersServersCreateResponse.md -docs/ServersServersDestroyRequest.md docs/UploadPrepareFile.md docs/UploadPresignedRequest.md docs/ValidationError.md @@ -406,7 +406,6 @@ src/apis/mod.rs src/apis/portal_games_api.rs src/apis/provision_datacenters_api.rs src/apis/provision_servers_api.rs -src/apis/servers_images_api.rs src/apis/servers_servers_api.rs src/lib.rs src/models/admin_clusters_build_delivery_method.rs @@ -476,6 +475,7 @@ src/models/cloud_games_create_game_request.rs src/models/cloud_games_create_game_response.rs src/models/cloud_games_create_game_version_request.rs src/models/cloud_games_create_game_version_response.rs +src/models/cloud_games_create_service_token_response.rs src/models/cloud_games_delete_matchmaker_lobby_response.rs src/models/cloud_games_export_lobby_logs_request.rs src/models/cloud_games_export_lobby_logs_response.rs @@ -713,19 +713,19 @@ src/models/portal_notification_register_service.rs src/models/portal_notification_unregister_service.rs src/models/provision_datacenters_get_tls_response.rs src/models/provision_servers_get_info_response.rs -src/models/servers_docker_host_routing.rs +src/models/servers_create_server_request.rs +src/models/servers_create_server_response.rs +src/models/servers_destroy_server_response.rs +src/models/servers_docker_game_guard_routing.rs src/models/servers_docker_network.rs src/models/servers_docker_network_mode.rs src/models/servers_docker_port.rs src/models/servers_docker_port_routing.rs src/models/servers_docker_runtime.rs src/models/servers_game_guard_protocol.rs -src/models/servers_images_create_request.rs +src/models/servers_resources.rs src/models/servers_runtime.rs src/models/servers_server.rs -src/models/servers_servers_create_request.rs -src/models/servers_servers_create_response.rs -src/models/servers_servers_destroy_request.rs src/models/upload_prepare_file.rs src/models/upload_presigned_request.rs src/models/validation_error.rs diff --git a/sdks/full/rust/README.md b/sdks/full/rust/README.md index e18723cad..9cef5338c 100644 --- a/sdks/full/rust/README.md +++ b/sdks/full/rust/README.md @@ -82,6 +82,7 @@ Class | Method | HTTP request | Description *CloudGamesNamespacesLogsApi* | [**cloud_games_namespaces_logs_get_namespace_lobby**](docs/CloudGamesNamespacesLogsApi.md#cloud_games_namespaces_logs_get_namespace_lobby) | **GET** /cloud/games/{game_id}/namespaces/{namespace_id}/logs/lobbies/{lobby_id} | *CloudGamesNamespacesLogsApi* | [**cloud_games_namespaces_logs_list_namespace_lobbies**](docs/CloudGamesNamespacesLogsApi.md#cloud_games_namespaces_logs_list_namespace_lobbies) | **GET** /cloud/games/{game_id}/namespaces/{namespace_id}/logs/lobbies | *CloudGamesTokensApi* | [**cloud_games_tokens_create_cloud_token**](docs/CloudGamesTokensApi.md#cloud_games_tokens_create_cloud_token) | **POST** /cloud/games/{game_id}/tokens/cloud | +*CloudGamesTokensApi* | [**cloud_games_tokens_create_service_token**](docs/CloudGamesTokensApi.md#cloud_games_tokens_create_service_token) | **POST** /cloud/games/{game_id}/tokens/service | *CloudGamesVersionsApi* | [**cloud_games_versions_create_game_version**](docs/CloudGamesVersionsApi.md#cloud_games_versions_create_game_version) | **POST** /cloud/games/{game_id}/versions | *CloudGamesVersionsApi* | [**cloud_games_versions_get_game_version_by_id**](docs/CloudGamesVersionsApi.md#cloud_games_versions_get_game_version_by_id) | **GET** /cloud/games/{game_id}/versions/{version_id} | *CloudGamesVersionsApi* | [**cloud_games_versions_reserve_version_name**](docs/CloudGamesVersionsApi.md#cloud_games_versions_reserve_version_name) | **POST** /cloud/games/{game_id}/versions/reserve-name | @@ -166,7 +167,6 @@ Class | Method | HTTP request | Description *PortalGamesApi* | [**portal_games_get_game_profile**](docs/PortalGamesApi.md#portal_games_get_game_profile) | **GET** /portal/games/{game_name_id}/profile | *ProvisionDatacentersApi* | [**provision_datacenters_get_tls**](docs/ProvisionDatacentersApi.md#provision_datacenters_get_tls) | **GET** /datacenters/{datacenter_id}/tls | *ProvisionServersApi* | [**provision_servers_get_info**](docs/ProvisionServersApi.md#provision_servers_get_info) | **GET** /servers/{ip} | -*ServersImagesApi* | [**servers_images_create**](docs/ServersImagesApi.md#servers_images_create) | **POST** /servers/docker | *ServersServersApi* | [**servers_servers_create**](docs/ServersServersApi.md#servers_servers_create) | **POST** /servers/servers | *ServersServersApi* | [**servers_servers_destroy**](docs/ServersServersApi.md#servers_servers_destroy) | **DELETE** /servers/servers/{server_id} | @@ -240,6 +240,7 @@ Class | Method | HTTP request | Description - [CloudGamesCreateGameResponse](docs/CloudGamesCreateGameResponse.md) - [CloudGamesCreateGameVersionRequest](docs/CloudGamesCreateGameVersionRequest.md) - [CloudGamesCreateGameVersionResponse](docs/CloudGamesCreateGameVersionResponse.md) + - [CloudGamesCreateServiceTokenResponse](docs/CloudGamesCreateServiceTokenResponse.md) - [CloudGamesDeleteMatchmakerLobbyResponse](docs/CloudGamesDeleteMatchmakerLobbyResponse.md) - [CloudGamesExportLobbyLogsRequest](docs/CloudGamesExportLobbyLogsRequest.md) - [CloudGamesExportLobbyLogsResponse](docs/CloudGamesExportLobbyLogsResponse.md) @@ -476,19 +477,19 @@ Class | Method | HTTP request | Description - [PortalNotificationUnregisterService](docs/PortalNotificationUnregisterService.md) - [ProvisionDatacentersGetTlsResponse](docs/ProvisionDatacentersGetTlsResponse.md) - [ProvisionServersGetInfoResponse](docs/ProvisionServersGetInfoResponse.md) - - [ServersDockerHostRouting](docs/ServersDockerHostRouting.md) + - [ServersCreateServerRequest](docs/ServersCreateServerRequest.md) + - [ServersCreateServerResponse](docs/ServersCreateServerResponse.md) + - [ServersDestroyServerResponse](docs/ServersDestroyServerResponse.md) + - [ServersDockerGameGuardRouting](docs/ServersDockerGameGuardRouting.md) - [ServersDockerNetwork](docs/ServersDockerNetwork.md) - [ServersDockerNetworkMode](docs/ServersDockerNetworkMode.md) - [ServersDockerPort](docs/ServersDockerPort.md) - [ServersDockerPortRouting](docs/ServersDockerPortRouting.md) - [ServersDockerRuntime](docs/ServersDockerRuntime.md) - [ServersGameGuardProtocol](docs/ServersGameGuardProtocol.md) - - [ServersImagesCreateRequest](docs/ServersImagesCreateRequest.md) + - [ServersResources](docs/ServersResources.md) - [ServersRuntime](docs/ServersRuntime.md) - [ServersServer](docs/ServersServer.md) - - [ServersServersCreateRequest](docs/ServersServersCreateRequest.md) - - [ServersServersCreateResponse](docs/ServersServersCreateResponse.md) - - [ServersServersDestroyRequest](docs/ServersServersDestroyRequest.md) - [UploadPrepareFile](docs/UploadPrepareFile.md) - [UploadPresignedRequest](docs/UploadPresignedRequest.md) - [ValidationError](docs/ValidationError.md) diff --git a/sdks/full/rust-cli/docs/ServersServersDestroyRequest.md b/sdks/full/rust/docs/CloudGamesCreateServiceTokenResponse.md similarity index 76% rename from sdks/full/rust-cli/docs/ServersServersDestroyRequest.md rename to sdks/full/rust/docs/CloudGamesCreateServiceTokenResponse.md index b56a028cb..c8d021b0f 100644 --- a/sdks/full/rust-cli/docs/ServersServersDestroyRequest.md +++ b/sdks/full/rust/docs/CloudGamesCreateServiceTokenResponse.md @@ -1,10 +1,10 @@ -# ServersServersDestroyRequest +# CloudGamesCreateServiceTokenResponse ## Properties Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**kill_timeout** | Option<**i32**> | | [optional] +**token** | **String** | A JSON Web Token. | [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/sdks/full/rust/docs/CloudGamesTokensApi.md b/sdks/full/rust/docs/CloudGamesTokensApi.md index c0ee6276f..8c64a9865 100644 --- a/sdks/full/rust/docs/CloudGamesTokensApi.md +++ b/sdks/full/rust/docs/CloudGamesTokensApi.md @@ -5,6 +5,7 @@ All URIs are relative to *https://api.rivet.gg* Method | HTTP request | Description ------------- | ------------- | ------------- [**cloud_games_tokens_create_cloud_token**](CloudGamesTokensApi.md#cloud_games_tokens_create_cloud_token) | **POST** /cloud/games/{game_id}/tokens/cloud | +[**cloud_games_tokens_create_service_token**](CloudGamesTokensApi.md#cloud_games_tokens_create_service_token) | **POST** /cloud/games/{game_id}/tokens/service | @@ -37,3 +38,33 @@ Name | Type | Description | Required | Notes [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +## cloud_games_tokens_create_service_token + +> crate::models::CloudGamesCreateCloudTokenResponse cloud_games_tokens_create_service_token(game_id) + + +Creates a new game service token. + +### Parameters + + +Name | Type | Description | Required | Notes +------------- | ------------- | ------------- | ------------- | ------------- +**game_id** | **uuid::Uuid** | | [required] | + +### Return type + +[**crate::models::CloudGamesCreateCloudTokenResponse**](CloudGamesCreateCloudTokenResponse.md) + +### Authorization + +[BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/sdks/full/rust/docs/ServersCreateServerRequest.md b/sdks/full/rust/docs/ServersCreateServerRequest.md new file mode 100644 index 000000000..d47c5be94 --- /dev/null +++ b/sdks/full/rust/docs/ServersCreateServerRequest.md @@ -0,0 +1,15 @@ +# ServersCreateServerRequest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**datacenter** | **String** | The name ID of the datacenter | +**kill_timeout** | Option<**i64**> | The duration to wait for in milliseconds before killing the server. This should be set to a safe default, and can be overridden during a DELETE request if needed. | [optional] +**metadata** | Option<[**serde_json::Value**](.md)> | | +**resources** | [**crate::models::ServersResources**](ServersResources.md) | | +**runtime** | [**crate::models::ServersRuntime**](ServersRuntime.md) | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/sdks/full/rust-cli/docs/ServersServersCreateResponse.md b/sdks/full/rust/docs/ServersCreateServerResponse.md similarity index 91% rename from sdks/full/rust-cli/docs/ServersServersCreateResponse.md rename to sdks/full/rust/docs/ServersCreateServerResponse.md index 9d7ecbe33..29bae37bf 100644 --- a/sdks/full/rust-cli/docs/ServersServersCreateResponse.md +++ b/sdks/full/rust/docs/ServersCreateServerResponse.md @@ -1,4 +1,4 @@ -# ServersServersCreateResponse +# ServersCreateServerResponse ## Properties diff --git a/sdks/full/rust-cli/docs/ServersImagesCreateRequest.md b/sdks/full/rust/docs/ServersDestroyServerResponse.md similarity index 76% rename from sdks/full/rust-cli/docs/ServersImagesCreateRequest.md rename to sdks/full/rust/docs/ServersDestroyServerResponse.md index e7b5744e2..0cf193ed7 100644 --- a/sdks/full/rust-cli/docs/ServersImagesCreateRequest.md +++ b/sdks/full/rust/docs/ServersDestroyServerResponse.md @@ -1,10 +1,10 @@ -# ServersImagesCreateRequest +# ServersDestroyServerResponse ## Properties Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**null** | Option<[**serde_json::Value**](.md)> | | +**server_id** | [**uuid::Uuid**](uuid::Uuid.md) | | [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/sdks/full/rust/docs/ServersDockerGameGuardRouting.md b/sdks/full/rust/docs/ServersDockerGameGuardRouting.md new file mode 100644 index 000000000..b8fd80314 --- /dev/null +++ b/sdks/full/rust/docs/ServersDockerGameGuardRouting.md @@ -0,0 +1,11 @@ +# ServersDockerGameGuardRouting + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**protocol** | Option<[**crate::models::ServersGameGuardProtocol**](ServersGameGuardProtocol.md)> | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/sdks/full/rust/docs/ServersDockerNetwork.md b/sdks/full/rust/docs/ServersDockerNetwork.md index d49da5124..e46c1756e 100644 --- a/sdks/full/rust/docs/ServersDockerNetwork.md +++ b/sdks/full/rust/docs/ServersDockerNetwork.md @@ -4,7 +4,7 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**mode** | [**crate::models::ServersDockerNetworkMode**](ServersDockerNetworkMode.md) | | +**mode** | Option<[**crate::models::ServersDockerNetworkMode**](ServersDockerNetworkMode.md)> | | [optional] **ports** | [**::std::collections::HashMap**](ServersDockerPort.md) | | [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/sdks/full/rust/docs/ServersDockerPortRouting.md b/sdks/full/rust/docs/ServersDockerPortRouting.md index c9573a2dc..6e17d8970 100644 --- a/sdks/full/rust/docs/ServersDockerPortRouting.md +++ b/sdks/full/rust/docs/ServersDockerPortRouting.md @@ -4,8 +4,8 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**game_guard** | Option<[**crate::models::ServersGameGuardProtocol**](ServersGameGuardProtocol.md)> | | [optional] -**host** | Option<[**crate::models::ServersDockerHostRouting**](ServersDockerHostRouting.md)> | | [optional] +**game_guard** | Option<[**crate::models::ServersDockerGameGuardRouting**](ServersDockerGameGuardRouting.md)> | | [optional] +**host** | Option<[**serde_json::Value**](.md)> | | [optional] [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/sdks/full/rust/docs/ServersDockerRuntime.md b/sdks/full/rust/docs/ServersDockerRuntime.md index 2d416c64c..5bb34818a 100644 --- a/sdks/full/rust/docs/ServersDockerRuntime.md +++ b/sdks/full/rust/docs/ServersDockerRuntime.md @@ -4,9 +4,9 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**args** | **Vec** | | -**environment** | **::std::collections::HashMap** | | -**image_id** | **String** | | +**args** | Option<**Vec**> | | [optional] +**environment** | Option<**::std::collections::HashMap**> | | [optional] +**image_id** | [**uuid::Uuid**](uuid::Uuid.md) | | **network** | [**crate::models::ServersDockerNetwork**](ServersDockerNetwork.md) | | [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/sdks/full/rust/docs/ServersImagesApi.md b/sdks/full/rust/docs/ServersImagesApi.md deleted file mode 100644 index 48e368a0b..000000000 --- a/sdks/full/rust/docs/ServersImagesApi.md +++ /dev/null @@ -1,39 +0,0 @@ -# \ServersImagesApi - -All URIs are relative to *https://api.rivet.gg* - -Method | HTTP request | Description -------------- | ------------- | ------------- -[**servers_images_create**](ServersImagesApi.md#servers_images_create) | **POST** /servers/docker | - - - -## servers_images_create - -> servers_images_create(servers_images_create_request) - - -Create a new docker image. - -### Parameters - - -Name | Type | Description | Required | Notes -------------- | ------------- | ------------- | ------------- | ------------- -**servers_images_create_request** | [**ServersImagesCreateRequest**](ServersImagesCreateRequest.md) | | [required] | - -### Return type - - (empty response body) - -### Authorization - -[BearerAuth](../README.md#BearerAuth) - -### HTTP request headers - -- **Content-Type**: application/json -- **Accept**: application/json - -[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - diff --git a/sdks/full/rust/docs/ServersImagesCreateRequest.md b/sdks/full/rust/docs/ServersImagesCreateRequest.md deleted file mode 100644 index e7b5744e2..000000000 --- a/sdks/full/rust/docs/ServersImagesCreateRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# ServersImagesCreateRequest - -## Properties - -Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- -**null** | Option<[**serde_json::Value**](.md)> | | - -[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) - - diff --git a/sdks/full/rust/docs/ServersResources.md b/sdks/full/rust/docs/ServersResources.md new file mode 100644 index 000000000..3b3f9d688 --- /dev/null +++ b/sdks/full/rust/docs/ServersResources.md @@ -0,0 +1,12 @@ +# ServersResources + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**cpu** | **i32** | The number of CPU cores in millicores, or 1/1000 of a core. For example, 1/8 of a core would be 125 millicores, and 1 core would be 1000 millicores. | +**memory** | **i32** | The amount of memory in megabytes | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/sdks/full/rust/docs/ServersServer.md b/sdks/full/rust/docs/ServersServer.md index 81a703dd8..8327f7167 100644 --- a/sdks/full/rust/docs/ServersServer.md +++ b/sdks/full/rust/docs/ServersServer.md @@ -4,7 +4,16 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**null** | Option<[**serde_json::Value**](.md)> | | +**cluster_id** | [**uuid::Uuid**](uuid::Uuid.md) | | +**create_ts** | **i64** | | +**datacenter_id** | [**uuid::Uuid**](uuid::Uuid.md) | | +**destroy_ts** | Option<**i64**> | | [optional] +**game_id** | [**uuid::Uuid**](uuid::Uuid.md) | | +**kill_timeout** | Option<**i64**> | The duration to wait for in milliseconds before killing the server. This should be set to a safe default, and can be overridden during a DELETE request if needed. | [optional] +**metadata** | Option<[**serde_json::Value**](.md)> | | +**resources** | [**crate::models::ServersResources**](ServersResources.md) | | +**runtime** | [**crate::models::ServersRuntime**](ServersRuntime.md) | | +**server_id** | [**uuid::Uuid**](uuid::Uuid.md) | | [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/sdks/full/rust/docs/ServersServersApi.md b/sdks/full/rust/docs/ServersServersApi.md index 37d90ce7f..216b1035c 100644 --- a/sdks/full/rust/docs/ServersServersApi.md +++ b/sdks/full/rust/docs/ServersServersApi.md @@ -11,7 +11,7 @@ Method | HTTP request | Description ## servers_servers_create -> crate::models::ServersServersCreateResponse servers_servers_create(servers_servers_create_request) +> crate::models::ServersCreateServerResponse servers_servers_create(servers_create_server_request) Create a new dynamic server. @@ -21,11 +21,11 @@ Create a new dynamic server. Name | Type | Description | Required | Notes ------------- | ------------- | ------------- | ------------- | ------------- -**servers_servers_create_request** | [**ServersServersCreateRequest**](ServersServersCreateRequest.md) | | [required] | +**servers_create_server_request** | [**ServersCreateServerRequest**](ServersCreateServerRequest.md) | | [required] | ### Return type -[**crate::models::ServersServersCreateResponse**](ServersServersCreateResponse.md) +[**crate::models::ServersCreateServerResponse**](ServersCreateServerResponse.md) ### Authorization @@ -41,7 +41,7 @@ Name | Type | Description | Required | Notes ## servers_servers_destroy -> servers_servers_destroy(server_id, servers_servers_destroy_request) +> crate::models::ServersDestroyServerResponse servers_servers_destroy(server_id, override_kill_timeout) Destroy a dynamic server. @@ -52,11 +52,11 @@ Destroy a dynamic server. Name | Type | Description | Required | Notes ------------- | ------------- | ------------- | ------------- | ------------- **server_id** | **uuid::Uuid** | The id of the server to destroy | [required] | -**servers_servers_destroy_request** | [**ServersServersDestroyRequest**](ServersServersDestroyRequest.md) | | [required] | +**override_kill_timeout** | Option<**i64**> | The duration to wait for in milliseconds before killing the server. This should be used to override the default kill timeout if a faster time is needed, say for ignoring a graceful shutdown. | | ### Return type - (empty response body) +[**crate::models::ServersDestroyServerResponse**](ServersDestroyServerResponse.md) ### Authorization @@ -64,7 +64,7 @@ Name | Type | Description | Required | Notes ### HTTP request headers -- **Content-Type**: application/json +- **Content-Type**: Not defined - **Accept**: application/json [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) diff --git a/sdks/full/rust/docs/ServersServersCreateRequest.md b/sdks/full/rust/docs/ServersServersCreateRequest.md deleted file mode 100644 index 784335374..000000000 --- a/sdks/full/rust/docs/ServersServersCreateRequest.md +++ /dev/null @@ -1,15 +0,0 @@ -# ServersServersCreateRequest - -## Properties - -Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- -**cluster** | **String** | The name id of the cluster | -**datacenter** | **String** | The name id of the datacenter | -**kill_timeout** | **i32** | | -**metadata** | [**::std::collections::HashMap**](serde_json::Value.md) | | -**runtime** | [**crate::models::ServersRuntime**](ServersRuntime.md) | | - -[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) - - diff --git a/sdks/full/rust/docs/ServersServersDestroyRequest.md b/sdks/full/rust/docs/ServersServersDestroyRequest.md deleted file mode 100644 index b56a028cb..000000000 --- a/sdks/full/rust/docs/ServersServersDestroyRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# ServersServersDestroyRequest - -## Properties - -Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- -**kill_timeout** | Option<**i32**> | | [optional] - -[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) - - diff --git a/sdks/full/rust/src/apis/cloud_games_tokens_api.rs b/sdks/full/rust/src/apis/cloud_games_tokens_api.rs index 42318b546..5541d0582 100644 --- a/sdks/full/rust/src/apis/cloud_games_tokens_api.rs +++ b/sdks/full/rust/src/apis/cloud_games_tokens_api.rs @@ -28,6 +28,19 @@ pub enum CloudGamesTokensCreateCloudTokenError { UnknownValue(serde_json::Value), } +/// struct for typed errors of method [`cloud_games_tokens_create_service_token`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum CloudGamesTokensCreateServiceTokenError { + Status400(crate::models::ErrorBody), + Status403(crate::models::ErrorBody), + Status404(crate::models::ErrorBody), + Status408(crate::models::ErrorBody), + Status429(crate::models::ErrorBody), + Status500(crate::models::ErrorBody), + UnknownValue(serde_json::Value), +} + /// Creates a new game cloud token. pub async fn cloud_games_tokens_create_cloud_token(configuration: &configuration::Configuration, game_id: &str) -> Result> { @@ -60,3 +73,34 @@ pub async fn cloud_games_tokens_create_cloud_token(configuration: &configuration } } +/// Creates a new game service token. +pub async fn cloud_games_tokens_create_service_token(configuration: &configuration::Configuration, game_id: &str) -> Result> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!("{}/cloud/games/{game_id}/tokens/service", local_var_configuration.base_path, game_id=crate::apis::urlencode(game_id)); + let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + serde_json::from_str(&local_var_content).map_err(Error::from) + } else { + let local_var_entity: Option = serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity }; + Err(Error::ResponseError(local_var_error)) + } +} + diff --git a/sdks/full/rust/src/apis/mod.rs b/sdks/full/rust/src/apis/mod.rs index ce7fb0fae..3afd18ee7 100644 --- a/sdks/full/rust/src/apis/mod.rs +++ b/sdks/full/rust/src/apis/mod.rs @@ -129,7 +129,6 @@ pub mod matchmaker_regions_api; pub mod portal_games_api; pub mod provision_datacenters_api; pub mod provision_servers_api; -pub mod servers_images_api; pub mod servers_servers_api; pub mod configuration; diff --git a/sdks/full/rust/src/apis/servers_images_api.rs b/sdks/full/rust/src/apis/servers_images_api.rs deleted file mode 100644 index fad00d9a2..000000000 --- a/sdks/full/rust/src/apis/servers_images_api.rs +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Rivet API - * - * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - * - * The version of the OpenAPI document: 0.0.1 - * - * Generated by: https://openapi-generator.tech - */ - - -use reqwest; - -use crate::apis::ResponseContent; -use super::{Error, configuration}; - - -/// struct for typed errors of method [`servers_images_create`] -#[derive(Debug, Clone, Serialize, Deserialize)] -#[serde(untagged)] -pub enum ServersImagesCreateError { - Status400(crate::models::ErrorBody), - Status403(crate::models::ErrorBody), - Status404(crate::models::ErrorBody), - Status408(crate::models::ErrorBody), - Status429(crate::models::ErrorBody), - Status500(crate::models::ErrorBody), - UnknownValue(serde_json::Value), -} - - -/// Create a new docker image. -pub async fn servers_images_create(configuration: &configuration::Configuration, servers_images_create_request: crate::models::ServersImagesCreateRequest) -> Result<(), Error> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/servers/docker", local_var_configuration.base_path); - let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); - - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - local_var_req_builder = local_var_req_builder.json(&servers_images_create_request); - - let local_var_req = local_var_req_builder.build()?; - let local_var_resp = local_var_client.execute(local_var_req).await?; - - let local_var_status = local_var_resp.status(); - let local_var_content = local_var_resp.text().await?; - - if !local_var_status.is_client_error() && !local_var_status.is_server_error() { - Ok(()) - } else { - let local_var_entity: Option = serde_json::from_str(&local_var_content).ok(); - let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity }; - Err(Error::ResponseError(local_var_error)) - } -} - diff --git a/sdks/full/rust/src/apis/servers_servers_api.rs b/sdks/full/rust/src/apis/servers_servers_api.rs index e6f9abd50..48f38ff72 100644 --- a/sdks/full/rust/src/apis/servers_servers_api.rs +++ b/sdks/full/rust/src/apis/servers_servers_api.rs @@ -43,7 +43,7 @@ pub enum ServersServersDestroyError { /// Create a new dynamic server. -pub async fn servers_servers_create(configuration: &configuration::Configuration, servers_servers_create_request: crate::models::ServersServersCreateRequest) -> Result> { +pub async fn servers_servers_create(configuration: &configuration::Configuration, servers_create_server_request: crate::models::ServersCreateServerRequest) -> Result> { let local_var_configuration = configuration; let local_var_client = &local_var_configuration.client; @@ -57,7 +57,7 @@ pub async fn servers_servers_create(configuration: &configuration::Configuration if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); }; - local_var_req_builder = local_var_req_builder.json(&servers_servers_create_request); + local_var_req_builder = local_var_req_builder.json(&servers_create_server_request); let local_var_req = local_var_req_builder.build()?; let local_var_resp = local_var_client.execute(local_var_req).await?; @@ -75,7 +75,7 @@ pub async fn servers_servers_create(configuration: &configuration::Configuration } /// Destroy a dynamic server. -pub async fn servers_servers_destroy(configuration: &configuration::Configuration, server_id: &str, servers_servers_destroy_request: crate::models::ServersServersDestroyRequest) -> Result<(), Error> { +pub async fn servers_servers_destroy(configuration: &configuration::Configuration, server_id: &str, override_kill_timeout: Option) -> Result> { let local_var_configuration = configuration; let local_var_client = &local_var_configuration.client; @@ -83,13 +83,15 @@ pub async fn servers_servers_destroy(configuration: &configuration::Configuratio let local_var_uri_str = format!("{}/servers/servers/{server_id}", local_var_configuration.base_path, server_id=crate::apis::urlencode(server_id)); let mut local_var_req_builder = local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str()); + if let Some(ref local_var_str) = override_kill_timeout { + local_var_req_builder = local_var_req_builder.query(&[("override_kill_timeout", &local_var_str.to_string())]); + } if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); } if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); }; - local_var_req_builder = local_var_req_builder.json(&servers_servers_destroy_request); let local_var_req = local_var_req_builder.build()?; let local_var_resp = local_var_client.execute(local_var_req).await?; @@ -98,7 +100,7 @@ pub async fn servers_servers_destroy(configuration: &configuration::Configuratio let local_var_content = local_var_resp.text().await?; if !local_var_status.is_client_error() && !local_var_status.is_server_error() { - Ok(()) + serde_json::from_str(&local_var_content).map_err(Error::from) } else { let local_var_entity: Option = serde_json::from_str(&local_var_content).ok(); let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity }; diff --git a/sdks/full/rust-cli/src/models/servers_docker_host_routing.rs b/sdks/full/rust/src/models/cloud_games_create_service_token_response.rs similarity index 51% rename from sdks/full/rust-cli/src/models/servers_docker_host_routing.rs rename to sdks/full/rust/src/models/cloud_games_create_service_token_response.rs index 2fc814f8f..7221b7131 100644 --- a/sdks/full/rust-cli/src/models/servers_docker_host_routing.rs +++ b/sdks/full/rust/src/models/cloud_games_create_service_token_response.rs @@ -12,15 +12,16 @@ #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] -pub struct ServersDockerHostRouting { - #[serde(rename = "null", deserialize_with = "Option::deserialize")] - pub null: Option, +pub struct CloudGamesCreateServiceTokenResponse { + /// A JSON Web Token. + #[serde(rename = "token")] + pub token: String, } -impl ServersDockerHostRouting { - pub fn new(null: Option) -> ServersDockerHostRouting { - ServersDockerHostRouting { - null, +impl CloudGamesCreateServiceTokenResponse { + pub fn new(token: String) -> CloudGamesCreateServiceTokenResponse { + CloudGamesCreateServiceTokenResponse { + token, } } } diff --git a/sdks/full/rust/src/models/mod.rs b/sdks/full/rust/src/models/mod.rs index 48448576e..cd6c4836c 100644 --- a/sdks/full/rust/src/models/mod.rs +++ b/sdks/full/rust/src/models/mod.rs @@ -132,6 +132,8 @@ pub mod cloud_games_create_game_version_request; pub use self::cloud_games_create_game_version_request::CloudGamesCreateGameVersionRequest; pub mod cloud_games_create_game_version_response; pub use self::cloud_games_create_game_version_response::CloudGamesCreateGameVersionResponse; +pub mod cloud_games_create_service_token_response; +pub use self::cloud_games_create_service_token_response::CloudGamesCreateServiceTokenResponse; pub mod cloud_games_delete_matchmaker_lobby_response; pub use self::cloud_games_delete_matchmaker_lobby_response::CloudGamesDeleteMatchmakerLobbyResponse; pub mod cloud_games_export_lobby_logs_request; @@ -604,8 +606,14 @@ pub mod provision_datacenters_get_tls_response; pub use self::provision_datacenters_get_tls_response::ProvisionDatacentersGetTlsResponse; pub mod provision_servers_get_info_response; pub use self::provision_servers_get_info_response::ProvisionServersGetInfoResponse; -pub mod servers_docker_host_routing; -pub use self::servers_docker_host_routing::ServersDockerHostRouting; +pub mod servers_create_server_request; +pub use self::servers_create_server_request::ServersCreateServerRequest; +pub mod servers_create_server_response; +pub use self::servers_create_server_response::ServersCreateServerResponse; +pub mod servers_destroy_server_response; +pub use self::servers_destroy_server_response::ServersDestroyServerResponse; +pub mod servers_docker_game_guard_routing; +pub use self::servers_docker_game_guard_routing::ServersDockerGameGuardRouting; pub mod servers_docker_network; pub use self::servers_docker_network::ServersDockerNetwork; pub mod servers_docker_network_mode; @@ -618,18 +626,12 @@ pub mod servers_docker_runtime; pub use self::servers_docker_runtime::ServersDockerRuntime; pub mod servers_game_guard_protocol; pub use self::servers_game_guard_protocol::ServersGameGuardProtocol; -pub mod servers_images_create_request; -pub use self::servers_images_create_request::ServersImagesCreateRequest; +pub mod servers_resources; +pub use self::servers_resources::ServersResources; pub mod servers_runtime; pub use self::servers_runtime::ServersRuntime; pub mod servers_server; pub use self::servers_server::ServersServer; -pub mod servers_servers_create_request; -pub use self::servers_servers_create_request::ServersServersCreateRequest; -pub mod servers_servers_create_response; -pub use self::servers_servers_create_response::ServersServersCreateResponse; -pub mod servers_servers_destroy_request; -pub use self::servers_servers_destroy_request::ServersServersDestroyRequest; pub mod upload_prepare_file; pub use self::upload_prepare_file::UploadPrepareFile; pub mod upload_presigned_request; diff --git a/sdks/full/rust/src/models/servers_create_server_request.rs b/sdks/full/rust/src/models/servers_create_server_request.rs new file mode 100644 index 000000000..a538478cd --- /dev/null +++ b/sdks/full/rust/src/models/servers_create_server_request.rs @@ -0,0 +1,42 @@ +/* + * Rivet API + * + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 0.0.1 + * + * Generated by: https://openapi-generator.tech + */ + + + + +#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] +pub struct ServersCreateServerRequest { + /// The name ID of the datacenter + #[serde(rename = "datacenter")] + pub datacenter: String, + /// The duration to wait for in milliseconds before killing the server. This should be set to a safe default, and can be overridden during a DELETE request if needed. + #[serde(rename = "kill_timeout", skip_serializing_if = "Option::is_none")] + pub kill_timeout: Option, + #[serde(rename = "metadata", deserialize_with = "Option::deserialize")] + pub metadata: Option, + #[serde(rename = "resources")] + pub resources: Box, + #[serde(rename = "runtime")] + pub runtime: Box, +} + +impl ServersCreateServerRequest { + pub fn new(datacenter: String, metadata: Option, resources: crate::models::ServersResources, runtime: crate::models::ServersRuntime) -> ServersCreateServerRequest { + ServersCreateServerRequest { + datacenter, + kill_timeout: None, + metadata, + resources: Box::new(resources), + runtime: Box::new(runtime), + } + } +} + + diff --git a/sdks/full/rust-cli/src/models/servers_servers_create_response.rs b/sdks/full/rust/src/models/servers_create_server_response.rs similarity index 68% rename from sdks/full/rust-cli/src/models/servers_servers_create_response.rs rename to sdks/full/rust/src/models/servers_create_server_response.rs index 8058d1add..3c32cbd89 100644 --- a/sdks/full/rust-cli/src/models/servers_servers_create_response.rs +++ b/sdks/full/rust/src/models/servers_create_server_response.rs @@ -12,14 +12,14 @@ #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] -pub struct ServersServersCreateResponse { +pub struct ServersCreateServerResponse { #[serde(rename = "server")] pub server: Box, } -impl ServersServersCreateResponse { - pub fn new(server: crate::models::ServersServer) -> ServersServersCreateResponse { - ServersServersCreateResponse { +impl ServersCreateServerResponse { + pub fn new(server: crate::models::ServersServer) -> ServersCreateServerResponse { + ServersCreateServerResponse { server: Box::new(server), } } diff --git a/sdks/full/rust/src/models/servers_servers_destroy_request.rs b/sdks/full/rust/src/models/servers_destroy_server_response.rs similarity index 51% rename from sdks/full/rust/src/models/servers_servers_destroy_request.rs rename to sdks/full/rust/src/models/servers_destroy_server_response.rs index 701ddcbe1..f993e53a9 100644 --- a/sdks/full/rust/src/models/servers_servers_destroy_request.rs +++ b/sdks/full/rust/src/models/servers_destroy_server_response.rs @@ -12,15 +12,15 @@ #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] -pub struct ServersServersDestroyRequest { - #[serde(rename = "kill_timeout", skip_serializing_if = "Option::is_none")] - pub kill_timeout: Option, +pub struct ServersDestroyServerResponse { + #[serde(rename = "server_id")] + pub server_id: uuid::Uuid, } -impl ServersServersDestroyRequest { - pub fn new() -> ServersServersDestroyRequest { - ServersServersDestroyRequest { - kill_timeout: None, +impl ServersDestroyServerResponse { + pub fn new(server_id: uuid::Uuid) -> ServersDestroyServerResponse { + ServersDestroyServerResponse { + server_id, } } } diff --git a/sdks/full/rust/src/models/servers_docker_game_guard_routing.rs b/sdks/full/rust/src/models/servers_docker_game_guard_routing.rs new file mode 100644 index 000000000..c076bcf12 --- /dev/null +++ b/sdks/full/rust/src/models/servers_docker_game_guard_routing.rs @@ -0,0 +1,28 @@ +/* + * Rivet API + * + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 0.0.1 + * + * Generated by: https://openapi-generator.tech + */ + + + + +#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] +pub struct ServersDockerGameGuardRouting { + #[serde(rename = "protocol", skip_serializing_if = "Option::is_none")] + pub protocol: Option, +} + +impl ServersDockerGameGuardRouting { + pub fn new() -> ServersDockerGameGuardRouting { + ServersDockerGameGuardRouting { + protocol: None, + } + } +} + + diff --git a/sdks/full/rust/src/models/servers_docker_network.rs b/sdks/full/rust/src/models/servers_docker_network.rs index ff7270d59..1350f9a9f 100644 --- a/sdks/full/rust/src/models/servers_docker_network.rs +++ b/sdks/full/rust/src/models/servers_docker_network.rs @@ -13,16 +13,16 @@ #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct ServersDockerNetwork { - #[serde(rename = "mode")] - pub mode: crate::models::ServersDockerNetworkMode, + #[serde(rename = "mode", skip_serializing_if = "Option::is_none")] + pub mode: Option, #[serde(rename = "ports")] pub ports: ::std::collections::HashMap, } impl ServersDockerNetwork { - pub fn new(mode: crate::models::ServersDockerNetworkMode, ports: ::std::collections::HashMap) -> ServersDockerNetwork { + pub fn new(ports: ::std::collections::HashMap) -> ServersDockerNetwork { ServersDockerNetwork { - mode, + mode: None, ports, } } diff --git a/sdks/full/rust/src/models/servers_docker_network_mode.rs b/sdks/full/rust/src/models/servers_docker_network_mode.rs index 8ff224904..b9d6ea916 100644 --- a/sdks/full/rust/src/models/servers_docker_network_mode.rs +++ b/sdks/full/rust/src/models/servers_docker_network_mode.rs @@ -12,25 +12,25 @@ /// #[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] pub enum ServersDockerNetworkMode { - #[serde(rename = "host")] - Host, #[serde(rename = "bridge")] Bridge, + #[serde(rename = "host")] + Host, } impl ToString for ServersDockerNetworkMode { fn to_string(&self) -> String { match self { - Self::Host => String::from("host"), Self::Bridge => String::from("bridge"), + Self::Host => String::from("host"), } } } impl Default for ServersDockerNetworkMode { fn default() -> ServersDockerNetworkMode { - Self::Host + Self::Bridge } } diff --git a/sdks/full/rust/src/models/servers_docker_port_routing.rs b/sdks/full/rust/src/models/servers_docker_port_routing.rs index 73b15a0fe..bb37ecb42 100644 --- a/sdks/full/rust/src/models/servers_docker_port_routing.rs +++ b/sdks/full/rust/src/models/servers_docker_port_routing.rs @@ -14,9 +14,9 @@ #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct ServersDockerPortRouting { #[serde(rename = "game_guard", skip_serializing_if = "Option::is_none")] - pub game_guard: Option, + pub game_guard: Option>, #[serde(rename = "host", skip_serializing_if = "Option::is_none")] - pub host: Option>, + pub host: Option, } impl ServersDockerPortRouting { diff --git a/sdks/full/rust/src/models/servers_docker_runtime.rs b/sdks/full/rust/src/models/servers_docker_runtime.rs index 7c6f2ed79..57c4f9013 100644 --- a/sdks/full/rust/src/models/servers_docker_runtime.rs +++ b/sdks/full/rust/src/models/servers_docker_runtime.rs @@ -13,21 +13,21 @@ #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct ServersDockerRuntime { - #[serde(rename = "args")] - pub args: Vec, - #[serde(rename = "environment")] - pub environment: ::std::collections::HashMap, + #[serde(rename = "args", skip_serializing_if = "Option::is_none")] + pub args: Option>, + #[serde(rename = "environment", skip_serializing_if = "Option::is_none")] + pub environment: Option<::std::collections::HashMap>, #[serde(rename = "image_id")] - pub image_id: String, + pub image_id: uuid::Uuid, #[serde(rename = "network")] pub network: Box, } impl ServersDockerRuntime { - pub fn new(args: Vec, environment: ::std::collections::HashMap, image_id: String, network: crate::models::ServersDockerNetwork) -> ServersDockerRuntime { + pub fn new(image_id: uuid::Uuid, network: crate::models::ServersDockerNetwork) -> ServersDockerRuntime { ServersDockerRuntime { - args, - environment, + args: None, + environment: None, image_id, network: Box::new(network), } diff --git a/sdks/full/rust/src/models/servers_images_create_request.rs b/sdks/full/rust/src/models/servers_images_create_request.rs deleted file mode 100644 index 2156f9831..000000000 --- a/sdks/full/rust/src/models/servers_images_create_request.rs +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Rivet API - * - * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - * - * The version of the OpenAPI document: 0.0.1 - * - * Generated by: https://openapi-generator.tech - */ - - - - -#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] -pub struct ServersImagesCreateRequest { - #[serde(rename = "null", deserialize_with = "Option::deserialize")] - pub null: Option, -} - -impl ServersImagesCreateRequest { - pub fn new(null: Option) -> ServersImagesCreateRequest { - ServersImagesCreateRequest { - null, - } - } -} - - diff --git a/sdks/full/rust/src/models/servers_resources.rs b/sdks/full/rust/src/models/servers_resources.rs new file mode 100644 index 000000000..d29a3cb0a --- /dev/null +++ b/sdks/full/rust/src/models/servers_resources.rs @@ -0,0 +1,33 @@ +/* + * Rivet API + * + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 0.0.1 + * + * Generated by: https://openapi-generator.tech + */ + + + + +#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] +pub struct ServersResources { + /// The number of CPU cores in millicores, or 1/1000 of a core. For example, 1/8 of a core would be 125 millicores, and 1 core would be 1000 millicores. + #[serde(rename = "cpu")] + pub cpu: i32, + /// The amount of memory in megabytes + #[serde(rename = "memory")] + pub memory: i32, +} + +impl ServersResources { + pub fn new(cpu: i32, memory: i32) -> ServersResources { + ServersResources { + cpu, + memory, + } + } +} + + diff --git a/sdks/full/rust/src/models/servers_server.rs b/sdks/full/rust/src/models/servers_server.rs index 30db9313e..966e6a837 100644 --- a/sdks/full/rust/src/models/servers_server.rs +++ b/sdks/full/rust/src/models/servers_server.rs @@ -13,14 +13,42 @@ #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct ServersServer { - #[serde(rename = "null", deserialize_with = "Option::deserialize")] - pub null: Option, + #[serde(rename = "cluster_id")] + pub cluster_id: uuid::Uuid, + #[serde(rename = "create_ts")] + pub create_ts: i64, + #[serde(rename = "datacenter_id")] + pub datacenter_id: uuid::Uuid, + #[serde(rename = "destroy_ts", skip_serializing_if = "Option::is_none")] + pub destroy_ts: Option, + #[serde(rename = "game_id")] + pub game_id: uuid::Uuid, + /// The duration to wait for in milliseconds before killing the server. This should be set to a safe default, and can be overridden during a DELETE request if needed. + #[serde(rename = "kill_timeout", skip_serializing_if = "Option::is_none")] + pub kill_timeout: Option, + #[serde(rename = "metadata", deserialize_with = "Option::deserialize")] + pub metadata: Option, + #[serde(rename = "resources")] + pub resources: Box, + #[serde(rename = "runtime")] + pub runtime: Box, + #[serde(rename = "server_id")] + pub server_id: uuid::Uuid, } impl ServersServer { - pub fn new(null: Option) -> ServersServer { + pub fn new(cluster_id: uuid::Uuid, create_ts: i64, datacenter_id: uuid::Uuid, game_id: uuid::Uuid, metadata: Option, resources: crate::models::ServersResources, runtime: crate::models::ServersRuntime, server_id: uuid::Uuid) -> ServersServer { ServersServer { - null, + cluster_id, + create_ts, + datacenter_id, + destroy_ts: None, + game_id, + kill_timeout: None, + metadata, + resources: Box::new(resources), + runtime: Box::new(runtime), + server_id, } } } diff --git a/sdks/full/rust/src/models/servers_servers_create_request.rs b/sdks/full/rust/src/models/servers_servers_create_request.rs deleted file mode 100644 index 6912a5a1e..000000000 --- a/sdks/full/rust/src/models/servers_servers_create_request.rs +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Rivet API - * - * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - * - * The version of the OpenAPI document: 0.0.1 - * - * Generated by: https://openapi-generator.tech - */ - - - - -#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] -pub struct ServersServersCreateRequest { - /// The name id of the cluster - #[serde(rename = "cluster")] - pub cluster: String, - /// The name id of the datacenter - #[serde(rename = "datacenter")] - pub datacenter: String, - #[serde(rename = "kill_timeout")] - pub kill_timeout: i32, - #[serde(rename = "metadata")] - pub metadata: ::std::collections::HashMap, - #[serde(rename = "runtime")] - pub runtime: Box, -} - -impl ServersServersCreateRequest { - pub fn new(cluster: String, datacenter: String, kill_timeout: i32, metadata: ::std::collections::HashMap, runtime: crate::models::ServersRuntime) -> ServersServersCreateRequest { - ServersServersCreateRequest { - cluster, - datacenter, - kill_timeout, - metadata, - runtime: Box::new(runtime), - } - } -} - - diff --git a/sdks/full/typescript/archive.tgz b/sdks/full/typescript/archive.tgz index fcd8bc62d..8c893d0f6 100644 --- a/sdks/full/typescript/archive.tgz +++ b/sdks/full/typescript/archive.tgz @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7d59226172f743cff83e57175c7d2126d73f5edf286e81398c4673e65ad4ef79 -size 654781 +oid sha256:ec8cefcd8cb85c2248e3b192b75f2687887e62b500de8b74594391ee1e8d36ec +size 655532 diff --git a/sdks/full/typescript/src/Client.ts b/sdks/full/typescript/src/Client.ts index 1016c6e32..194bb3348 100644 --- a/sdks/full/typescript/src/Client.ts +++ b/sdks/full/typescript/src/Client.ts @@ -10,11 +10,11 @@ import { Group } from "./api/resources/group/client/Client"; import { Identity } from "./api/resources/identity/client/Client"; import { Kv } from "./api/resources/kv/client/Client"; import { Provision } from "./api/resources/provision/client/Client"; -import { Servers } from "./api/resources/servers/client/Client"; import { Auth } from "./api/resources/auth/client/Client"; import { Job } from "./api/resources/job/client/Client"; import { Matchmaker } from "./api/resources/matchmaker/client/Client"; import { Portal } from "./api/resources/portal/client/Client"; +import { Servers } from "./api/resources/servers/client/Client"; export declare namespace RivetClient { interface Options { @@ -68,12 +68,6 @@ export class RivetClient { return (this._provision ??= new Provision(this._options)); } - protected _servers: Servers | undefined; - - public get servers(): Servers { - return (this._servers ??= new Servers(this._options)); - } - protected _auth: Auth | undefined; public get auth(): Auth { @@ -97,4 +91,10 @@ export class RivetClient { public get portal(): Portal { return (this._portal ??= new Portal(this._options)); } + + protected _servers: Servers | undefined; + + public get servers(): Servers { + return (this._servers ??= new Servers(this._options)); + } } diff --git a/sdks/full/typescript/src/api/resources/cloud/resources/games/resources/tokens/client/Client.ts b/sdks/full/typescript/src/api/resources/cloud/resources/games/resources/tokens/client/Client.ts index 45b9cbd8e..917470d63 100644 --- a/sdks/full/typescript/src/api/resources/cloud/resources/games/resources/tokens/client/Client.ts +++ b/sdks/full/typescript/src/api/resources/cloud/resources/games/resources/tokens/client/Client.ts @@ -146,6 +146,127 @@ export class Tokens { } } + /** + * Creates a new game service token. + * @throws {@link Rivet.InternalError} + * @throws {@link Rivet.RateLimitError} + * @throws {@link Rivet.ForbiddenError} + * @throws {@link Rivet.UnauthorizedError} + * @throws {@link Rivet.NotFoundError} + * @throws {@link Rivet.BadRequestError} + */ + public async createServiceToken( + gameId: string, + requestOptions?: Tokens.RequestOptions + ): Promise { + const _response = await (this._options.fetcher ?? core.fetcher)({ + url: urlJoin( + (await core.Supplier.get(this._options.environment)) ?? environments.RivetEnvironment.Production, + `/cloud/games/${gameId}/tokens/service` + ), + method: "POST", + headers: { + Authorization: await this._getAuthorizationHeader(), + }, + contentType: "application/json", + timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 180000, + maxRetries: requestOptions?.maxRetries, + }); + if (_response.ok) { + return await serializers.cloud.games.CreateCloudTokenResponse.parseOrThrow(_response.body, { + unrecognizedObjectKeys: "passthrough", + allowUnrecognizedUnionMembers: true, + allowUnrecognizedEnumValues: true, + skipValidation: true, + breadcrumbsPrefix: ["response"], + }); + } + + if (_response.error.reason === "status-code") { + switch (_response.error.statusCode) { + case 500: + throw new Rivet.InternalError( + await serializers.ErrorBody.parseOrThrow(_response.error.body, { + unrecognizedObjectKeys: "passthrough", + allowUnrecognizedUnionMembers: true, + allowUnrecognizedEnumValues: true, + skipValidation: true, + breadcrumbsPrefix: ["response"], + }) + ); + case 429: + throw new Rivet.RateLimitError( + await serializers.ErrorBody.parseOrThrow(_response.error.body, { + unrecognizedObjectKeys: "passthrough", + allowUnrecognizedUnionMembers: true, + allowUnrecognizedEnumValues: true, + skipValidation: true, + breadcrumbsPrefix: ["response"], + }) + ); + case 403: + throw new Rivet.ForbiddenError( + await serializers.ErrorBody.parseOrThrow(_response.error.body, { + unrecognizedObjectKeys: "passthrough", + allowUnrecognizedUnionMembers: true, + allowUnrecognizedEnumValues: true, + skipValidation: true, + breadcrumbsPrefix: ["response"], + }) + ); + case 408: + throw new Rivet.UnauthorizedError( + await serializers.ErrorBody.parseOrThrow(_response.error.body, { + unrecognizedObjectKeys: "passthrough", + allowUnrecognizedUnionMembers: true, + allowUnrecognizedEnumValues: true, + skipValidation: true, + breadcrumbsPrefix: ["response"], + }) + ); + case 404: + throw new Rivet.NotFoundError( + await serializers.ErrorBody.parseOrThrow(_response.error.body, { + unrecognizedObjectKeys: "passthrough", + allowUnrecognizedUnionMembers: true, + allowUnrecognizedEnumValues: true, + skipValidation: true, + breadcrumbsPrefix: ["response"], + }) + ); + case 400: + throw new Rivet.BadRequestError( + await serializers.ErrorBody.parseOrThrow(_response.error.body, { + unrecognizedObjectKeys: "passthrough", + allowUnrecognizedUnionMembers: true, + allowUnrecognizedEnumValues: true, + skipValidation: true, + breadcrumbsPrefix: ["response"], + }) + ); + default: + throw new errors.RivetError({ + statusCode: _response.error.statusCode, + body: _response.error.body, + }); + } + } + + switch (_response.error.reason) { + case "non-json": + throw new errors.RivetError({ + statusCode: _response.error.statusCode, + body: _response.error.rawBody, + }); + case "timeout": + throw new errors.RivetTimeoutError(); + case "unknown": + throw new errors.RivetError({ + message: _response.error.errorMessage, + }); + } + } + protected async _getAuthorizationHeader() { const bearer = await core.Supplier.get(this._options.token); if (bearer != null) { diff --git a/sdks/full/typescript/src/api/resources/cloud/resources/games/resources/tokens/types/index.ts b/sdks/full/typescript/src/api/resources/cloud/resources/games/resources/tokens/types/index.ts index c6eb67fbb..3f81f4869 100644 --- a/sdks/full/typescript/src/api/resources/cloud/resources/games/resources/tokens/types/index.ts +++ b/sdks/full/typescript/src/api/resources/cloud/resources/games/resources/tokens/types/index.ts @@ -1 +1,2 @@ export * from "./CreateCloudTokenResponse"; +export * from "./CreateServiceTokenResponse"; diff --git a/sdks/full/typescript/src/api/resources/index.ts b/sdks/full/typescript/src/api/resources/index.ts index 398942765..6e6d24ffa 100644 --- a/sdks/full/typescript/src/api/resources/index.ts +++ b/sdks/full/typescript/src/api/resources/index.ts @@ -4,7 +4,6 @@ export * as group from "./group"; export * as identity from "./identity"; export * as kv from "./kv"; export * as provision from "./provision"; -export * as servers from "./servers"; export * as auth from "./auth"; export * as captcha from "./captcha"; export * as common from "./common"; @@ -13,6 +12,7 @@ export * as game from "./game"; export * as geo from "./geo"; export * as matchmaker from "./matchmaker"; export * as portal from "./portal"; +export * as servers from "./servers"; export * as upload from "./upload"; export * from "./common/errors"; export * as job from "./job"; diff --git a/sdks/full/typescript/src/api/resources/servers/client/Client.ts b/sdks/full/typescript/src/api/resources/servers/client/Client.ts index afd38ea5f..cd774daaf 100644 --- a/sdks/full/typescript/src/api/resources/servers/client/Client.ts +++ b/sdks/full/typescript/src/api/resources/servers/client/Client.ts @@ -4,7 +4,6 @@ import * as environments from "../../../../environments"; import * as core from "../../../../core"; -import { Images } from "../resources/images/client/Client"; import { Servers as Servers_ } from "../resources/servers/client/Client"; export declare namespace Servers { @@ -23,12 +22,6 @@ export declare namespace Servers { export class Servers { constructor(protected readonly _options: Servers.Options = {}) {} - protected _images: Images | undefined; - - public get images(): Images { - return (this._images ??= new Images(this._options)); - } - protected _servers: Servers_ | undefined; public get servers(): Servers_ { diff --git a/sdks/full/typescript/src/api/resources/servers/resources/images/client/Client.ts b/sdks/full/typescript/src/api/resources/servers/resources/images/client/Client.ts deleted file mode 100644 index 4c0c98e34..000000000 --- a/sdks/full/typescript/src/api/resources/servers/resources/images/client/Client.ts +++ /dev/null @@ -1,154 +0,0 @@ -/** - * This file was auto-generated by Fern from our API Definition. - */ - -import * as environments from "../../../../../../environments"; -import * as core from "../../../../../../core"; -import * as Rivet from "../../../../.."; -import * as serializers from "../../../../../../serialization"; -import urlJoin from "url-join"; -import * as errors from "../../../../../../errors"; - -export declare namespace Images { - interface Options { - environment?: core.Supplier; - token?: core.Supplier; - fetcher?: core.FetchFunction; - } - - interface RequestOptions { - timeoutInSeconds?: number; - maxRetries?: number; - } -} - -export class Images { - constructor(protected readonly _options: Images.Options = {}) {} - - /** - * Create a new docker image. - * @throws {@link Rivet.InternalError} - * @throws {@link Rivet.RateLimitError} - * @throws {@link Rivet.ForbiddenError} - * @throws {@link Rivet.UnauthorizedError} - * @throws {@link Rivet.NotFoundError} - * @throws {@link Rivet.BadRequestError} - */ - public async create( - request: Rivet.servers.images.CreateRequest, - requestOptions?: Images.RequestOptions - ): Promise { - const _response = await (this._options.fetcher ?? core.fetcher)({ - url: urlJoin( - (await core.Supplier.get(this._options.environment)) ?? environments.RivetEnvironment.Production, - "/servers/docker" - ), - method: "POST", - headers: { - Authorization: await this._getAuthorizationHeader(), - }, - contentType: "application/json", - body: await serializers.servers.images.CreateRequest.jsonOrThrow(request, { - unrecognizedObjectKeys: "strip", - }), - timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 180000, - maxRetries: requestOptions?.maxRetries, - }); - if (_response.ok) { - return; - } - - if (_response.error.reason === "status-code") { - switch (_response.error.statusCode) { - case 500: - throw new Rivet.InternalError( - await serializers.ErrorBody.parseOrThrow(_response.error.body, { - unrecognizedObjectKeys: "passthrough", - allowUnrecognizedUnionMembers: true, - allowUnrecognizedEnumValues: true, - skipValidation: true, - breadcrumbsPrefix: ["response"], - }) - ); - case 429: - throw new Rivet.RateLimitError( - await serializers.ErrorBody.parseOrThrow(_response.error.body, { - unrecognizedObjectKeys: "passthrough", - allowUnrecognizedUnionMembers: true, - allowUnrecognizedEnumValues: true, - skipValidation: true, - breadcrumbsPrefix: ["response"], - }) - ); - case 403: - throw new Rivet.ForbiddenError( - await serializers.ErrorBody.parseOrThrow(_response.error.body, { - unrecognizedObjectKeys: "passthrough", - allowUnrecognizedUnionMembers: true, - allowUnrecognizedEnumValues: true, - skipValidation: true, - breadcrumbsPrefix: ["response"], - }) - ); - case 408: - throw new Rivet.UnauthorizedError( - await serializers.ErrorBody.parseOrThrow(_response.error.body, { - unrecognizedObjectKeys: "passthrough", - allowUnrecognizedUnionMembers: true, - allowUnrecognizedEnumValues: true, - skipValidation: true, - breadcrumbsPrefix: ["response"], - }) - ); - case 404: - throw new Rivet.NotFoundError( - await serializers.ErrorBody.parseOrThrow(_response.error.body, { - unrecognizedObjectKeys: "passthrough", - allowUnrecognizedUnionMembers: true, - allowUnrecognizedEnumValues: true, - skipValidation: true, - breadcrumbsPrefix: ["response"], - }) - ); - case 400: - throw new Rivet.BadRequestError( - await serializers.ErrorBody.parseOrThrow(_response.error.body, { - unrecognizedObjectKeys: "passthrough", - allowUnrecognizedUnionMembers: true, - allowUnrecognizedEnumValues: true, - skipValidation: true, - breadcrumbsPrefix: ["response"], - }) - ); - default: - throw new errors.RivetError({ - statusCode: _response.error.statusCode, - body: _response.error.body, - }); - } - } - - switch (_response.error.reason) { - case "non-json": - throw new errors.RivetError({ - statusCode: _response.error.statusCode, - body: _response.error.rawBody, - }); - case "timeout": - throw new errors.RivetTimeoutError(); - case "unknown": - throw new errors.RivetError({ - message: _response.error.errorMessage, - }); - } - } - - protected async _getAuthorizationHeader() { - const bearer = await core.Supplier.get(this._options.token); - if (bearer != null) { - return `Bearer ${bearer}`; - } - - return undefined; - } -} diff --git a/sdks/full/typescript/src/api/resources/servers/resources/images/client/index.ts b/sdks/full/typescript/src/api/resources/servers/resources/images/client/index.ts deleted file mode 100644 index cb0ff5c3b..000000000 --- a/sdks/full/typescript/src/api/resources/servers/resources/images/client/index.ts +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/sdks/full/typescript/src/api/resources/servers/resources/images/index.ts b/sdks/full/typescript/src/api/resources/servers/resources/images/index.ts deleted file mode 100644 index c9240f83b..000000000 --- a/sdks/full/typescript/src/api/resources/servers/resources/images/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./types"; -export * from "./client"; diff --git a/sdks/full/typescript/src/api/resources/servers/resources/index.ts b/sdks/full/typescript/src/api/resources/servers/resources/index.ts index 49399b658..65aae6998 100644 --- a/sdks/full/typescript/src/api/resources/servers/resources/index.ts +++ b/sdks/full/typescript/src/api/resources/servers/resources/index.ts @@ -1,4 +1,5 @@ -export * as images from "./images"; -export * as servers from "./servers"; export * as common from "./common"; export * from "./common/types"; +export * as servers from "./servers"; +export * from "./servers/types"; +export * from "./servers/client/requests"; diff --git a/sdks/full/typescript/src/api/resources/servers/resources/servers/client/Client.ts b/sdks/full/typescript/src/api/resources/servers/resources/servers/client/Client.ts index 5ccc60757..993df3bfa 100644 --- a/sdks/full/typescript/src/api/resources/servers/resources/servers/client/Client.ts +++ b/sdks/full/typescript/src/api/resources/servers/resources/servers/client/Client.ts @@ -35,9 +35,9 @@ export class Servers { * @throws {@link Rivet.BadRequestError} */ public async create( - request: Rivet.servers.servers.CreateRequest, + request: Rivet.servers.CreateServerRequest, requestOptions?: Servers.RequestOptions - ): Promise { + ): Promise { const _response = await (this._options.fetcher ?? core.fetcher)({ url: urlJoin( (await core.Supplier.get(this._options.environment)) ?? environments.RivetEnvironment.Production, @@ -48,14 +48,14 @@ export class Servers { Authorization: await this._getAuthorizationHeader(), }, contentType: "application/json", - body: await serializers.servers.servers.CreateRequest.jsonOrThrow(request, { + body: await serializers.servers.CreateServerRequest.jsonOrThrow(request, { unrecognizedObjectKeys: "strip", }), timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 180000, maxRetries: requestOptions?.maxRetries, }); if (_response.ok) { - return await serializers.servers.servers.CreateResponse.parseOrThrow(_response.body, { + return await serializers.servers.CreateServerResponse.parseOrThrow(_response.body, { unrecognizedObjectKeys: "passthrough", allowUnrecognizedUnionMembers: true, allowUnrecognizedEnumValues: true, @@ -160,9 +160,15 @@ export class Servers { */ public async destroy( serverId: string, - request: Rivet.servers.servers.DestroyRequest, + request: Rivet.servers.DestroyServerRequest = {}, requestOptions?: Servers.RequestOptions - ): Promise { + ): Promise { + const { overrideKillTimeout } = request; + const _queryParams: Record = {}; + if (overrideKillTimeout != null) { + _queryParams["override_kill_timeout"] = overrideKillTimeout.toString(); + } + const _response = await (this._options.fetcher ?? core.fetcher)({ url: urlJoin( (await core.Supplier.get(this._options.environment)) ?? environments.RivetEnvironment.Production, @@ -173,14 +179,18 @@ export class Servers { Authorization: await this._getAuthorizationHeader(), }, contentType: "application/json", - body: await serializers.servers.servers.DestroyRequest.jsonOrThrow(request, { - unrecognizedObjectKeys: "strip", - }), + queryParameters: _queryParams, timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 180000, maxRetries: requestOptions?.maxRetries, }); if (_response.ok) { - return; + return await serializers.servers.DestroyServerResponse.parseOrThrow(_response.body, { + unrecognizedObjectKeys: "passthrough", + allowUnrecognizedUnionMembers: true, + allowUnrecognizedEnumValues: true, + skipValidation: true, + breadcrumbsPrefix: ["response"], + }); } if (_response.error.reason === "status-code") { diff --git a/sdks/full/typescript/src/api/resources/servers/resources/servers/client/index.ts b/sdks/full/typescript/src/api/resources/servers/resources/servers/client/index.ts index cb0ff5c3b..415726b7f 100644 --- a/sdks/full/typescript/src/api/resources/servers/resources/servers/client/index.ts +++ b/sdks/full/typescript/src/api/resources/servers/resources/servers/client/index.ts @@ -1 +1 @@ -export {}; +export * from "./requests"; diff --git a/sdks/full/typescript/src/api/resources/servers/resources/servers/client/requests/DestroyServerRequest.ts b/sdks/full/typescript/src/api/resources/servers/resources/servers/client/requests/DestroyServerRequest.ts new file mode 100644 index 000000000..bb5096797 --- /dev/null +++ b/sdks/full/typescript/src/api/resources/servers/resources/servers/client/requests/DestroyServerRequest.ts @@ -0,0 +1,10 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ + +export interface DestroyServerRequest { + /** + * The duration to wait for in milliseconds before killing the server. This should be used to override the default kill timeout if a faster time is needed, say for ignoring a graceful shutdown. + */ + overrideKillTimeout?: number; +} diff --git a/sdks/full/typescript/src/api/resources/servers/resources/servers/client/requests/index.ts b/sdks/full/typescript/src/api/resources/servers/resources/servers/client/requests/index.ts new file mode 100644 index 000000000..3544628de --- /dev/null +++ b/sdks/full/typescript/src/api/resources/servers/resources/servers/client/requests/index.ts @@ -0,0 +1 @@ +export { DestroyServerRequest } from "./DestroyServerRequest"; diff --git a/sdks/full/typescript/src/serialization/resources/cloud/resources/games/resources/tokens/types/index.ts b/sdks/full/typescript/src/serialization/resources/cloud/resources/games/resources/tokens/types/index.ts index c6eb67fbb..3f81f4869 100644 --- a/sdks/full/typescript/src/serialization/resources/cloud/resources/games/resources/tokens/types/index.ts +++ b/sdks/full/typescript/src/serialization/resources/cloud/resources/games/resources/tokens/types/index.ts @@ -1 +1,2 @@ export * from "./CreateCloudTokenResponse"; +export * from "./CreateServiceTokenResponse"; diff --git a/sdks/full/typescript/src/serialization/resources/index.ts b/sdks/full/typescript/src/serialization/resources/index.ts index f134c5d8f..161ae88c7 100644 --- a/sdks/full/typescript/src/serialization/resources/index.ts +++ b/sdks/full/typescript/src/serialization/resources/index.ts @@ -4,7 +4,6 @@ export * as group from "./group"; export * as identity from "./identity"; export * as kv from "./kv"; export * as provision from "./provision"; -export * as servers from "./servers"; export * as auth from "./auth"; export * as captcha from "./captcha"; export * as common from "./common"; @@ -13,4 +12,5 @@ export * as game from "./game"; export * as geo from "./geo"; export * as matchmaker from "./matchmaker"; export * as portal from "./portal"; +export * as servers from "./servers"; export * as upload from "./upload"; diff --git a/sdks/full/typescript/src/serialization/resources/servers/resources/images/index.ts b/sdks/full/typescript/src/serialization/resources/servers/resources/images/index.ts deleted file mode 100644 index eea524d65..000000000 --- a/sdks/full/typescript/src/serialization/resources/servers/resources/images/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./types"; diff --git a/sdks/full/typescript/src/serialization/resources/servers/resources/index.ts b/sdks/full/typescript/src/serialization/resources/servers/resources/index.ts index 49399b658..f01c55dfb 100644 --- a/sdks/full/typescript/src/serialization/resources/servers/resources/index.ts +++ b/sdks/full/typescript/src/serialization/resources/servers/resources/index.ts @@ -1,4 +1,4 @@ -export * as images from "./images"; -export * as servers from "./servers"; export * as common from "./common"; export * from "./common/types"; +export * as servers from "./servers"; +export * from "./servers/types"; diff --git a/sdks/full/typescript/types/Client.d.ts b/sdks/full/typescript/types/Client.d.ts index 86cfc68ef..3863cc287 100644 --- a/sdks/full/typescript/types/Client.d.ts +++ b/sdks/full/typescript/types/Client.d.ts @@ -9,8 +9,8 @@ import { Group } from "./api/resources/group/client/Client"; import { Identity } from "./api/resources/identity/client/Client"; import { Kv } from "./api/resources/kv/client/Client"; import { Provision } from "./api/resources/provision/client/Client"; -import { Servers } from "./api/resources/servers/client/Client"; import { Auth } from "./api/resources/auth/client/Client"; +import { DynamicServers } from "./api/resources/dynamicServers/client/Client"; import { Job } from "./api/resources/job/client/Client"; import { Matchmaker } from "./api/resources/matchmaker/client/Client"; import { Portal } from "./api/resources/portal/client/Client"; @@ -40,10 +40,10 @@ export declare class RivetClient { get kv(): Kv; protected _provision: Provision | undefined; get provision(): Provision; - protected _servers: Servers | undefined; - get servers(): Servers; protected _auth: Auth | undefined; get auth(): Auth; + protected _dynamicServers: DynamicServers | undefined; + get dynamicServers(): DynamicServers; protected _job: Job | undefined; get job(): Job; protected _matchmaker: Matchmaker | undefined; diff --git a/sdks/full/typescript/types/api/resources/cloud/resources/games/resources/tokens/client/Client.d.ts b/sdks/full/typescript/types/api/resources/cloud/resources/games/resources/tokens/client/Client.d.ts index 9a28e6ccf..b707b6f12 100644 --- a/sdks/full/typescript/types/api/resources/cloud/resources/games/resources/tokens/client/Client.d.ts +++ b/sdks/full/typescript/types/api/resources/cloud/resources/games/resources/tokens/client/Client.d.ts @@ -28,5 +28,15 @@ export declare class Tokens { * @throws {@link Rivet.BadRequestError} */ createCloudToken(gameId: string, requestOptions?: Tokens.RequestOptions): Promise; + /** + * Creates a new game service token. + * @throws {@link Rivet.InternalError} + * @throws {@link Rivet.RateLimitError} + * @throws {@link Rivet.ForbiddenError} + * @throws {@link Rivet.UnauthorizedError} + * @throws {@link Rivet.NotFoundError} + * @throws {@link Rivet.BadRequestError} + */ + createServiceToken(gameId: string, requestOptions?: Tokens.RequestOptions): Promise; protected _getAuthorizationHeader(): Promise; } diff --git a/sdks/full/typescript/types/api/resources/cloud/resources/games/resources/tokens/types/CreateServiceTokenResponse.d.ts b/sdks/full/typescript/types/api/resources/cloud/resources/games/resources/tokens/types/CreateServiceTokenResponse.d.ts index 113b8f0ff..c60fec3cc 100644 --- a/sdks/full/typescript/types/api/resources/cloud/resources/games/resources/tokens/types/CreateServiceTokenResponse.d.ts +++ b/sdks/full/typescript/types/api/resources/cloud/resources/games/resources/tokens/types/CreateServiceTokenResponse.d.ts @@ -2,10 +2,6 @@ * This file was auto-generated by Fern from our API Definition. */ export interface CreateServiceTokenResponse { - /** - * A JSON Web Token. - * Slightly modified to include a description prefix and use Protobufs of - * JSON. - */ + /** A JSON Web Token. */ token: string; } diff --git a/sdks/full/typescript/types/api/resources/cloud/resources/games/resources/tokens/types/index.d.ts b/sdks/full/typescript/types/api/resources/cloud/resources/games/resources/tokens/types/index.d.ts index c6eb67fbb..3f81f4869 100644 --- a/sdks/full/typescript/types/api/resources/cloud/resources/games/resources/tokens/types/index.d.ts +++ b/sdks/full/typescript/types/api/resources/cloud/resources/games/resources/tokens/types/index.d.ts @@ -1 +1,2 @@ export * from "./CreateCloudTokenResponse"; +export * from "./CreateServiceTokenResponse"; diff --git a/sdks/full/typescript/types/api/resources/index.d.ts b/sdks/full/typescript/types/api/resources/index.d.ts index 398942765..b4ec96fd8 100644 --- a/sdks/full/typescript/types/api/resources/index.d.ts +++ b/sdks/full/typescript/types/api/resources/index.d.ts @@ -4,11 +4,11 @@ export * as group from "./group"; export * as identity from "./identity"; export * as kv from "./kv"; export * as provision from "./provision"; -export * as servers from "./servers"; export * as auth from "./auth"; export * as captcha from "./captcha"; export * as common from "./common"; export * from "./common/types"; +export * as dynamicServers from "./dynamicServers"; export * as game from "./game"; export * as geo from "./geo"; export * as matchmaker from "./matchmaker"; diff --git a/sdks/full/typescript/types/serialization/resources/cloud/resources/games/resources/tokens/types/index.d.ts b/sdks/full/typescript/types/serialization/resources/cloud/resources/games/resources/tokens/types/index.d.ts index c6eb67fbb..3f81f4869 100644 --- a/sdks/full/typescript/types/serialization/resources/cloud/resources/games/resources/tokens/types/index.d.ts +++ b/sdks/full/typescript/types/serialization/resources/cloud/resources/games/resources/tokens/types/index.d.ts @@ -1 +1,2 @@ export * from "./CreateCloudTokenResponse"; +export * from "./CreateServiceTokenResponse"; diff --git a/sdks/full/typescript/types/serialization/resources/index.d.ts b/sdks/full/typescript/types/serialization/resources/index.d.ts index f134c5d8f..85133b274 100644 --- a/sdks/full/typescript/types/serialization/resources/index.d.ts +++ b/sdks/full/typescript/types/serialization/resources/index.d.ts @@ -4,11 +4,11 @@ export * as group from "./group"; export * as identity from "./identity"; export * as kv from "./kv"; export * as provision from "./provision"; -export * as servers from "./servers"; export * as auth from "./auth"; export * as captcha from "./captcha"; export * as common from "./common"; export * from "./common/types"; +export * as dynamicServers from "./dynamicServers"; export * as game from "./game"; export * as geo from "./geo"; export * as matchmaker from "./matchmaker"; diff --git a/sdks/runtime/typescript/archive.tgz b/sdks/runtime/typescript/archive.tgz index 11241532e..46eef25cf 100644 --- a/sdks/runtime/typescript/archive.tgz +++ b/sdks/runtime/typescript/archive.tgz @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1eaee83e99d3ccfde63b6ee259ae44a56c5552694ad3d06d5451f9f74b66a566 -size 373104 +oid sha256:4fc74b5397e25b115486586e81eff6ec5e386dfcfe2dc78a169dbfb427e36fac +size 373103 diff --git a/svc/Cargo.lock b/svc/Cargo.lock new file mode 100644 index 000000000..e99ee2169 --- /dev/null +++ b/svc/Cargo.lock @@ -0,0 +1,10736 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "acme-lib" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bcfe879d8669cfe09f2dd1bef4dc8cb232ca7b9ce46f4621cda9e7cc729cf73" +dependencies = [ + "base64 0.21.7", + "lazy_static", + "log", + "openssl", + "serde", + "serde_json", + "time 0.1.45", + "ureq", +] + +[[package]] +name = "addr2line" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "ahash" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" +dependencies = [ + "getrandom", + "once_cell", + "version_check", +] + +[[package]] +name = "ahash" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +dependencies = [ + "cfg-if", + "getrandom", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "allocator-api2" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anyhow" +version = "1.0.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25bdb32cbbdce2b519a9cd7df3a678443100e265d5e25ca763b7572a5104f5f3" + +[[package]] +name = "api-admin" +version = "0.0.1" +dependencies = [ + "api-helper", + "async-trait", + "async_once", + "chirp-client", + "chirp-workflow", + "chrono", + "cluster-datacenter-get", + "cluster-datacenter-list", + "cluster-datacenter-resolve-for-name-id", + "cluster-get", + "cluster-list", + "cluster-server-destroy-with-filter", + "cluster-server-get", + "cluster-server-list", + "http 0.2.12", + "hyper", + "lazy_static", + "prost 0.10.4", + "reqwest", + "rivet-api", + "rivet-cache", + "rivet-claims", + "rivet-connection", + "rivet-convert", + "rivet-health-checks", + "rivet-matchmaker", + "rivet-operation", + "rivet-pools", + "rivet-util-cluster", + "rivet-util-mm", + "s3-util", + "serde", + "serde_json", + "thiserror", + "token-create", + "tokio", + "tracing", + "tracing-futures", + "tracing-subscriber", + "url", + "uuid", +] + +[[package]] +name = "api-auth" +version = "0.0.1" +dependencies = [ + "api-helper", + "async-trait", + "captcha-verify", + "chirp-client", + "chrono", + "debug-email-res", + "email-verification-complete", + "email-verification-create", + "faker-user", + "headers", + "http 0.2.12", + "hyper", + "lazy_static", + "prost 0.10.4", + "rivet-api", + "rivet-auth", + "rivet-auth-server", + "rivet-cache", + "rivet-claims", + "rivet-connection", + "rivet-convert", + "rivet-health-checks", + "rivet-operation", + "rivet-pools", + "serde", + "serde_json", + "thiserror", + "token-create", + "token-revoke", + "tokio", + "tracing", + "tracing-subscriber", + "url", + "user-get", + "user-identity-create", + "user-identity-get", + "user-presence-touch", + "user-resolve-access-token", + "user-resolve-email", + "user-token-create", + "uuid", +] + +[[package]] +name = "api-cf-verification" +version = "0.0.1" +dependencies = [ + "api-helper", + "async-trait", + "bytes", + "cf-custom-hostname-get", + "chirp-client", + "chrono", + "faker-game", + "http 0.2.12", + "hyper", + "lazy_static", + "prost 0.10.4", + "rivet-cache", + "rivet-cf-verification", + "rivet-cf-verification-server", + "rivet-claims", + "rivet-connection", + "rivet-health-checks", + "rivet-operation", + "rivet-pools", + "serde", + "serde_json", + "thiserror", + "tokio", + "tracing", + "tracing-subscriber", + "url", + "uuid", +] + +[[package]] +name = "api-cloud" +version = "0.0.1" +dependencies = [ + "api-helper", + "async-trait", + "base64 0.13.1", + "build-create", + "build-get", + "build-list-for-game", + "bytes", + "cdn-namespace-auth-user-remove", + "cdn-namespace-auth-user-update", + "cdn-namespace-domain-create", + "cdn-namespace-domain-remove", + "cdn-ns-auth-type-set", + "cdn-ns-enable-domain-public-auth-set", + "cdn-site-create", + "cdn-site-get", + "cdn-site-list-for-game", + "cf-custom-hostname-list-for-namespace-id", + "chirp-client", + "chrono", + "cloud-device-link-create", + "cloud-game-config-create", + "cloud-game-config-get", + "cloud-game-token-create", + "cloud-namespace-create", + "cloud-namespace-get", + "cloud-namespace-token-development-create", + "cloud-namespace-token-public-create", + "cloud-version-get", + "cloud-version-publish", + "cluster-datacenter-list", + "custom-user-avatar-list-for-game", + "custom-user-avatar-upload-complete", + "faker-region", + "faker-team", + "futures-util", + "game-banner-upload-complete", + "game-create", + "game-get", + "game-list-for-team", + "game-logo-upload-complete", + "game-namespace-create", + "game-namespace-get", + "game-namespace-list", + "game-namespace-validate", + "game-namespace-version-history-list", + "game-namespace-version-set", + "game-resolve-namespace-id", + "game-token-development-validate", + "game-validate", + "game-version-get", + "game-version-list", + "game-version-validate", + "http 0.2.12", + "hyper", + "job-log-read", + "job-run-get", + "job-run-metrics-log", + "lazy_static", + "mm-config-lobby-group-get", + "mm-config-lobby-group-resolve-version", + "mm-config-namespace-config-set", + "mm-config-namespace-config-validate", + "mm-config-version-get", + "mm-lobby-get", + "mm-lobby-history", + "mm-lobby-list-for-namespace", + "mm-lobby-player-count", + "mm-lobby-runtime-aggregate", + "mm-player-count-for-namespace", + "perf-log-get", + "prost 0.10.4", + "rand", + "region-get", + "region-list-for-game", + "reqwest", + "rivet-api", + "rivet-cache", + "rivet-claims", + "rivet-connection", + "rivet-convert", + "rivet-health-checks", + "rivet-operation", + "rivet-pools", + "rivet-util-cluster", + "rivet-util-job", + "rivet-util-mm", + "rivet-util-nsfw", + "rivet-util-team", + "s3-util", + "serde", + "serde_json", + "team-get", + "team-member-count", + "team-validate", + "thiserror", + "tier-list", + "token-create", + "token-revoke", + "tokio", + "tracing", + "tracing-subscriber", + "upload-complete", + "upload-file-list", + "upload-get", + "upload-prepare", + "url", + "user-get", + "user-identity-create", + "user-identity-get", + "user-team-list", + "uuid", +] + +[[package]] +name = "api-group" +version = "0.0.1" +dependencies = [ + "api-helper", + "async-trait", + "chirp-client", + "chrono", + "faker-user", + "futures-util", + "game-get", + "game-resolve-namespace-id", + "http 0.2.12", + "hyper", + "lazy_static", + "prost 0.10.4", + "rand", + "rivet-api", + "rivet-cache", + "rivet-claims", + "rivet-connection", + "rivet-convert", + "rivet-group", + "rivet-group-server", + "rivet-health-checks", + "rivet-operation", + "rivet-pools", + "rivet-util-nsfw", + "serde", + "serde_json", + "team-avatar-upload-complete", + "team-get", + "team-invite-get", + "team-join-request-list", + "team-member-count", + "team-member-list", + "team-profile-validate", + "team-recommend", + "team-search", + "team-user-ban-get", + "team-user-ban-list", + "thiserror", + "token-revoke", + "tokio", + "tracing", + "tracing-subscriber", + "upload-prepare", + "url", + "user-follow-get", + "user-get", + "user-identity-get", + "user-presence-get", + "user-team-list", + "user-token-create", + "uuid", +] + +[[package]] +name = "api-helper" +version = "0.1.0" +dependencies = [ + "api-helper-macros", + "async-trait", + "chirp-client", + "chirp-workflow", + "chrono", + "formatted-error", + "futures-util", + "global-error", + "headers", + "http 0.2.12", + "hyper", + "lazy_static", + "prost 0.10.4", + "regex", + "rivet-api", + "rivet-cache", + "rivet-claims", + "rivet-connection", + "rivet-health-checks", + "rivet-metrics", + "rivet-operation", + "rivet-pools", + "rivet-runtime", + "rivet-util", + "serde", + "serde_array_query", + "serde_json", + "thiserror", + "tokio", + "tracing", + "tracing-subscriber", + "types", + "url", + "uuid", +] + +[[package]] +name = "api-helper-macros" +version = "0.1.0" +dependencies = [ + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "api-identity" +version = "0.0.1" +dependencies = [ + "api-helper", + "async-trait", + "cdn-namespace-domain-create", + "cdn-namespace-get", + "chirp-client", + "cloud-namespace-token-development-create", + "faker-build", + "faker-game", + "faker-game-namespace", + "faker-game-version", + "faker-region", + "faker-user", + "futures-util", + "game-get", + "game-namespace-get", + "game-namespace-resolve-url", + "game-resolve-namespace-id", + "game-user-create", + "game-user-get", + "game-user-link-create", + "game-user-link-get", + "game-user-recent-session-list", + "game-user-recommend", + "http 0.2.12", + "hyper", + "identity-config-version-get", + "job-run-get", + "lazy_static", + "mm-config-lobby-group-resolve-version", + "mm-config-version-get", + "mm-lobby-get", + "prost 0.10.4", + "rand", + "regex", + "region-get", + "rivet-api", + "rivet-cache", + "rivet-claims", + "rivet-connection", + "rivet-convert", + "rivet-health-checks", + "rivet-identity", + "rivet-operation", + "rivet-pools", + "rivet-util-game-user", + "rivet-util-mm", + "rivet-util-nsfw", + "serde", + "serde_json", + "team-recommend", + "thiserror", + "token-create", + "token-get", + "token-revoke", + "tokio", + "tracing", + "tracing-subscriber", + "upload-prepare", + "url", + "user-avatar-upload-complete", + "user-follow-list", + "user-follow-request-list", + "user-follow-toggle", + "user-get", + "user-identity-get", + "user-mutual-friend-list", + "user-pending-delete-toggle", + "user-presence-touch", + "user-profile-validate", + "user-search", + "uuid", +] + +[[package]] +name = "api-internal-monolith" +version = "0.0.1" +dependencies = [ + "api-helper", + "api-provision", + "api-traefik-provider", + "async-trait", + "chirp-client", + "http 0.2.12", + "hyper", + "rivet-operation", + "tokio", + "tracing", + "tracing-subscriber", + "url", +] + +[[package]] +name = "api-job" +version = "0.0.1" +dependencies = [ + "api-helper", + "async-trait", + "chirp-client", + "chrono", + "faker-job-run", + "http 0.2.12", + "hyper", + "job-run-get", + "lazy_static", + "nomad-client", + "nomad-util", + "prost 0.10.4", + "reqwest", + "rivet-cache", + "rivet-claims", + "rivet-connection", + "rivet-health-checks", + "rivet-job", + "rivet-job-server", + "rivet-operation", + "rivet-pools", + "serde", + "serde_json", + "thiserror", + "token-create", + "tokio", + "tracing", + "tracing-subscriber", + "url", + "uuid", +] + +[[package]] +name = "api-kv" +version = "0.0.1" +dependencies = [ + "api-helper", + "async-trait", + "chirp-client", + "chrono", + "cloud-game-token-create", + "faker-build", + "faker-game", + "faker-game-namespace", + "faker-game-version", + "faker-region", + "futures-util", + "game-get", + "game-namespace-get", + "game-user-get", + "http 0.2.12", + "hyper", + "kv-config-version-get", + "kv-get", + "kv-list", + "lazy_static", + "mm-lobby-get", + "prost 0.10.4", + "rand", + "regex", + "region-get", + "reqwest", + "rivet-api", + "rivet-cache", + "rivet-claims", + "rivet-connection", + "rivet-convert", + "rivet-health-checks", + "rivet-kv", + "rivet-operation", + "rivet-pools", + "rivet-util-kv", + "rivet-util-mm", + "serde", + "serde_json", + "thiserror", + "token-create", + "token-revoke", + "tokio", + "tracing", + "tracing-subscriber", + "url", + "urlencoding", + "user-get", + "user-identity-get", + "user-team-list", + "uuid", +] + +[[package]] +name = "api-matchmaker" +version = "0.0.1" +dependencies = [ + "api-helper", + "async-trait", + "bytes", + "captcha-hcaptcha-config-get", + "captcha-request", + "captcha-turnstile-config-get", + "captcha-verify", + "cdn-namespace-domain-create", + "cdn-namespace-get", + "chirp-client", + "chrono", + "cloud-namespace-token-development-create", + "cloud-namespace-token-public-create", + "faker-build", + "faker-game", + "faker-game-namespace", + "faker-game-version", + "faker-region", + "game-get", + "game-namespace-get", + "game-namespace-resolve-url", + "game-resolve-namespace-id", + "game-user-get", + "http 0.2.12", + "hyper", + "job-run-get", + "lazy_static", + "mm-config-lobby-group-resolve-version", + "mm-config-version-get", + "mm-dev-player-token-create", + "mm-lobby-get", + "mm-lobby-list-for-namespace", + "mm-lobby-player-count", + "mm-lobby-state-get", + "prost 0.10.4", + "region-get", + "region-recommend", + "region-resolve-for-game", + "reqwest", + "rivet-api", + "rivet-cache", + "rivet-claims", + "rivet-connection", + "rivet-convert", + "rivet-health-checks", + "rivet-matchmaker-server", + "rivet-operation", + "rivet-pools", + "rivet-util-job", + "rivet-util-mm", + "serde", + "serde_json", + "thiserror", + "token-create", + "token-revoke", + "tokio", + "tracing", + "tracing-subscriber", + "url", + "user-identity-get", + "uuid", +] + +[[package]] +name = "api-monolith" +version = "0.0.1" +dependencies = [ + "api-admin", + "api-auth", + "api-cf-verification", + "api-cloud", + "api-group", + "api-helper", + "api-identity", + "api-job", + "api-kv", + "api-matchmaker", + "api-portal", + "api-servers", + "api-status", + "async-trait", + "chirp-client", + "http 0.2.12", + "hyper", + "rivet-operation", + "tokio", + "tracing", + "tracing-subscriber", + "url", +] + +[[package]] +name = "api-portal" +version = "0.0.1" +dependencies = [ + "api-helper", + "async-trait", + "chirp-client", + "chrono", + "faker-user", + "futures-util", + "game-get", + "game-resolve-name-id", + "http 0.2.12", + "hyper", + "lazy_static", + "prost 0.10.4", + "rand", + "regex", + "rivet-cache", + "rivet-claims", + "rivet-connection", + "rivet-convert", + "rivet-health-checks", + "rivet-operation", + "rivet-pools", + "rivet-portal", + "rivet-portal-server", + "serde", + "serde_json", + "team-get", + "team-member-count", + "thiserror", + "token-revoke", + "tokio", + "tracing", + "tracing-subscriber", + "url", + "user-get", + "user-team-list", + "user-token-create", + "uuid", +] + +[[package]] +name = "api-provision" +version = "0.0.1" +dependencies = [ + "api-helper", + "async-trait", + "chirp-client", + "chrono", + "cluster-datacenter-get", + "cluster-datacenter-tls-get", + "cluster-server-get", + "cluster-server-resolve-for-ip", + "http 0.2.12", + "hyper", + "lazy_static", + "prost 0.10.4", + "rivet-api", + "rivet-cache", + "rivet-claims", + "rivet-health-checks", + "rivet-operation", + "rivet-pools", + "rivet-util-cluster", + "serde", + "serde_json", + "thiserror", + "tokio", + "tracing", + "tracing-subscriber", + "url", + "uuid", +] + +[[package]] +name = "api-servers" +version = "0.0.1" +dependencies = [ + "api-helper", + "chirp-client", + "chrono", + "cluster-datacenter-get", + "cluster-datacenter-list", + "cluster-datacenter-resolve-for-name-id", + "cluster-get", + "cluster-get-for-game", + "cluster-list", + "cluster-resolve-for-name-id", + "ds-server-create", + "ds-server-delete", + "http 0.2.12", + "hyper", + "rivet-api", + "rivet-cache", + "rivet-claims", + "rivet-connection", + "rivet-convert", + "rivet-health-checks", + "rivet-operation", + "rivet-pools", + "s3-util", + "serde", + "serde_json", + "tokio", + "tracing", + "tracing-futures", + "tracing-subscriber", + "url", + "uuid", +] + +[[package]] +name = "api-status" +version = "0.0.1" +dependencies = [ + "api-helper", + "async-trait", + "async_once", + "chirp-client", + "chrono", + "faker-region", + "futures-util", + "game-namespace-resolve-name-id", + "game-resolve-name-id", + "http 0.2.12", + "hyper", + "lazy_static", + "prost 0.10.4", + "regex", + "reqwest", + "rivet-api", + "rivet-cache", + "rivet-claims", + "rivet-connection", + "rivet-health-checks", + "rivet-matchmaker", + "rivet-operation", + "rivet-pools", + "rivet-status", + "rivet-status-server", + "rivet-util-kv", + "s3-util", + "serde", + "serde_json", + "thiserror", + "token-create", + "tokio", + "tokio-tungstenite", + "tracing", + "tracing-subscriber", + "trust-dns-resolver", + "url", + "urlencoding", + "uuid", +] + +[[package]] +name = "api-traefik-provider" +version = "0.0.1" +dependencies = [ + "api-helper", + "async-trait", + "async_once", + "base64 0.13.1", + "cdn-namespace-auth-user-update", + "cdn-namespace-domain-create", + "chirp-client", + "chrono", + "cluster-server-list", + "faker-cdn-site", + "faker-game", + "faker-game-namespace", + "faker-game-version", + "faker-job-run", + "faker-region", + "game-get", + "http 0.2.12", + "hyper", + "lazy_static", + "prost 0.10.4", + "reqwest", + "rivet-cache", + "rivet-claims", + "rivet-connection", + "rivet-convert", + "rivet-health-checks", + "rivet-operation", + "rivet-pools", + "rivet-route", + "rivet-util-cdn", + "rivet-util-job", + "s3-util", + "serde", + "serde_json", + "thiserror", + "tokio", + "tracing", + "tracing-subscriber", + "url", + "uuid", +] + +[[package]] +name = "arc-swap" +version = "1.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" + +[[package]] +name = "arrayref" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" + +[[package]] +name = "arrayvec" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" + +[[package]] +name = "async-nats" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbc1f1a75fd07f0f517322d103211f12d757658e91676def9a2e688774656c60" +dependencies = [ + "base64 0.21.7", + "bytes", + "futures", + "http 0.2.12", + "memchr", + "nkeys", + "nuid", + "once_cell", + "rand", + "regex", + "ring 0.17.8", + "rustls 0.21.10", + "rustls-native-certs 0.6.3", + "rustls-pemfile", + "rustls-webpki 0.101.7", + "serde", + "serde_json", + "serde_nanos", + "serde_repr", + "thiserror", + "time 0.3.34", + "tokio", + "tokio-retry", + "tokio-rustls 0.24.1", + "tracing", + "url", +] + +[[package]] +name = "async-posthog" +version = "0.2.3" +source = "git+https://github.com/rivet-gg/posthog-rs.git?rev=ef4e80e#ef4e80e57747ea7204794bce9a103bfeccefabf1" +dependencies = [ + "posthog-core", + "reqwest", + "serde", + "serde_json", + "thiserror", + "tokio", +] + +[[package]] +name = "async-trait" +version = "0.1.80" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.58", +] + +[[package]] +name = "async_once" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ce4f10ea3abcd6617873bae9f91d1c5332b4a778bd9ce34d0cd517474c1de82" + +[[package]] +name = "atoi" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28d99ec8bfea296261ca1af174f24225171fea9664ba9003cbebee704810528" +dependencies = [ + "num-traits", +] + +[[package]] +name = "autocfg" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" + +[[package]] +name = "aws-endpoint" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "253d7cd480bfa59a5323390e9e91885a8f06a275e0517d81eeb1070b6aa7d271" +dependencies = [ + "aws-smithy-http 0.52.0", + "aws-smithy-types 0.52.0", + "aws-types", + "http 0.2.12", + "regex", + "tracing", +] + +[[package]] +name = "aws-http" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd1b83859383e46ea8fda633378f9f3f02e6e3a446fd89f0240b5c3662716c9" +dependencies = [ + "aws-smithy-http 0.52.0", + "aws-smithy-types 0.52.0", + "aws-types", + "bytes", + "http 0.2.12", + "http-body", + "lazy_static", + "percent-encoding", + "pin-project-lite", + "tracing", +] + +[[package]] +name = "aws-sdk-s3" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4d240ff751efc65099d18f6b0fb80360b31a298cec7b392c511692bec4a6e21" +dependencies = [ + "aws-endpoint", + "aws-http", + "aws-sig-auth", + "aws-sigv4", + "aws-smithy-async 0.52.0", + "aws-smithy-checksums", + "aws-smithy-client 0.52.0", + "aws-smithy-eventstream", + "aws-smithy-http 0.52.0", + "aws-smithy-http-tower 0.52.0", + "aws-smithy-types 0.52.0", + "aws-smithy-xml", + "aws-types", + "bytes", + "bytes-utils", + "fastrand 1.9.0", + "http 0.2.12", + "http-body", + "tokio-stream", + "tower", + "tracing", +] + +[[package]] +name = "aws-sig-auth" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6126c4ff918e35fb9ae1bf2de71157fad36f0cc6a2b1d0f7197ee711713700fc" +dependencies = [ + "aws-sigv4", + "aws-smithy-eventstream", + "aws-smithy-http 0.52.0", + "aws-types", + "http 0.2.12", + "tracing", +] + +[[package]] +name = "aws-sigv4" +version = "0.52.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd1ee2d9e6e268a77bdf3a0dc2cc8767401627e60abaa32883aaa3d8b47428e9" +dependencies = [ + "aws-smithy-eventstream", + "aws-smithy-http 0.52.0", + "bytes", + "form_urlencoded", + "hex", + "hmac", + "http 0.2.12", + "once_cell", + "percent-encoding", + "regex", + "sha2", + "time 0.3.34", + "tracing", +] + +[[package]] +name = "aws-smithy-async" +version = "0.41.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23dcbf7d119f514a627d236412626645c4378b126e30dc61db9de3e069fa1676" +dependencies = [ + "futures-util", + "pin-project-lite", + "tokio", + "tokio-stream", +] + +[[package]] +name = "aws-smithy-async" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e6a895d68852dd1564328e63ef1583e5eb307dd2a5ebf35d862a5c402957d5e" +dependencies = [ + "futures-util", + "pin-project-lite", + "tokio", + "tokio-stream", +] + +[[package]] +name = "aws-smithy-checksums" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b847d960abc993319d77b52e82971e2bbdce94f6192df42142e14ed5c9c917" +dependencies = [ + "aws-smithy-http 0.52.0", + "aws-smithy-types 0.52.0", + "bytes", + "crc32c", + "crc32fast", + "hex", + "http 0.2.12", + "http-body", + "md-5", + "pin-project-lite", + "sha1", + "sha2", + "tracing", +] + +[[package]] +name = "aws-smithy-client" +version = "0.41.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "511ac6c65f2a89cfcd74fe78aa6d07216095a53cbaeab493b17f6df82cd65b86" +dependencies = [ + "aws-smithy-async 0.41.0", + "aws-smithy-http 0.41.0", + "aws-smithy-http-tower 0.41.0", + "aws-smithy-types 0.41.0", + "bytes", + "fastrand 1.9.0", + "http 0.2.12", + "http-body", + "hyper", + "hyper-rustls 0.22.1", + "lazy_static", + "pin-project", + "pin-project-lite", + "tokio", + "tower", + "tracing", +] + +[[package]] +name = "aws-smithy-client" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f505bf793eb3e6d7c166ef1275c27b4b2cd5361173fe950ac8e2cfc08c29a7ef" +dependencies = [ + "aws-smithy-async 0.52.0", + "aws-smithy-http 0.52.0", + "aws-smithy-http-tower 0.52.0", + "aws-smithy-types 0.52.0", + "bytes", + "fastrand 1.9.0", + "http 0.2.12", + "http-body", + "hyper", + "hyper-rustls 0.23.2", + "lazy_static", + "pin-project-lite", + "tokio", + "tower", + "tracing", +] + +[[package]] +name = "aws-smithy-eventstream" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d751c99da757aecc1408ab6b2d65e9493220a5e7a68bcafa4f07b6fd1bc473f1" +dependencies = [ + "aws-smithy-types 0.52.0", + "bytes", + "crc32fast", +] + +[[package]] +name = "aws-smithy-http" +version = "0.41.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d800c8684fa567cdf1abd9654c7997b2a887e7b06022938756193472ec7ec251" +dependencies = [ + "aws-smithy-types 0.41.0", + "bytes", + "bytes-utils", + "futures-core", + "http 0.2.12", + "http-body", + "hyper", + "once_cell", + "percent-encoding", + "pin-project", + "tokio", + "tokio-util 0.6.10", + "tracing", +] + +[[package]] +name = "aws-smithy-http" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37e4b4304b7ea4af1af3e08535100eb7b6459d5a6264b92078bf85176d04ab85" +dependencies = [ + "aws-smithy-eventstream", + "aws-smithy-types 0.52.0", + "bytes", + "bytes-utils", + "futures-core", + "http 0.2.12", + "http-body", + "hyper", + "once_cell", + "percent-encoding", + "pin-project-lite", + "pin-utils", + "tokio", + "tokio-util 0.7.10", + "tracing", +] + +[[package]] +name = "aws-smithy-http-tower" +version = "0.41.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8017959786cce64e690214d303d062c97fcd38a68df7cb444255e534c9bbce49" +dependencies = [ + "aws-smithy-http 0.41.0", + "bytes", + "http 0.2.12", + "http-body", + "pin-project", + "tower", + "tracing", +] + +[[package]] +name = "aws-smithy-http-tower" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e86072ecc4dc4faf3e2071144285cfd539263fe7102b701d54fb991eafb04af8" +dependencies = [ + "aws-smithy-http 0.52.0", + "aws-smithy-types 0.52.0", + "bytes", + "http 0.2.12", + "http-body", + "pin-project-lite", + "tower", + "tracing", +] + +[[package]] +name = "aws-smithy-json" +version = "0.41.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3796e2a4a3b7d15db2fd5aec2de9220919332648f0a56a77b5c53caf4a9653fa" +dependencies = [ + "aws-smithy-types 0.41.0", +] + +[[package]] +name = "aws-smithy-types" +version = "0.41.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c7f957a2250cc0fa4ccf155e00aeac9a81f600df7cd4ecc910c75030e6534f5" +dependencies = [ + "itoa 1.0.11", + "num-integer", + "ryu", + "time 0.3.34", +] + +[[package]] +name = "aws-smithy-types" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "987b1e37febb9bd409ca0846e82d35299e572ad8279bc404778caeb5fc05ad56" +dependencies = [ + "base64-simd", + "itoa 1.0.11", + "num-integer", + "ryu", + "time 0.3.34", +] + +[[package]] +name = "aws-smithy-xml" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37ce3791e14eec75ffac851a5a559f1ce6b31843297f42cc8bfba82714a6a5d8" +dependencies = [ + "xmlparser", +] + +[[package]] +name = "aws-types" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c05adca3e2bcf686dd2c47836f216ab52ed7845c177d180c84b08522c1166a3" +dependencies = [ + "aws-smithy-async 0.52.0", + "aws-smithy-client 0.52.0", + "aws-smithy-http 0.52.0", + "aws-smithy-types 0.52.0", + "http 0.2.12", + "rustc_version", + "tracing", + "zeroize", +] + +[[package]] +name = "axum" +version = "0.6.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf" +dependencies = [ + "async-trait", + "axum-core", + "bitflags 1.3.2", + "bytes", + "futures-util", + "http 0.2.12", + "http-body", + "hyper", + "itoa 1.0.11", + "matchit", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "rustversion", + "serde", + "sync_wrapper", + "tower", + "tower-layer", + "tower-service", +] + +[[package]] +name = "axum-core" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c" +dependencies = [ + "async-trait", + "bytes", + "futures-util", + "http 0.2.12", + "http-body", + "mime", + "rustversion", + "tower-layer", + "tower-service", +] + +[[package]] +name = "backtrace" +version = "0.3.71" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" +dependencies = [ + "addr2line", + "cc", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] + +[[package]] +name = "base16ct" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + +[[package]] +name = "base64-simd" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "781dd20c3aff0bd194fe7d2a977dd92f21c173891f3a03b677359e5fa457e5d5" +dependencies = [ + "simd-abstraction", +] + +[[package]] +name = "base64ct" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" + +[[package]] +name = "bcrypt" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7e7c93a3fb23b2fdde989b2c9ec4dd153063ec81f408507f84c090cd91c6641" +dependencies = [ + "base64 0.13.1", + "blowfish", + "getrandom", + "zeroize", +] + +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" +dependencies = [ + "serde", +] + +[[package]] +name = "blake3" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30cca6d3674597c30ddf2c587bf8d9d65c9a84d2326d941cc79c9842dfe0ef52" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "blowfish" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e412e2cd0f2b2d93e02543ceae7917b3c70331573df19ee046bcbc35e45e87d7" +dependencies = [ + "byteorder", + "cipher", +] + +[[package]] +name = "bolt-config" +version = "0.1.0" +dependencies = [ + "heck 0.3.3", + "serde", + "serde_json", + "strum 0.25.0", + "strum_macros 0.25.3", + "toml 0.7.8", + "uuid", +] + +[[package]] +name = "bstr" +version = "1.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05efc5cfd9110c8416e471df0e96702d58690178e206e61b7173706673c93706" +dependencies = [ + "memchr", +] + +[[package]] +name = "build-create" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-build", + "faker-game", + "faker-user", + "game-get", + "prost 0.10.4", + "reqwest", + "rivet-operation", + "rivet-util-build", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "upload-complete", + "upload-get", + "upload-prepare", +] + +[[package]] +name = "build-default-create" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "futures-util", + "indoc 1.0.9", + "prost 0.10.4", + "reqwest", + "rivet-connection", + "rivet-operation", + "rivet-pools", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "tokio", + "tracing", + "tracing-logfmt", + "tracing-subscriber", + "upload-complete", + "upload-prepare", + "uuid", +] + +[[package]] +name = "build-get" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-build", + "faker-game", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "build-list-for-game" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-build", + "faker-game", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "bumpalo" +version = "3.15.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ff69b9dd49fd426c69a0db9fc04dd934cdb6645ff000864d98f7e2af8830eaa" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" +dependencies = [ + "serde", +] + +[[package]] +name = "bytes-utils" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dafe3a8757b027e2be6e4e5601ed563c55989fcf1546e933c66c8eb3a058d35" +dependencies = [ + "bytes", + "either", +] + +[[package]] +name = "camino" +version = "1.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0ec6b951b160caa93cc0c7b209e5a3bff7aae9062213451ac99493cd844c239" + +[[package]] +name = "captcha-hcaptcha-config-get" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "rivet-operation", + "rivet-util-captcha", +] + +[[package]] +name = "captcha-hcaptcha-verify" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "reqwest", + "rivet-operation", + "serde", +] + +[[package]] +name = "captcha-request" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "chrono", + "prost 0.10.4", + "rivet-operation", + "rivet-util-captcha", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "captcha-turnstile-config-get" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "rivet-operation", + "rivet-util-captcha", +] + +[[package]] +name = "captcha-turnstile-verify" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "reqwest", + "rivet-operation", + "serde", +] + +[[package]] +name = "captcha-verify" +version = "0.0.1" +dependencies = [ + "captcha-hcaptcha-config-get", + "captcha-hcaptcha-verify", + "captcha-request", + "captcha-turnstile-verify", + "chirp-client", + "chirp-worker", + "chrono", + "prost 0.10.4", + "reqwest", + "rivet-operation", + "rivet-util-captcha", + "serde_json", +] + +[[package]] +name = "cc" +version = "1.0.90" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cd6604a82acf3039f1144f54b8eb34e91ffba622051189e71b781822d5ee1f5" + +[[package]] +name = "cdn-namespace-auth-user-remove" +version = "0.0.1" +dependencies = [ + "cdn-namespace-auth-user-update", + "cdn-namespace-create", + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "cdn-namespace-auth-user-update" +version = "0.0.1" +dependencies = [ + "cdn-namespace-create", + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "cdn-namespace-create" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "cdn-namespace-domain-create" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-game", + "game-get", + "game-resolve-namespace-id", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "cdn-namespace-domain-remove" +version = "0.0.1" +dependencies = [ + "cdn-namespace-domain-create", + "chirp-client", + "chirp-worker", + "faker-game", + "game-get", + "game-resolve-namespace-id", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "cdn-namespace-get" +version = "0.0.1" +dependencies = [ + "cdn-namespace-create", + "cdn-namespace-domain-create", + "cdn-namespace-get", + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "cdn-namespace-resolve-domain" +version = "0.0.1" +dependencies = [ + "cdn-namespace-domain-create", + "chirp-client", + "chirp-worker", + "faker-game", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "cdn-ns-auth-type-set" +version = "0.0.1" +dependencies = [ + "cdn-namespace-create", + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "cdn-ns-enable-domain-public-auth-set" +version = "0.0.1" +dependencies = [ + "cdn-namespace-create", + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "cdn-site-create" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-game", + "game-get", + "prost 0.10.4", + "reqwest", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "upload-complete", + "upload-get", + "upload-prepare", +] + +[[package]] +name = "cdn-site-get" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-cdn-site", + "faker-game", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "cdn-site-list-for-game" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-cdn-site", + "faker-game", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "cdn-version-get" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-game", + "faker-game-version", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "cdn-version-prepare" +version = "0.0.1" +dependencies = [ + "cdn-site-get", + "chirp-client", + "chirp-worker", + "faker-cdn-site", + "faker-game", + "prost 0.10.4", + "rivet-operation", + "upload-get", +] + +[[package]] +name = "cdn-version-publish" +version = "0.0.1" +dependencies = [ + "cdn-version-get", + "chirp-client", + "chirp-worker", + "faker-cdn-site", + "faker-game", + "itertools 0.10.5", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "unzip-n", +] + +[[package]] +name = "cdn-worker" +version = "0.0.1" +dependencies = [ + "cdn-namespace-get", + "cdn-site-get", + "cdn-version-get", + "chirp-client", + "chirp-worker", + "game-get", + "game-namespace-get", + "rivet-health-checks", + "rivet-metrics", + "rivet-runtime", + "rivet-util-cdn", + "upload-get", +] + +[[package]] +name = "censor" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5563d2728feef9a6186acdd148bccbe850dad63c5ba55a3b3355abc9137cb3eb" +dependencies = [ + "once_cell", +] + +[[package]] +name = "cf-custom-hostname-get" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "cf-custom-hostname-list-for-namespace-id" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "cf-custom-hostname-resolve-hostname" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "cf-custom-hostname-worker" +version = "0.0.1" +dependencies = [ + "cf-custom-hostname-get", + "cf-custom-hostname-list-for-namespace-id", + "cf-custom-hostname-resolve-hostname", + "chirp-client", + "chirp-worker", + "faker-game", + "game-get", + "game-list-for-team", + "game-namespace-list", + "game-resolve-namespace-id", + "reqwest", + "rivet-health-checks", + "rivet-metrics", + "rivet-runtime", + "serde", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "chirp-client" +version = "0.1.0" +dependencies = [ + "chirp-perf", + "chirp-types", + "chrono", + "futures-util", + "global-error", + "lazy_static", + "prost 0.10.4", + "rand", + "rivet-metrics", + "rivet-pools", + "rivet-util", + "serde", + "thiserror", + "tokio", + "tokio-util 0.7.10", + "tracing", + "types", + "urlencoding", + "uuid", +] + +[[package]] +name = "chirp-metrics" +version = "0.1.0" +dependencies = [ + "lazy_static", + "rivet-metrics", +] + +[[package]] +name = "chirp-perf" +version = "0.1.0" +dependencies = [ + "lazy_static", + "prost 0.10.4", + "redis", + "rivet-metrics", + "rivet-pools", + "thiserror", + "tokio", + "tracing", + "types", + "uuid", +] + +[[package]] +name = "chirp-types" +version = "0.1.0" +dependencies = [ + "prost 0.10.4", +] + +[[package]] +name = "chirp-worker" +version = "0.1.5" +dependencies = [ + "async-trait", + "chirp-client", + "chirp-metrics", + "chirp-perf", + "chirp-worker-attributes", + "formatted-error", + "futures-util", + "global-error", + "indoc 1.0.9", + "lazy_static", + "prost 0.10.4", + "rand", + "redis", + "rivet-cache", + "rivet-connection", + "rivet-metrics", + "rivet-operation", + "rivet-pools", + "rivet-runtime", + "rivet-util", + "serde_json", + "thiserror", + "tokio", + "tracing", + "tracing-subscriber", + "types", + "uuid", +] + +[[package]] +name = "chirp-worker-attributes" +version = "0.1.0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.58", +] + +[[package]] +name = "chirp-workflow" +version = "0.1.0" +dependencies = [ + "async-trait", + "chirp-client", + "chirp-workflow-macros", + "formatted-error", + "futures-util", + "global-error", + "indoc 2.0.5", + "prost 0.12.4", + "prost-types 0.12.4", + "rand", + "rivet-cache", + "rivet-connection", + "rivet-metrics", + "rivet-operation", + "rivet-pools", + "rivet-runtime", + "rivet-util", + "serde", + "serde_json", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "thiserror", + "tokio", + "tracing", + "tracing-subscriber", + "uuid", +] + +[[package]] +name = "chirp-workflow-macros" +version = "0.1.0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.58", +] + +[[package]] +name = "chrono" +version = "0.4.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a0d04d43504c61aa6c7531f1871dd0d418d91130162063b789da00fd7057a5e" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "js-sys", + "num-traits", + "serde", + "wasm-bindgen", + "windows-targets 0.52.4", +] + +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common", + "inout", +] + +[[package]] +name = "cjson" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91531b1d3fe15c6126decd9977dc823e1fde8e2501cf6ac780407f952a28f7ce" +dependencies = [ + "itoa 0.4.8", + "serde", + "serde_derive", + "serde_json", +] + +[[package]] +name = "clickhouse" +version = "0.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0875e527e299fc5f4faba42870bf199a39ab0bb2dbba1b8aef0a2151451130f" +dependencies = [ + "bstr", + "bytes", + "clickhouse-derive", + "clickhouse-rs-cityhash-sys", + "futures", + "hyper", + "hyper-tls", + "lz4", + "sealed", + "serde", + "static_assertions", + "thiserror", + "tokio", + "url", + "uuid", +] + +[[package]] +name = "clickhouse-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18af5425854858c507eec70f7deb4d5d8cec4216fcb086283a78872387281ea5" +dependencies = [ + "proc-macro2", + "quote", + "serde_derive_internals", + "syn 1.0.109", +] + +[[package]] +name = "clickhouse-rs-cityhash-sys" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4baf9d4700a28d6cb600e17ed6ae2b43298a5245f1f76b4eab63027ebfd592b9" +dependencies = [ + "cc", +] + +[[package]] +name = "cloud-device-link-create" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "rivet-claims", + "rivet-operation", + "token-create", +] + +[[package]] +name = "cloud-game-config-create" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "cloud-game-config-get" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "cloud-game-config-create", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "cloud-game-token-create" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-game", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "token-create", +] + +[[package]] +name = "cloud-namespace-create" +version = "0.0.1" +dependencies = [ + "cdn-namespace-create", + "chirp-client", + "chirp-worker", + "faker-game", + "game-get", + "game-namespace-create", + "game-namespace-get", + "game-version-create", + "identity-config-namespace-create", + "kv-config-namespace-create", + "mm-config-namespace-create", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "cloud-namespace-get" +version = "0.0.1" +dependencies = [ + "cdn-namespace-get", + "chirp-client", + "chirp-worker", + "cloud-namespace-create", + "faker-game", + "game-namespace-create", + "game-version-create", + "identity-config-namespace-get", + "kv-config-namespace-get", + "mm-config-namespace-get", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "cloud-namespace-token-development-create" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-game", + "game-namespace-get", + "game-token-development-validate", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "token-create", +] + +[[package]] +name = "cloud-namespace-token-public-create" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-game", + "game-namespace-get", + "prost 0.10.4", + "rivet-claims", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "token-create", +] + +[[package]] +name = "cloud-version-get" +version = "0.0.1" +dependencies = [ + "cdn-version-get", + "chirp-client", + "chirp-worker", + "cloud-version-publish", + "faker-build", + "faker-game", + "faker-region", + "identity-config-version-get", + "kv-config-version-get", + "mm-config-version-get", + "prost 0.10.4", + "rivet-operation", + "rivet-util-mm", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "cloud-version-publish" +version = "0.0.1" +dependencies = [ + "cdn-version-prepare", + "cdn-version-publish", + "chirp-client", + "chirp-worker", + "faker-build", + "faker-game", + "game-get", + "game-version-create", + "game-version-validate", + "identity-config-version-prepare", + "identity-config-version-publish", + "kv-config-version-prepare", + "kv-config-version-publish", + "mm-config-version-prepare", + "mm-config-version-publish", + "prost 0.10.4", + "region-list", + "rivet-operation", + "rivet-util-mm", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "cloud-worker" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "chrono", + "cloud-game-token-create", + "rivet-health-checks", + "rivet-metrics", + "rivet-runtime", +] + +[[package]] +name = "cloudflare" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0778f99ea7ad39b49b758eb418da7117b93232a5f6a09f9b79a094b77ac88cc2" +dependencies = [ + "anyhow", + "async-trait", + "base64 0.13.1", + "cfg-if", + "chrono", + "http 0.2.12", + "percent-encoding", + "reqwest", + "serde", + "serde_json", + "serde_qs", + "serde_with", + "url", + "uuid", +] + +[[package]] +name = "cluster-datacenter-get" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "cluster-datacenter-list" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "cluster-datacenter-location-get" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "ip-info", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "cluster-datacenter-resolve-for-name-id" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "cluster-datacenter-tls-get" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "cluster-datacenter-tls-renew" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "cluster-datacenter-get", + "rivet-connection", + "rivet-health-checks", + "rivet-metrics", + "rivet-operation", + "rivet-runtime", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "tokio", + "tracing", + "tracing-logfmt", + "tracing-subscriber", +] + +[[package]] +name = "cluster-datacenter-topology-get" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "lazy_static", + "nomad-util", + "nomad_client", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "cluster-default-update" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "cluster-datacenter-get", + "cluster-datacenter-list", + "cluster-get", + "prost 0.10.4", + "reqwest", + "rivet-connection", + "rivet-operation", + "rivet-pools", + "rivet-util-cluster", + "serde", + "serde_json", + "tokio", + "tracing", + "tracing-logfmt", + "tracing-subscriber", + "uuid", +] + +[[package]] +name = "cluster-fix-tls" +version = "0.0.1" +dependencies = [ + "acme-lib", + "anyhow", + "chirp-client", + "chirp-worker", + "chrono", + "cloudflare", + "cluster-datacenter-get", + "cluster-datacenter-list", + "cluster-datacenter-topology-get", + "http 0.2.12", + "include_dir", + "indoc 1.0.9", + "lazy_static", + "linode-instance-type-get", + "linode-server-destroy", + "linode-server-provision", + "maplit", + "nomad-util", + "openssl", + "rivet-connection", + "rivet-convert", + "rivet-health-checks", + "rivet-metrics", + "rivet-operation", + "rivet-runtime", + "rivet-util-cluster", + "s3-util", + "serde_yaml", + "ssh2", + "thiserror", + "token-create", + "tokio", + "tracing", + "tracing-logfmt", + "tracing-subscriber", + "trust-dns-resolver", +] + +[[package]] +name = "cluster-gc" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "cluster-datacenter-get", + "rivet-connection", + "rivet-health-checks", + "rivet-metrics", + "rivet-operation", + "rivet-runtime", + "rivet-util-cluster", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "tokio", + "tracing", + "tracing-logfmt", + "tracing-subscriber", +] + +[[package]] +name = "cluster-get" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "cluster-get-for-game" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "rivet-operation", + "rivet-util-cluster", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "cluster-list" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "cluster-metrics-publish" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "cluster-datacenter-get", + "rivet-connection", + "rivet-health-checks", + "rivet-metrics", + "rivet-operation", + "rivet-runtime", + "rivet-util-cluster", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "tokio", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "cluster-resolve-for-name-id" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "cluster-server-destroy-with-filter" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "cluster-server-list", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "cluster-server-get" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "cluster-server-list" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "cluster-server-resolve-for-ip" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "cluster-worker" +version = "0.0.1" +dependencies = [ + "acme-lib", + "anyhow", + "chirp-client", + "chirp-worker", + "chrono", + "cloudflare", + "cluster-datacenter-get", + "cluster-datacenter-list", + "cluster-datacenter-topology-get", + "http 0.2.12", + "include_dir", + "indoc 1.0.9", + "lazy_static", + "linode-instance-type-get", + "linode-server-destroy", + "linode-server-provision", + "maplit", + "nomad-util", + "nomad_client", + "openssl", + "rivet-convert", + "rivet-health-checks", + "rivet-metrics", + "rivet-runtime", + "rivet-util-cluster", + "s3-util", + "serde_yaml", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "ssh2", + "thiserror", + "token-create", + "trust-dns-resolver", +] + +[[package]] +name = "combine" +version = "4.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4" +dependencies = [ + "bytes", + "futures-core", + "memchr", + "pin-project-lite", + "tokio", + "tokio-util 0.7.10", +] + +[[package]] +name = "console-api" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2895653b4d9f1538a83970077cb01dfc77a4810524e51a110944688e916b18e" +dependencies = [ + "prost 0.11.9", + "prost-types 0.11.9", + "tonic", + "tracing-core", +] + +[[package]] +name = "console-subscriber" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4cf42660ac07fcebed809cfe561dd8730bcd35b075215e6479c516bcd0d11cb" +dependencies = [ + "console-api", + "crossbeam-channel", + "crossbeam-utils", + "futures", + "hdrhistogram", + "humantime", + "prost-types 0.11.9", + "serde", + "serde_json", + "thread_local", + "tokio", + "tokio-stream", + "tonic", + "tracing", + "tracing-core", + "tracing-subscriber", +] + +[[package]] +name = "console_error_panic_hook" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" +dependencies = [ + "cfg-if", + "wasm-bindgen", +] + +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + +[[package]] +name = "constant_time_eq" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" + +[[package]] +name = "cpufeatures" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +dependencies = [ + "libc", +] + +[[package]] +name = "crc" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86ec7a15cbe22e59248fc7eadb1907dab5ba09372595da4d73dd805ed4417dfe" +dependencies = [ + "crc-catalog", +] + +[[package]] +name = "crc-catalog" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" + +[[package]] +name = "crc32c" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89254598aa9b9fa608de44b3ae54c810f0f06d755e24c50177f1f8f31ff50ce2" +dependencies = [ + "rustc_version", +] + +[[package]] +name = "crc32fast" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab3db02a9c5b5121e1e42fbdb1aeb65f5e02624cc58c43f2884c6ccac0b82f95" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-queue" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df0346b5d5e76ac2fe4e327c5fd1118d6be7c51dfb18f9b7922923f287471e35" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" + +[[package]] +name = "crypto-bigint" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +dependencies = [ + "generic-array", + "rand_core", + "subtle", + "zeroize", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "csv" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac574ff4d437a7b5ad237ef331c17ccca63c46479e5b5453eb8e10bb99a759fe" +dependencies = [ + "csv-core", + "itoa 1.0.11", + "ryu", + "serde", +] + +[[package]] +name = "csv-core" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5efa2b3d7902f4b634a20cae3c9c4e6209dc4779feb6863329607560143efa70" +dependencies = [ + "memchr", +] + +[[package]] +name = "ct-logs" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1a816186fa68d9e426e3cb4ae4dff1fcd8e4a2c34b781bf7a822574a0d0aac8" +dependencies = [ + "sct 0.6.1", +] + +[[package]] +name = "curve25519-dalek" +version = "4.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a677b8922c94e01bdbb12126b0bc852f00447528dee1782229af9c720c3f348" +dependencies = [ + "cfg-if", + "cpufeatures", + "curve25519-dalek-derive", + "digest", + "fiat-crypto", + "platforms", + "rustc_version", + "subtle", +] + +[[package]] +name = "curve25519-dalek-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.58", +] + +[[package]] +name = "custom-user-avatar-list-for-game" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "custom-user-avatar-upload-complete", + "faker-game", + "prost 0.10.4", + "reqwest", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "upload-prepare", +] + +[[package]] +name = "custom-user-avatar-upload-complete" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "reqwest", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "upload-complete", + "upload-get", + "upload-prepare", +] + +[[package]] +name = "darling" +version = "0.20.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54e36fcd13ed84ffdfda6f5be89b31287cbb80c439841fe69e04841435464391" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.20.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c2cf1c23a687a1feeb728783b993c4e1ad83d99f351801977dd809b48d0a70f" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.58", +] + +[[package]] +name = "darling_macro" +version = "0.20.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a668eda54683121533a393014d8692171709ff57a7d61f187b6e782719f8933f" +dependencies = [ + "darling_core", + "quote", + "syn 2.0.58", +] + +[[package]] +name = "dashmap" +version = "5.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" +dependencies = [ + "cfg-if", + "hashbrown 0.14.3", + "lock_api", + "once_cell", + "parking_lot_core 0.9.9", +] + +[[package]] +name = "data-encoding" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e962a19be5cfc3f3bf6dd8f61eb50107f356ad6270fbb3ed41476571db78be5" + +[[package]] +name = "debug-email-res" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "email-verification-create", + "prost 0.10.4", + "rand", + "rivet-operation", + "serde_json", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "der" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" +dependencies = [ + "const-oid", + "pem-rfc7468", + "zeroize", +] + +[[package]] +name = "deranged" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +dependencies = [ + "powerfmt", + "serde", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "const-oid", + "crypto-common", + "subtle", +] + +[[package]] +name = "dotenvy" +version = "0.15.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" + +[[package]] +name = "ds-server-create" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-build", + "faker-game", + "faker-region", + "lazy_static", + "nomad-client", + "nomad_client", + "rivet-operation", + "sqlx 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "ds-server-delete" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "rivet-operation", + "sqlx 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "ecdsa" +version = "0.16.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +dependencies = [ + "der", + "digest", + "elliptic-curve", + "rfc6979", + "signature", + "spki", +] + +[[package]] +name = "ed25519" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" +dependencies = [ + "signature", +] + +[[package]] +name = "ed25519-dalek" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a3daa8e81a3963a60642bcc1f90a670680bd4a77535faa384e9d1c79d620871" +dependencies = [ + "curve25519-dalek", + "ed25519", + "sha2", + "signature", + "subtle", +] + +[[package]] +name = "either" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a" +dependencies = [ + "serde", +] + +[[package]] +name = "elliptic-curve" +version = "0.13.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +dependencies = [ + "base16ct", + "crypto-bigint", + "digest", + "ff", + "generic-array", + "group", + "pkcs8", + "rand_core", + "sec1", + "subtle", + "zeroize", +] + +[[package]] +name = "email-address-parser" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1840503695adadbe314fe6cedd297fbc406d13f0fe06fd28d02e499a17c2a599" +dependencies = [ + "console_error_panic_hook", + "pest", + "pest_derive", + "quick-xml", + "wasm-bindgen", +] + +[[package]] +name = "email-send" +version = "0.0.1" +dependencies = [ + "base64 0.13.1", + "chirp-client", + "chirp-worker", + "lazy_static", + "prost 0.10.4", + "reqwest", + "rivet-operation", + "serde", + "serde_json", +] + +[[package]] +name = "email-verification-complete" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "chrono", + "debug-email-res", + "email-verification-create", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "email-verification-create" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "chrono", + "email-address-parser", + "email-send", + "faker-game", + "game-get", + "game-logo-upload-complete", + "prost 0.10.4", + "rand", + "reqwest", + "rivet-operation", + "serde_json", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "upload-prepare", +] + +[[package]] +name = "encoding_rs" +version = "0.8.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "enum-as-inner" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ffccbb6966c05b32ef8fbac435df276c4ae4d3dc55a8cd0eb9745e6c12f546a" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "quote", + "syn 2.0.58", +] + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "errno" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "etcetera" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "136d1b5283a1ab77bd9257427ffd09d8667ced0570b6f938942bc7568ed5b943" +dependencies = [ + "cfg-if", + "home", + "windows-sys 0.48.0", +] + +[[package]] +name = "event-listener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + +[[package]] +name = "external-request-validate" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "chrono", + "http 0.2.12", + "prost 0.10.4", + "reqwest", + "rivet-operation", + "serde", + "serde_json", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "external-worker" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "chrono", + "reqwest", + "rivet-health-checks", + "rivet-metrics", + "rivet-runtime", +] + +[[package]] +name = "faker-build" +version = "0.0.1" +dependencies = [ + "build-create", + "chirp-client", + "chirp-worker", + "faker-game", + "prost 0.10.4", + "rivet-operation", + "uuid", +] + +[[package]] +name = "faker-cdn-site" +version = "0.0.1" +dependencies = [ + "cdn-site-create", + "chirp-client", + "chirp-worker", + "faker-game", + "prost 0.10.4", + "reqwest", + "rivet-operation", + "upload-complete", +] + +[[package]] +name = "faker-game" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "cloud-game-config-create", + "faker-game-namespace", + "faker-game-version", + "faker-team", + "game-create", + "game-get", + "mm-config-game-upsert", + "prost 0.10.4", + "rivet-operation", +] + +[[package]] +name = "faker-game-namespace" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "cloud-namespace-create", + "faker-game", + "game-namespace-create", + "prost 0.10.4", + "rivet-operation", +] + +[[package]] +name = "faker-game-version" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "cloud-version-publish", + "faker-build", + "faker-cdn-site", + "faker-game", + "faker-region", + "game-namespace-version-set", + "mm-config-version-get", + "prost 0.10.4", + "region-list", + "rivet-operation", + "rivet-util-mm", +] + +[[package]] +name = "faker-job-run" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-job-template", + "faker-region", + "job-run-get", + "prost 0.10.4", + "rivet-operation", +] + +[[package]] +name = "faker-job-template" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "nomad-client", + "prost 0.10.4", + "rivet-operation", + "rivet-util-job", +] + +[[package]] +name = "faker-mm-lobby" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-build", + "faker-game", + "faker-game-version", + "faker-region", + "game-namespace-version-set", + "game-resolve-namespace-id", + "mm-config-version-get", + "prost 0.10.4", + "rivet-operation", + "rivet-util-mm", +] + +[[package]] +name = "faker-mm-lobby-row" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "chrono", + "prost 0.10.4", + "rivet-operation", + "rivet-util-mm", +] + +[[package]] +name = "faker-mm-player" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "rivet-operation", + "token-create", +] + +[[package]] +name = "faker-region" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "region-get", + "region-list", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "faker-team" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-user", + "prost 0.10.4", + "rivet-operation", + "team-get", +] + +[[package]] +name = "faker-user" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "rivet-operation", + "user-get", +] + +[[package]] +name = "fastrand" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" +dependencies = [ + "instant", +] + +[[package]] +name = "fastrand" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "658bd65b1cf4c852a3cc96f18a8ce7b5640f6b703f905c7d74532294c2a63984" + +[[package]] +name = "ff" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" +dependencies = [ + "rand_core", + "subtle", +] + +[[package]] +name = "fiat-crypto" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c007b1ae3abe1cb6f85a16305acd418b7ca6343b953633fee2b76d8f108b830f" + +[[package]] +name = "finl_unicode" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fcfdc7a0362c9f4444381a9e697c79d435fe65b52a37466fc2c1184cee9edc6" + +[[package]] +name = "fixedbitset" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" + +[[package]] +name = "flate2" +version = "1.0.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "flume" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55ac459de2512911e4b674ce33cf20befaba382d05b62b008afc1c8b57cbf181" +dependencies = [ + "futures-core", + "futures-sink", + "spin 0.9.8", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foo-worker" +version = "0.0.1" +dependencies = [ + "chirp-workflow", + "serde", + "user-get", +] + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "formatted-error" +version = "0.1.0" +dependencies = [ + "gray_matter", + "hashbrown 0.12.3", + "http 0.2.12", + "indoc 1.0.9", + "lazy_static", + "serde", +] + +[[package]] +name = "funty" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fed34cd105917e91daa4da6b3728c47b068749d6a62c59811f06ed2ac71d9da7" + +[[package]] +name = "futures" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" + +[[package]] +name = "futures-executor" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-intrusive" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d930c203dd0b6ff06e0201a4a2fe9149b43c684fd4420555b26d21b1a02956f" +dependencies = [ + "futures-core", + "lock_api", + "parking_lot 0.12.1", +] + +[[package]] +name = "futures-io" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" + +[[package]] +name = "futures-macro" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.58", +] + +[[package]] +name = "futures-sink" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" + +[[package]] +name = "futures-task" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" + +[[package]] +name = "futures-timer" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" + +[[package]] +name = "futures-util" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "game-banner-upload-complete" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-game", + "prost 0.10.4", + "reqwest", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "upload-complete", + "upload-get", + "upload-prepare", +] + +[[package]] +name = "game-create" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-team", + "game-validate", + "prost 0.10.4", + "rivet-operation", + "rivet-util-team", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "team-get", +] + +[[package]] +name = "game-get" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-team", + "game-create", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "upload-file-list", + "upload-get", +] + +[[package]] +name = "game-list-all" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "game-list-for-team" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-game", + "faker-team", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "game-logo-upload-complete" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-game", + "prost 0.10.4", + "reqwest", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "upload-complete", + "upload-get", + "upload-prepare", +] + +[[package]] +name = "game-namespace-create" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-game", + "game-namespace-validate", + "game-version-create", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "game-namespace-get" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-game", + "game-namespace-create", + "game-version-create", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "game-namespace-list" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-game", + "game-namespace-create", + "game-version-create", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "game-namespace-resolve-name-id" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-game", + "faker-game-namespace", + "game-namespace-get", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "game-namespace-resolve-url" +version = "0.0.1" +dependencies = [ + "cdn-namespace-domain-create", + "cdn-namespace-resolve-domain", + "chirp-client", + "chirp-worker", + "faker-game", + "game-get", + "game-namespace-get", + "game-namespace-list", + "game-namespace-resolve-name-id", + "game-resolve-name-id", + "prost 0.10.4", + "rivet-operation", + "url", +] + +[[package]] +name = "game-namespace-validate" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-game", + "game-namespace-resolve-name-id", + "prost 0.10.4", + "rivet-operation", +] + +[[package]] +name = "game-namespace-version-history-list" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "game-namespace-version-set" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-game", + "game-get", + "game-resolve-namespace-id", + "game-version-create", + "mm-lobby-idle-update", + "prost 0.10.4", + "region-list-for-game", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "game-recommend" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-game", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "game-resolve-name-id" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-game", + "game-get", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "game-resolve-namespace-id" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-game", + "game-namespace-create", + "game-version-create", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "game-token-development-validate" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "rivet-operation", +] + +[[package]] +name = "game-user-create" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "chrono", + "game-user-get", + "prost 0.10.4", + "rivet-operation", + "rivet-util-game-user", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "token-create", +] + +[[package]] +name = "game-user-get" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "chrono", + "game-user-create", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "game-user-link-create" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "chrono", + "game-user-create", + "game-user-get", + "game-user-link-get", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "token-create", +] + +[[package]] +name = "game-user-link-get" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "chrono", + "game-user-create", + "game-user-link-create", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "game-user-list-for-user" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "chrono", + "game-user-create", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "game-user-recent-session-list" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "chrono", + "faker-game", + "game-namespace-create", + "game-user-create", + "game-version-create", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "game-user-recommend" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "rivet-operation", +] + +[[package]] +name = "game-user-worker" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "chrono", + "game-user-create", + "game-user-get", + "game-user-link-create", + "game-user-link-get", + "rivet-claims", + "rivet-health-checks", + "rivet-metrics", + "rivet-runtime", + "rivet-util-game-user", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "token-create", + "token-exchange", + "token-revoke", +] + +[[package]] +name = "game-validate" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "game-resolve-name-id", + "prost 0.10.4", + "rivet-operation", +] + +[[package]] +name = "game-version-create" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-game", + "game-version-get", + "game-version-list", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "game-version-get" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-game", + "game-version-create", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "game-version-list" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-game", + "game-version-create", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "game-version-validate" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "external-request-validate", + "faker-game", + "game-version-get", + "game-version-list", + "mm-config-game-get", + "prost 0.10.4", + "region-get", + "rivet-operation", + "rivet-util-mm", + "tier-list", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", + "zeroize", +] + +[[package]] +name = "geoutils" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e006f616a407d396ace1d2ebb3f43ed73189db8b098079bd129928d7645dd1e" + +[[package]] +name = "getrandom" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", +] + +[[package]] +name = "gimli" +version = "0.28.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" + +[[package]] +name = "global-error" +version = "0.1.5" +dependencies = [ + "async-trait", + "formatted-error", + "http 0.2.12", + "reqwest", + "serde", + "serde_json", + "thiserror", + "types", +] + +[[package]] +name = "governor" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68a7f542ee6b35af73b06abc0dad1c1bae89964e4e253bc4b587b91c9637867b" +dependencies = [ + "cfg-if", + "dashmap", + "futures", + "futures-timer", + "no-std-compat", + "nonzero_ext", + "parking_lot 0.12.1", + "portable-atomic", + "quanta", + "rand", + "smallvec", + "spinning_top", +] + +[[package]] +name = "gray_matter" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cf2fb99fac0b821a4e61c61abff076324bb0e5c3b4a83815bbc3518a38971ad" +dependencies = [ + "serde", + "serde_json", + "toml 0.5.11", + "yaml-rust", +] + +[[package]] +name = "group" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +dependencies = [ + "ff", + "rand_core", + "subtle", +] + +[[package]] +name = "h2" +version = "0.3.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http 0.2.12", + "indexmap 2.2.6", + "slab", + "tokio", + "tokio-util 0.7.10", + "tracing", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +dependencies = [ + "ahash 0.7.8", +] + +[[package]] +name = "hashbrown" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" +dependencies = [ + "ahash 0.8.11", + "allocator-api2", +] + +[[package]] +name = "hashlink" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8094feaf31ff591f651a2664fb9cfd92bba7a60ce3197265e9482ebe753c8f7" +dependencies = [ + "hashbrown 0.14.3", +] + +[[package]] +name = "hdrhistogram" +version = "7.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "765c9198f173dd59ce26ff9f95ef0aafd0a0fe01fb9d72841bc5066a4c06511d" +dependencies = [ + "base64 0.21.7", + "byteorder", + "flate2", + "nom", + "num-traits", +] + +[[package]] +name = "headers" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06683b93020a07e3dbcf5f8c0f6d40080d725bea7936fc01ad345c01b97dc270" +dependencies = [ + "base64 0.21.7", + "bytes", + "headers-core", + "http 0.2.12", + "httpdate", + "mime", + "sha1", +] + +[[package]] +name = "headers-core" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7f66481bfee273957b1f20485a4ff3362987f85b2c236580d81b4eb7a326429" +dependencies = [ + "http 0.2.12", +] + +[[package]] +name = "heck" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "hermit-abi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hkdf" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" +dependencies = [ + "hmac", +] + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest", +] + +[[package]] +name = "home" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "hostname" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867" +dependencies = [ + "libc", + "match_cfg", + "winapi", +] + +[[package]] +name = "http" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +dependencies = [ + "bytes", + "fnv", + "itoa 1.0.11", +] + +[[package]] +name = "http" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" +dependencies = [ + "bytes", + "fnv", + "itoa 1.0.11", +] + +[[package]] +name = "http-body" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" +dependencies = [ + "bytes", + "http 0.2.12", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "humantime" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" + +[[package]] +name = "hyper" +version = "0.14.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http 0.2.12", + "http-body", + "httparse", + "httpdate", + "itoa 1.0.11", + "pin-project-lite", + "socket2 0.5.6", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f9f7a97316d44c0af9b0301e65010573a853a9fc97046d7331d7f6bc0fd5a64" +dependencies = [ + "ct-logs", + "futures-util", + "hyper", + "log", + "rustls 0.19.1", + "rustls-native-certs 0.5.0", + "tokio", + "tokio-rustls 0.22.0", + "webpki 0.21.4", +] + +[[package]] +name = "hyper-rustls" +version = "0.23.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1788965e61b367cd03a62950836d5cd41560c3577d90e40e0819373194d1661c" +dependencies = [ + "http 0.2.12", + "hyper", + "log", + "rustls 0.20.9", + "rustls-native-certs 0.6.3", + "tokio", + "tokio-rustls 0.23.4", + "webpki-roots 0.22.6", +] + +[[package]] +name = "hyper-rustls" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" +dependencies = [ + "futures-util", + "http 0.2.12", + "hyper", + "rustls 0.21.10", + "tokio", + "tokio-rustls 0.24.1", +] + +[[package]] +name = "hyper-timeout" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" +dependencies = [ + "hyper", + "pin-project-lite", + "tokio", + "tokio-io-timeout", +] + +[[package]] +name = "hyper-tls" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" +dependencies = [ + "bytes", + "hyper", + "native-tls", + "tokio", + "tokio-native-tls", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "identity-config-namespace-create" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "identity-config-namespace-get" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "identity-config-namespace-create", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "identity-config-version-get" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-game", + "faker-game-version", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "identity-config-version-prepare" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-game", + "prost 0.10.4", + "rivet-operation", +] + +[[package]] +name = "identity-config-version-publish" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-game", + "identity-config-version-get", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "idna" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "idna" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "include_dir" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18762faeff7122e89e0857b02f7ce6fcc0d101d5e9ad2ad7846cc01d61b7f19e" +dependencies = [ + "include_dir_macros", +] + +[[package]] +name = "include_dir_macros" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b139284b5cf57ecfa712bcc66950bb635b31aff41c188e8a4cfc758eca374a3f" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", + "serde", +] + +[[package]] +name = "indexmap" +version = "2.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" +dependencies = [ + "equivalent", + "hashbrown 0.14.3", +] + +[[package]] +name = "indoc" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa799dd5ed20a7e349f3b4639aa80d74549c81716d9ec4f994c9b5815598306" + +[[package]] +name = "indoc" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5" + +[[package]] +name = "inout" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +dependencies = [ + "generic-array", +] + +[[package]] +name = "instant" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "ip-info" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "chrono", + "prost 0.10.4", + "reqwest", + "rivet-operation", + "serde", + "serde_json", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "ipconfig" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b58db92f96b720de98181bbbe63c831e87005ab460c1bf306eb2622b4707997f" +dependencies = [ + "socket2 0.5.6", + "widestring", + "windows-sys 0.48.0", + "winreg", +] + +[[package]] +name = "ipnet" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" +dependencies = [ + "serde", +] + +[[package]] +name = "ipnetwork" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf466541e9d546596ee94f9f69590f89473455f88372423e0008fc1a7daf100e" +dependencies = [ + "serde", +] + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" + +[[package]] +name = "itoa" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" + +[[package]] +name = "job-gc" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "chrono", + "faker-job-run", + "futures-util", + "indoc 1.0.9", + "job-run-get", + "lazy_static", + "mm-lobby-for-run-id", + "mm-lobby-get", + "nomad-client", + "nomad-util", + "prost 0.10.4", + "rivet-connection", + "rivet-health-checks", + "rivet-metrics", + "rivet-operation", + "rivet-pools", + "rivet-runtime", + "serde_json", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "tokio", + "tracing", + "tracing-logfmt", + "tracing-subscriber", + "uuid", +] + +[[package]] +name = "job-log-read" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "chrono", + "clickhouse", + "prost 0.10.4", + "rivet-operation", + "serde", +] + +[[package]] +name = "job-log-worker" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "clickhouse", + "reqwest", + "rivet-health-checks", + "rivet-metrics", + "rivet-runtime", + "s3-util", + "serde", + "upload-complete", + "upload-prepare", +] + +[[package]] +name = "job-run-get" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "chrono", + "faker-job-run", + "nomad-client", + "nomad-util", + "prost 0.10.4", + "rivet-operation", + "rivet-util-job", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "job-run-metrics-log" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-job-run", + "faker-job-template", + "indoc 1.0.9", + "job-run-get", + "lazy_static", + "reqwest", + "rivet-operation", + "rivet-util-job", + "serde", + "serde_urlencoded", +] + +[[package]] +name = "job-run-worker" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "chrono", + "cjson", + "faker-job-run", + "faker-job-template", + "faker-region", + "hex", + "job-run-get", + "lazy_static", + "nomad-client", + "nomad-util", + "nomad_client", + "rand", + "region-get", + "reqwest", + "rivet-health-checks", + "rivet-metrics", + "rivet-runtime", + "rivet-util-job", + "rustls 0.20.9", + "serde", + "sha2", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "token-create", + "webpki 0.22.4", + "webpki-roots 0.22.6", +] + +[[package]] +name = "js-sys" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "jsonwebtoken" +version = "8.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6971da4d9c3aa03c3d8f3ff0f4155b534aad021292003895a469716b2a230378" +dependencies = [ + "base64 0.21.7", + "pem", + "ring 0.16.20", + "serde", + "serde_json", + "simple_asn1", +] + +[[package]] +name = "kv-config-namespace-create" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "kv-config-namespace-get" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "kv-config-namespace-create", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "kv-config-version-get" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-game", + "faker-game-version", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "kv-config-version-prepare" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-game", + "prost 0.10.4", + "rivet-operation", +] + +[[package]] +name = "kv-config-version-publish" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-game", + "kv-config-version-get", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "kv-get" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "kv-list" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "rivet-operation", +] + +[[package]] +name = "kv-worker" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "chrono", + "kv-get", + "rivet-health-checks", + "rivet-metrics", + "rivet-runtime", + "rivet-util-kv", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +dependencies = [ + "spin 0.5.2", +] + +[[package]] +name = "libc" +version = "0.2.153" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" + +[[package]] +name = "libm" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" + +[[package]] +name = "libsqlite3-sys" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf4e226dcd58b4be396f7bd3c20da8fdee2911400705297ba7d2d7cc2c30f716" +dependencies = [ + "cc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "libssh2-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dc8a030b787e2119a731f1951d6a773e2280c660f8ec4b0f5e1505a386e71ee" +dependencies = [ + "cc", + "libc", + "libz-sys", + "openssl-sys", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "libz-sys" +version = "1.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e143b5e666b2695d28f6bca6497720813f699c9602dd7f5cac91008b8ada7f9" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "linked-hash-map" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" + +[[package]] +name = "linode-gc" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "chrono", + "reqwest", + "rivet-connection", + "rivet-health-checks", + "rivet-metrics", + "rivet-operation", + "rivet-runtime", + "rivet-util-cluster", + "rivet-util-linode", + "serde", + "serde_json", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "tokio", + "tracing", + "tracing-logfmt", + "tracing-subscriber", +] + +[[package]] +name = "linode-instance-type-get" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "rivet-operation", + "rivet-util-cluster", + "rivet-util-linode", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "linode-server-destroy" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "cluster-datacenter-get", + "linode-server-provision", + "reqwest", + "rivet-operation", + "rivet-util-cluster", + "rivet-util-linode", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "linode-server-provision" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "cluster-datacenter-get", + "linode-server-destroy", + "reqwest", + "rivet-operation", + "rivet-util-cluster", + "rivet-util-linode", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "linode-worker" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "cluster-datacenter-get", + "rivet-convert", + "rivet-health-checks", + "rivet-metrics", + "rivet-runtime", + "rivet-util-cluster", + "rivet-util-linode", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "linux-raw-sys" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" + +[[package]] +name = "load-test-api-cloud" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-game", + "faker-team", + "reqwest", + "rivet-api", + "rivet-connection", + "rivet-operation", + "rivet-runtime", + "token-create", + "tokio", + "tracing", + "tracing-logfmt", + "tracing-subscriber", + "user-identity-create", +] + +[[package]] +name = "load-test-mm" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "cloud-namespace-token-public-create", + "faker-build", + "faker-game", + "faker-game-namespace", + "faker-game-version", + "faker-region", + "mm-config-namespace-config-set", + "mm-lobby-list-for-namespace", + "mm-lobby-player-count", + "mm-player-count-for-namespace", + "region-get", + "reqwest", + "rivet-api", + "rivet-claims", + "rivet-connection", + "rivet-operation", + "rivet-runtime", + "token-create", + "tokio", + "tracing", + "tracing-logfmt", + "tracing-subscriber", +] + +[[package]] +name = "load-test-mm-sustain" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-build", + "faker-game", + "faker-game-namespace", + "faker-game-version", + "faker-region", + "faker-team", + "game-namespace-version-set", + "job-run-get", + "mm-config-version-get", + "mm-lobby-get", + "rand", + "reqwest", + "rivet-api", + "rivet-connection", + "rivet-operation", + "rivet-runtime", + "rivet-util-mm", + "token-create", + "tokio", + "tracing", + "tracing-logfmt", + "tracing-subscriber", + "user-identity-create", +] + +[[package]] +name = "load-test-sqlx" +version = "0.0.1" +dependencies = [ + "cdn-namespace-get", + "cdn-version-get", + "chirp-client", + "chirp-worker", + "mm-config-version-get", + "rivet-connection", + "rivet-health-checks", + "rivet-metrics", + "rivet-operation", + "rivet-runtime", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "tokio", + "tracing", + "tracing-logfmt", + "tracing-subscriber", +] + +[[package]] +name = "load-test-watch-requests" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-game", + "faker-team", + "reqwest", + "rivet-api", + "rivet-connection", + "rivet-operation", + "rivet-runtime", + "token-create", + "tokio", + "tracing", + "tracing-logfmt", + "tracing-subscriber", + "user-identity-create", +] + +[[package]] +name = "lock_api" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" + +[[package]] +name = "lru-cache" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c" +dependencies = [ + "linked-hash-map", +] + +[[package]] +name = "lz4" +version = "1.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e9e2dd86df36ce760a60f6ff6ad526f7ba1f14ba0356f8254fb6905e6494df1" +dependencies = [ + "libc", + "lz4-sys", +] + +[[package]] +name = "lz4-sys" +version = "1.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57d27b317e207b10f69f5e75494119e391a96f48861ae870d1da6edac98ca900" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "maplit" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d" + +[[package]] +name = "match_cfg" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4" + +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata 0.1.10", +] + +[[package]] +name = "matchit" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" + +[[package]] +name = "md-5" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" +dependencies = [ + "cfg-if", + "digest", +] + +[[package]] +name = "memchr" +version = "2.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" + +[[package]] +name = "merkle_hash" +version = "3.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fad8dc52477aa6f1751748a5ee1c6d50db7092e8dab1d687840dfa23e2ae4e5" +dependencies = [ + "anyhow", + "blake3", + "camino", + "rayon", +] + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "mime_guess" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef" +dependencies = [ + "mime", + "unicase", +] + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" +dependencies = [ + "adler", +] + +[[package]] +name = "mio" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" +dependencies = [ + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys 0.48.0", +] + +[[package]] +name = "mm-config-game-get" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "mm-config-game-upsert" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "mm-config-lobby-group-get" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-game", + "faker-game-version", + "mm-config-version-get", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "mm-config-lobby-group-resolve-name-id" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-build", + "faker-game", + "faker-game-version", + "faker-region", + "prost 0.10.4", + "rivet-operation", + "rivet-util-mm", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "mm-config-lobby-group-resolve-version" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-game", + "faker-game-version", + "mm-config-version-get", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "mm-config-namespace-config-set" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-game", + "mm-config-namespace-config-validate", + "mm-config-namespace-get", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "mm-config-namespace-config-validate" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "rivet-operation", +] + +[[package]] +name = "mm-config-namespace-create" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "mm-config-namespace-get" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "mm-config-namespace-create", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "mm-config-version-get" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-build", + "faker-game", + "faker-region", + "mm-config-version-prepare", + "mm-config-version-publish", + "prost 0.10.4", + "rivet-operation", + "rivet-util-mm", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "mm-config-version-prepare" +version = "0.0.1" +dependencies = [ + "build-get", + "chirp-client", + "chirp-worker", + "faker-build", + "faker-game", + "faker-region", + "heck 0.3.3", + "nomad-client", + "prost 0.10.4", + "region-get", + "reqwest", + "rivet-operation", + "rivet-util-build", + "rivet-util-job", + "rivet-util-mm", + "s3-util", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "tier-list", + "upload-get", +] + +[[package]] +name = "mm-config-version-publish" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-build", + "faker-game", + "faker-region", + "mm-config-version-prepare", + "prost 0.10.4", + "rivet-operation", + "rivet-util-mm", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "mm-dev-player-token-create" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "rivet-operation", + "token-create", +] + +[[package]] +name = "mm-gc" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "chrono", + "faker-mm-lobby", + "futures-util", + "indoc 1.0.9", + "lazy_static", + "mm-lobby-get", + "prost 0.10.4", + "region-list", + "rivet-connection", + "rivet-health-checks", + "rivet-metrics", + "rivet-operation", + "rivet-pools", + "rivet-runtime", + "rivet-util-mm", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "tokio", + "tracing", + "tracing-logfmt", + "tracing-subscriber", +] + +[[package]] +name = "mm-lobby-find-fail" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "rivet-operation", + "rivet-util-mm", +] + +[[package]] +name = "mm-lobby-find-lobby-query-list" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "rivet-operation", + "rivet-util-mm", +] + +[[package]] +name = "mm-lobby-find-try-complete" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "chrono", + "prost 0.10.4", + "rivet-operation", + "rivet-util-mm", +] + +[[package]] +name = "mm-lobby-for-run-id" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-mm-lobby", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "mm-lobby-get" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "chrono", + "faker-mm-lobby", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "mm-lobby-history" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "chrono", + "faker-mm-lobby-row", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "mm-lobby-idle-update" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "chrono", + "faker-build", + "faker-game", + "faker-game-version", + "faker-region", + "game-namespace-get", + "game-namespace-version-set", + "lazy_static", + "mm-config-version-get", + "mm-lobby-get", + "prost 0.10.4", + "rivet-operation", + "rivet-util-mm", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "mm-lobby-list-for-namespace" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-mm-lobby", + "prost 0.10.4", + "rivet-operation", + "rivet-util-mm", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "mm-lobby-list-for-user-id" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-mm-lobby", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "mm-lobby-player-count" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-mm-lobby", + "prost 0.10.4", + "rivet-operation", + "rivet-util-mm", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "mm-lobby-runtime-aggregate" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "chrono", + "faker-game", + "faker-game-version", + "faker-mm-lobby", + "faker-mm-lobby-row", + "faker-region", + "mm-config-lobby-group-resolve-version", + "mm-config-version-get", + "prost 0.10.4", + "rivet-operation", + "rivet-util-mm", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "mm-lobby-state-get" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-mm-lobby", + "prost 0.10.4", + "rivet-operation", + "rivet-util-mm", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "mm-player-count-for-namespace" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-mm-lobby", + "prost 0.10.4", + "rivet-operation", + "rivet-util-mm", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "mm-player-get" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-mm-lobby", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "mm-worker" +version = "0.0.1" +dependencies = [ + "build-get", + "chirp-client", + "chirp-worker", + "chrono", + "csv", + "faker-build", + "faker-game", + "faker-game-namespace", + "faker-game-version", + "faker-mm-lobby", + "faker-region", + "faker-user", + "game-get", + "game-namespace-get", + "game-namespace-version-set", + "game-version-get", + "heck 0.3.3", + "http 0.2.12", + "job-run-get", + "lazy_static", + "maplit", + "mm-config-game-get", + "mm-config-lobby-group-resolve-version", + "mm-config-namespace-config-set", + "mm-config-namespace-get", + "mm-config-version-get", + "mm-lobby-find-fail", + "mm-lobby-find-lobby-query-list", + "mm-lobby-find-try-complete", + "mm-lobby-get", + "mm-lobby-idle-update", + "mm-lobby-player-count", + "mm-lobby-state-get", + "mm-player-count-for-namespace", + "nomad-client", + "nomad-util", + "redis-util", + "regex", + "region-get", + "reqwest", + "rivet-health-checks", + "rivet-metrics", + "rivet-runtime", + "rivet-util-build", + "rivet-util-job", + "rivet-util-mm", + "s3-util", + "serde", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "team-get", + "tier-list", + "token-create", + "upload-complete", + "upload-get", + "upload-prepare", + "user-identity-create", +] + +[[package]] +name = "monolith-worker" +version = "0.0.1" +dependencies = [ + "cdn-worker", + "cf-custom-hostname-worker", + "chirp-client", + "cloud-worker", + "cluster-worker", + "external-worker", + "game-user-worker", + "job-log-worker", + "job-run-worker", + "kv-worker", + "linode-worker", + "mm-worker", + "rivet-connection", + "rivet-health-checks", + "rivet-metrics", + "rivet-operation", + "rivet-runtime", + "team-invite-worker", + "team-worker", + "tokio", + "tracing", + "tracing-subscriber", + "upload-worker", + "user-dev-worker", + "user-follow-worker", + "user-presence-worker", + "user-report-worker", + "user-worker", +] + +[[package]] +name = "monolith-workflow-worker" +version = "0.0.1" +dependencies = [ + "chirp-workflow", + "foo-worker", + "rivet-health-checks", + "rivet-metrics", + "rivet-runtime", +] + +[[package]] +name = "multimap" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a" + +[[package]] +name = "native-tls" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" +dependencies = [ + "lazy_static", + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "nkeys" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aad178aad32087b19042ee36dfd450b73f5f934fbfb058b59b198684dfec4c47" +dependencies = [ + "byteorder", + "data-encoding", + "ed25519", + "ed25519-dalek", + "getrandom", + "log", + "rand", + "signatory", +] + +[[package]] +name = "no-std-compat" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b93853da6d84c2e3c7d730d6473e8817692dd89be387eb01b94d7f108ecb5b8c" + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "nomad-client" +version = "0.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1548b7290f5a088b0e1069fb41e2d91a5c2c143b1a26bd9327c0fa4a17216bab" +dependencies = [ + "reqwest", + "serde", + "serde_derive", + "serde_json", + "url", +] + +[[package]] +name = "nomad-monitor" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "chrono", + "futures-util", + "indoc 1.0.9", + "lazy_static", + "nomad-util", + "nomad_client", + "prost 0.10.4", + "rivet-connection", + "rivet-health-checks", + "rivet-metrics", + "rivet-operation", + "rivet-pools", + "rivet-runtime", + "rivet-util-job", + "serde", + "serde_json", + "tokio", + "tracing", + "tracing-logfmt", + "tracing-subscriber", +] + +[[package]] +name = "nomad-util" +version = "0.1.0" +dependencies = [ + "base64 0.13.1", + "bytes", + "futures-util", + "nomad-client", + "nomad_client", + "reqwest", + "rivet-pools", + "serde", + "serde_json", + "thiserror", + "tokio", + "tracing", +] + +[[package]] +name = "nomad_client" +version = "1.1.4" +source = "git+https://github.com/rivet-gg/nomad-client?rev=abb66bf0c30c7ff5b0c695dae952481c33e538b5#abb66bf0c30c7ff5b0c695dae952481c33e538b5" +dependencies = [ + "reqwest", + "serde", + "serde_derive", + "serde_json", + "url", +] + +[[package]] +name = "nonzero_ext" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38bf9645c8b145698bb0b18a4637dcacbc421ea49bef2317e4fd8065a387cf21" + +[[package]] +name = "nsfw-image-score" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "reqwest", + "rivet-operation", + "serde", +] + +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + +[[package]] +name = "nuid" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc895af95856f929163a0aa20c26a78d26bfdc839f51b9d5aa7a5b79e52b7e83" +dependencies = [ + "rand", +] + +[[package]] +name = "num-bigint" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-bigint-dig" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc84195820f291c7697304f3cbdadd1cb7199c0efc917ff5eafd71225c136151" +dependencies = [ + "byteorder", + "lazy_static", + "libm", + "num-integer", + "num-iter", + "num-traits", + "rand", + "smallvec", + "zeroize", +] + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d869c01cc0c455284163fd0092f1f93835385ccab5a98a0dcc497b2f8bf055a9" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" +dependencies = [ + "autocfg", + "libm", +] + +[[package]] +name = "num_cpus" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "object" +version = "0.32.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" + +[[package]] +name = "openssl" +version = "0.10.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f" +dependencies = [ + "bitflags 2.5.0", + "cfg-if", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.58", +] + +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "openssl-sys" +version = "0.9.102" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c597637d56fbc83893a35eb0dd04b2b8e7a50c91e64e9493e398b5df4fb45fa2" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "outref" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f222829ae9293e33a9f5e9f440c6760a3d450a64affe1846486b140db81c1f4" + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "p256" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" +dependencies = [ + "ecdsa", + "elliptic-curve", + "primeorder", + "sha2", +] + +[[package]] +name = "p384" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70786f51bcc69f6a4c0360e063a4cac5419ef7c5cd5b3c99ad70f3be5ba79209" +dependencies = [ + "ecdsa", + "elliptic-curve", + "primeorder", + "sha2", +] + +[[package]] +name = "p521" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fc9e2161f1f215afdfce23677034ae137bbd45016a880c2eb3ba8eb95f085b2" +dependencies = [ + "base16ct", + "ecdsa", + "elliptic-curve", + "primeorder", + "rand_core", + "sha2", +] + +[[package]] +name = "parking_lot" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" +dependencies = [ + "instant", + "lock_api", + "parking_lot_core 0.8.6", +] + +[[package]] +name = "parking_lot" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core 0.9.9", +] + +[[package]] +name = "parking_lot_core" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" +dependencies = [ + "cfg-if", + "instant", + "libc", + "redox_syscall 0.2.16", + "smallvec", + "winapi", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall 0.4.1", + "smallvec", + "windows-targets 0.48.5", +] + +[[package]] +name = "paste" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" + +[[package]] +name = "pem" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8835c273a76a90455d7344889b0964598e3316e2a79ede8e36f16bdcf2228b8" +dependencies = [ + "base64 0.13.1", +] + +[[package]] +name = "pem-rfc7468" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" +dependencies = [ + "base64ct", +] + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "perf-log-get" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "rivet-operation", +] + +[[package]] +name = "pest" +version = "2.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "311fb059dee1a7b802f036316d790138c613a4e8b180c822e3925a662e9f0c95" +dependencies = [ + "memchr", + "thiserror", + "ucd-trie", +] + +[[package]] +name = "pest_derive" +version = "2.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f73541b156d32197eecda1a4014d7f868fd2bcb3c550d5386087cfba442bf69c" +dependencies = [ + "pest", + "pest_generator", +] + +[[package]] +name = "pest_generator" +version = "2.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c35eeed0a3fab112f75165fdc026b3913f4183133f19b49be773ac9ea966e8bd" +dependencies = [ + "pest", + "pest_meta", + "proc-macro2", + "quote", + "syn 2.0.58", +] + +[[package]] +name = "pest_meta" +version = "2.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2adbf29bb9776f28caece835398781ab24435585fe0d4dc1374a61db5accedca" +dependencies = [ + "once_cell", + "pest", + "sha2", +] + +[[package]] +name = "petgraph" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" +dependencies = [ + "fixedbitset", + "indexmap 2.2.6", +] + +[[package]] +name = "pin-project" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.58", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkcs1" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f" +dependencies = [ + "der", + "pkcs8", + "spki", +] + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der", + "spki", +] + +[[package]] +name = "pkg-config" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" + +[[package]] +name = "platforms" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db23d408679286588f4d4644f965003d056e3dd5abcaaa938116871d7ce2fee7" + +[[package]] +name = "portable-atomic" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" + +[[package]] +name = "posthog-core" +version = "0.1.0" +source = "git+https://github.com/rivet-gg/posthog-rs.git?rev=ef4e80e#ef4e80e57747ea7204794bce9a103bfeccefabf1" +dependencies = [ + "chrono", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "prettyplease" +version = "0.1.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c8646e95016a7a6c4adea95bafa8a16baab64b583356217f2c85db4a39d9a86" +dependencies = [ + "proc-macro2", + "syn 1.0.109", +] + +[[package]] +name = "primeorder" +version = "0.13.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6" +dependencies = [ + "elliptic-curve", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro2" +version = "1.0.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "profanity-check" +version = "0.0.1" +dependencies = [ + "censor", + "chirp-client", + "chirp-worker", + "lazy_static", + "prost 0.10.4", + "rivet-operation", +] + +[[package]] +name = "prometheus" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "449811d15fbdf5ceb5c1144416066429cf82316e2ec8ce0c1f6f8a02e7bbcf8c" +dependencies = [ + "cfg-if", + "fnv", + "lazy_static", + "memchr", + "parking_lot 0.12.1", + "protobuf", + "thiserror", +] + +[[package]] +name = "prost" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71adf41db68aa0daaefc69bb30bcd68ded9b9abaad5d1fbb6304c4fb390e083e" +dependencies = [ + "bytes", + "prost-derive 0.10.1", +] + +[[package]] +name = "prost" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b82eaa1d779e9a4bc1c3217db8ffbeabaae1dca241bf70183242128d48681cd" +dependencies = [ + "bytes", + "prost-derive 0.11.9", +] + +[[package]] +name = "prost" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0f5d036824e4761737860779c906171497f6d55681139d8312388f8fe398922" +dependencies = [ + "bytes", + "prost-derive 0.12.5", +] + +[[package]] +name = "prost-build" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "119533552c9a7ffacc21e099c24a0ac8bb19c2a2a3f363de84cd9b844feab270" +dependencies = [ + "bytes", + "heck 0.4.1", + "itertools 0.10.5", + "lazy_static", + "log", + "multimap", + "petgraph", + "prettyplease", + "prost 0.11.9", + "prost-types 0.11.9", + "regex", + "syn 1.0.109", + "tempfile", + "which", +] + +[[package]] +name = "prost-derive" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b670f45da57fb8542ebdbb6105a925fe571b67f9e7ed9f47a06a84e72b4e7cc" +dependencies = [ + "anyhow", + "itertools 0.10.5", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "prost-derive" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5d2d8d10f3c6ded6da8b05b5fb3b8a5082514344d56c9f871412d29b4e075b4" +dependencies = [ + "anyhow", + "itertools 0.10.5", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "prost-derive" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9554e3ab233f0a932403704f1a1d08c30d5ccd931adfdfa1e8b5a19b52c1d55a" +dependencies = [ + "anyhow", + "itertools 0.12.1", + "proc-macro2", + "quote", + "syn 2.0.58", +] + +[[package]] +name = "prost-types" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d0a014229361011dc8e69c8a1ec6c2e8d0f2af7c91e3ea3f5b2170298461e68" +dependencies = [ + "bytes", + "prost 0.10.4", +] + +[[package]] +name = "prost-types" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "213622a1460818959ac1181aaeb2dc9c7f63df720db7d788b3e24eacd1983e13" +dependencies = [ + "prost 0.11.9", +] + +[[package]] +name = "prost-types" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3235c33eb02c1f1e212abdbe34c78b264b038fb58ca612664343271e36e55ffe" +dependencies = [ + "prost 0.12.4", +] + +[[package]] +name = "protobuf" +version = "2.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "106dd99e98437432fed6519dedecfade6a06a73bb7b2a1e019fdd2bee5778d94" + +[[package]] +name = "quanta" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5167a477619228a0b284fac2674e3c388cba90631d7b7de620e6f1fcd08da5" +dependencies = [ + "crossbeam-utils", + "libc", + "once_cell", + "raw-cpuid", + "wasi 0.11.0+wasi-snapshot-preview1", + "web-sys", + "winapi", +] + +[[package]] +name = "quick-error" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" + +[[package]] +name = "quick-xml" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3cc440ee4802a86e357165021e3e255a9143724da31db1e2ea540214c96a0f82" +dependencies = [ + "memchr", +] + +[[package]] +name = "quote" +version = "1.0.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "raw-cpuid" +version = "11.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d86a7c4638d42c44551f4791a20e687dbb4c3de1f33c43dd71e355cd429def1" +dependencies = [ + "bitflags 2.5.0", +] + +[[package]] +name = "rayon" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "redis" +version = "0.23.3" +source = "git+https://github.com/rivet-gg/redis-rs.git?rev=ac3e27fa1d133847db54354493f4d25957ad3466#ac3e27fa1d133847db54354493f4d25957ad3466" +dependencies = [ + "arc-swap", + "async-trait", + "bytes", + "combine", + "futures", + "futures-util", + "itoa 1.0.11", + "native-tls", + "percent-encoding", + "pin-project-lite", + "ryu", + "sha1_smol", + "socket2 0.4.10", + "tokio", + "tokio-native-tls", + "tokio-retry", + "tokio-util 0.7.10", + "url", +] + +[[package]] +name = "redis-util" +version = "0.1.0" +dependencies = [ + "lazy_static", + "redis", + "regex", +] + +[[package]] +name = "redox_syscall" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_syscall" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "regex" +version = "1.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata 0.4.6", + "regex-syntax 0.8.3", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax 0.6.29", +] + +[[package]] +name = "regex-automata" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax 0.8.3", +] + +[[package]] +name = "regex-syntax" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + +[[package]] +name = "regex-syntax" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" + +[[package]] +name = "region-get" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "cluster-datacenter-get", + "cluster-datacenter-location-get", + "faker-region", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "region-list" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "cluster-datacenter-list", + "faker-region", + "prost 0.10.4", + "rivet-operation", + "rivet-util-cluster", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "region-list-for-game" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "cluster-datacenter-list", + "cluster-get-for-game", + "faker-region", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "region-recommend" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "geoutils", + "ip-info", + "prost 0.10.4", + "region-get", + "region-list", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "region-resolve" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "cluster-datacenter-get", + "faker-region", + "prost 0.10.4", + "region-get", + "region-list", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "region-resolve-for-game" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "cluster-datacenter-get", + "faker-region", + "prost 0.10.4", + "region-get", + "region-list-for-game", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "reqwest" +version = "0.11.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" +dependencies = [ + "base64 0.21.7", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2", + "http 0.2.12", + "http-body", + "hyper", + "hyper-rustls 0.24.2", + "hyper-tls", + "ipnet", + "js-sys", + "log", + "mime", + "mime_guess", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls 0.21.10", + "rustls-pemfile", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "system-configuration", + "tokio", + "tokio-native-tls", + "tokio-rustls 0.24.1", + "tokio-util 0.7.10", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams", + "web-sys", + "webpki-roots 0.25.4", + "winreg", +] + +[[package]] +name = "resolv-conf" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52e44394d2086d010551b14b53b1f24e31647570cd1deb0379e2c21b329aba00" +dependencies = [ + "hostname", + "quick-error", +] + +[[package]] +name = "rfc6979" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +dependencies = [ + "hmac", + "subtle", +] + +[[package]] +name = "ring" +version = "0.16.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +dependencies = [ + "cc", + "libc", + "once_cell", + "spin 0.5.2", + "untrusted 0.7.1", + "web-sys", + "winapi", +] + +[[package]] +name = "ring" +version = "0.17.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +dependencies = [ + "cc", + "cfg-if", + "getrandom", + "libc", + "spin 0.9.8", + "untrusted 0.9.0", + "windows-sys 0.52.0", +] + +[[package]] +name = "rivet-api" +version = "0.0.1" +dependencies = [ + "reqwest", + "serde", + "serde_derive", + "serde_json", + "serde_with", + "url", + "uuid", +] + +[[package]] +name = "rivet-auth" +version = "0.0.1" +dependencies = [ + "aws-smithy-client 0.41.0", + "aws-smithy-http 0.41.0", + "aws-smithy-json", + "aws-smithy-types 0.41.0", + "bytes", + "http 0.2.12", + "tower", +] + +[[package]] +name = "rivet-auth-server" +version = "0.0.1" +dependencies = [ + "chrono", + "serde", + "serde_json", +] + +[[package]] +name = "rivet-cache" +version = "0.1.0" +dependencies = [ + "futures-util", + "global-error", + "lazy_static", + "prost 0.10.4", + "prost-types 0.10.1", + "redis", + "rivet-cache-result", + "rivet-metrics", + "rivet-pools", + "rivet-util", + "serde", + "serde_json", + "thiserror", + "tokio", + "tracing", + "types", + "uuid", +] + +[[package]] +name = "rivet-cache-result" +version = "0.1.0" +dependencies = [ + "rivet-util", +] + +[[package]] +name = "rivet-cf-verification" +version = "0.0.1" +dependencies = [ + "aws-smithy-client 0.41.0", + "aws-smithy-http 0.41.0", + "aws-smithy-json", + "aws-smithy-types 0.41.0", + "bytes", + "http 0.2.12", + "tower", +] + +[[package]] +name = "rivet-cf-verification-server" +version = "0.0.1" +dependencies = [ + "chrono", + "serde", + "serde_json", +] + +[[package]] +name = "rivet-claims" +version = "0.1.0" +dependencies = [ + "base64 0.13.1", + "global-error", + "jsonwebtoken", + "lazy_static", + "prost 0.10.4", + "rivet-util", + "serde", + "serde_json", + "thiserror", + "types", + "uuid", +] + +[[package]] +name = "rivet-connection" +version = "0.1.0" +dependencies = [ + "chirp-client", + "chirp-perf", + "global-error", + "rivet-cache", + "rivet-pools", + "rivet-util", + "tracing", +] + +[[package]] +name = "rivet-convert" +version = "0.1.0" +dependencies = [ + "cdn-namespace-get", + "chirp-client", + "chrono", + "game-get", + "game-namespace-get", + "game-namespace-list", + "game-resolve-namespace-id", + "game-token-development-validate", + "game-user-get", + "game-user-link-get", + "game-validate", + "game-version-validate", + "job-run-metrics-log", + "kv-list", + "mm-lobby-player-count", + "mm-lobby-runtime-aggregate", + "mm-player-count-for-namespace", + "region-get", + "region-list-for-game", + "region-resolve", + "rivet-api", + "rivet-group-server", + "rivet-operation", + "rivet-portal-server", + "rivet-util-mm", + "serde", + "serde_json", + "team-get", + "team-member-count", + "team-profile-validate", + "team-validate", + "types", + "user-follow-count", + "user-follow-get", + "user-get", + "user-identity-get", + "user-presence-get", + "user-team-list", +] + +[[package]] +name = "rivet-group" +version = "0.0.7" +dependencies = [ + "aws-smithy-client 0.41.0", + "aws-smithy-http 0.41.0", + "aws-smithy-json", + "aws-smithy-types 0.41.0", + "bytes", + "http 0.2.12", + "tower", +] + +[[package]] +name = "rivet-group-server" +version = "0.0.7" +dependencies = [ + "chrono", + "serde", + "serde_json", +] + +[[package]] +name = "rivet-health-checks" +version = "0.1.0" +dependencies = [ + "chirp-client", + "hyper", + "rivet-pools", + "serde", + "serde_json", + "thiserror", + "tokio", + "tracing", + "uuid", +] + +[[package]] +name = "rivet-identity" +version = "0.0.14" +dependencies = [ + "aws-smithy-client 0.41.0", + "aws-smithy-http 0.41.0", + "aws-smithy-json", + "aws-smithy-types 0.41.0", + "bytes", + "http 0.2.12", + "tower", +] + +[[package]] +name = "rivet-job" +version = "0.0.1" +dependencies = [ + "aws-smithy-client 0.41.0", + "aws-smithy-http 0.41.0", + "aws-smithy-json", + "aws-smithy-types 0.41.0", + "bytes", + "http 0.2.12", + "tower", +] + +[[package]] +name = "rivet-job-server" +version = "0.0.1" +dependencies = [ + "chrono", + "serde", + "serde_json", +] + +[[package]] +name = "rivet-kv" +version = "0.0.8" +dependencies = [ + "aws-smithy-client 0.41.0", + "aws-smithy-http 0.41.0", + "aws-smithy-json", + "aws-smithy-types 0.41.0", + "bytes", + "http 0.2.12", + "tower", +] + +[[package]] +name = "rivet-matchmaker" +version = "0.0.8" +dependencies = [ + "aws-smithy-client 0.41.0", + "aws-smithy-http 0.41.0", + "aws-smithy-json", + "aws-smithy-types 0.41.0", + "bytes", + "http 0.2.12", + "tower", +] + +[[package]] +name = "rivet-matchmaker-server" +version = "0.0.8" +dependencies = [ + "chrono", + "serde", + "serde_json", +] + +[[package]] +name = "rivet-metrics" +version = "0.1.0" +dependencies = [ + "hyper", + "lazy_static", + "prometheus", + "tracing", +] + +[[package]] +name = "rivet-operation" +version = "0.1.0" +dependencies = [ + "async-trait", + "chirp-client", + "chirp-metrics", + "chirp-perf", + "formatted-error", + "futures-util", + "global-error", + "indoc 1.0.9", + "prost 0.10.4", + "prost-types 0.10.1", + "rivet-cache", + "rivet-connection", + "rivet-operation-macros", + "rivet-pools", + "rivet-util", + "serde_json", + "thiserror", + "tokio", + "tracing", + "types", +] + +[[package]] +name = "rivet-operation-macros" +version = "0.1.0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.58", +] + +[[package]] +name = "rivet-pools" +version = "0.1.0" +dependencies = [ + "async-nats", + "clickhouse", + "funty", + "global-error", + "governor", + "hyper", + "hyper-tls", + "lazy_static", + "rand", + "redis", + "rivet-metrics", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "thiserror", + "tokio", + "tokio-util 0.7.10", + "tracing", + "url", +] + +[[package]] +name = "rivet-portal" +version = "0.0.1" +dependencies = [ + "aws-smithy-client 0.41.0", + "aws-smithy-http 0.41.0", + "aws-smithy-json", + "aws-smithy-types 0.41.0", + "bytes", + "http 0.2.12", + "tower", +] + +[[package]] +name = "rivet-portal-server" +version = "0.0.1" +dependencies = [ + "chrono", + "serde", + "serde_json", +] + +[[package]] +name = "rivet-route" +version = "0.0.1" +dependencies = [ + "aws-smithy-client 0.41.0", + "aws-smithy-http 0.41.0", + "aws-smithy-json", + "aws-smithy-types 0.41.0", + "bytes", + "http 0.2.12", + "tower", +] + +[[package]] +name = "rivet-runtime" +version = "0.1.0" +dependencies = [ + "console-subscriber", + "lazy_static", + "rivet-metrics", + "thiserror", + "tokio", + "tracing", + "tracing-logfmt", + "tracing-subscriber", +] + +[[package]] +name = "rivet-status" +version = "0.0.1" +dependencies = [ + "aws-smithy-client 0.41.0", + "aws-smithy-http 0.41.0", + "aws-smithy-json", + "aws-smithy-types 0.41.0", + "bytes", + "http 0.2.12", + "tower", +] + +[[package]] +name = "rivet-status-server" +version = "0.0.1" +dependencies = [ + "chrono", + "serde", + "serde_json", +] + +[[package]] +name = "rivet-util" +version = "0.1.0" +dependencies = [ + "async-trait", + "aws-smithy-client 0.41.0", + "aws-smithy-types 0.41.0", + "bcrypt", + "chrono", + "futures-util", + "global-error", + "ipnet", + "lazy_static", + "rand", + "regex", + "reqwest", + "rivet-util-env", + "rivet-util-macros", + "serde", + "serde_json", + "thiserror", + "tokio", + "types", + "uuid", +] + +[[package]] +name = "rivet-util-build" +version = "0.1.0" +dependencies = [ + "rivet-operation", +] + +[[package]] +name = "rivet-util-captcha" +version = "0.1.0" +dependencies = [ + "global-error", + "serde_json", +] + +[[package]] +name = "rivet-util-cdn" +version = "0.1.0" + +[[package]] +name = "rivet-util-cluster" +version = "0.1.0" +dependencies = [ + "hex", + "lazy_static", + "merkle_hash", + "rivet-metrics", + "rivet-util", + "tokio", + "types", + "uuid", +] + +[[package]] +name = "rivet-util-env" +version = "0.1.0" +dependencies = [ + "lazy_static", + "serde", + "serde_json", + "thiserror", + "types", + "uuid", +] + +[[package]] +name = "rivet-util-game-user" +version = "0.1.0" +dependencies = [ + "rivet-util", + "uuid", +] + +[[package]] +name = "rivet-util-job" +version = "0.1.0" +dependencies = [ + "uuid", +] + +[[package]] +name = "rivet-util-kv" +version = "0.1.0" + +[[package]] +name = "rivet-util-linode" +version = "0.1.0" +dependencies = [ + "chrono", + "rand", + "reqwest", + "rivet-operation", + "serde", + "serde_json", + "ssh-key", +] + +[[package]] +name = "rivet-util-macros" +version = "0.1.0" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "rivet-util-mm" +version = "0.1.0" +dependencies = [ + "bit-vec", + "chirp-client", + "heck 0.3.3", + "http 0.2.12", + "ip-info", + "mm-lobby-list-for-user-id", + "region-get", + "rivet-operation", + "rivet-util", + "serde", + "serde_json", + "strum 0.24.1", + "user-identity-get", + "uuid", +] + +[[package]] +name = "rivet-util-nsfw" +version = "0.1.0" + +[[package]] +name = "rivet-util-team" +version = "0.1.0" +dependencies = [ + "rivet-operation", +] + +[[package]] +name = "rivet-util-user-presence" +version = "0.1.0" +dependencies = [ + "rivet-util", + "serde", + "uuid", +] + +[[package]] +name = "rsa" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d0e5124fcb30e76a7e79bfee683a2746db83784b86289f6251b54b7950a0dfc" +dependencies = [ + "const-oid", + "digest", + "num-bigint-dig", + "num-integer", + "num-traits", + "pkcs1", + "pkcs8", + "rand_core", + "sha2", + "signature", + "spki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" + +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver", +] + +[[package]] +name = "rustix" +version = "0.38.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65e04861e65f21776e67888bfbea442b3642beaa0138fdb1dd7a84a52dffdb89" +dependencies = [ + "bitflags 2.5.0", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustls" +version = "0.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35edb675feee39aec9c99fa5ff985081995a06d594114ae14cbe797ad7b7a6d7" +dependencies = [ + "base64 0.13.1", + "log", + "ring 0.16.20", + "sct 0.6.1", + "webpki 0.21.4", +] + +[[package]] +name = "rustls" +version = "0.20.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b80e3dec595989ea8510028f30c408a4630db12c9cbb8de34203b89d6577e99" +dependencies = [ + "log", + "ring 0.16.20", + "sct 0.7.1", + "webpki 0.22.4", +] + +[[package]] +name = "rustls" +version = "0.21.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba" +dependencies = [ + "log", + "ring 0.17.8", + "rustls-webpki 0.101.7", + "sct 0.7.1", +] + +[[package]] +name = "rustls" +version = "0.22.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99008d7ad0bbbea527ec27bddbc0e432c5b87d8175178cee68d2eec9c4a1813c" +dependencies = [ + "log", + "ring 0.17.8", + "rustls-pki-types", + "rustls-webpki 0.102.2", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-native-certs" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a07b7c1885bd8ed3831c289b7870b13ef46fe0e856d288c30d9cc17d75a2092" +dependencies = [ + "openssl-probe", + "rustls 0.19.1", + "schannel", + "security-framework", +] + +[[package]] +name = "rustls-native-certs" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" +dependencies = [ + "openssl-probe", + "rustls-pemfile", + "schannel", + "security-framework", +] + +[[package]] +name = "rustls-pemfile" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +dependencies = [ + "base64 0.21.7", +] + +[[package]] +name = "rustls-pki-types" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecd36cc4259e3e4514335c4a138c6b43171a8d61d8f5c9348f9fc7529416f247" + +[[package]] +name = "rustls-webpki" +version = "0.101.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" +dependencies = [ + "ring 0.17.8", + "untrusted 0.9.0", +] + +[[package]] +name = "rustls-webpki" +version = "0.102.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "faaa0a62740bedb9b2ef5afa303da42764c012f743917351dc9a237ea1663610" +dependencies = [ + "ring 0.17.8", + "rustls-pki-types", + "untrusted 0.9.0", +] + +[[package]] +name = "rustversion" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" + +[[package]] +name = "ryu" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" + +[[package]] +name = "s3-util" +version = "0.1.0" +dependencies = [ + "aws-sdk-s3", + "aws-smithy-async 0.52.0", + "aws-smithy-http 0.52.0", + "aws-smithy-types 0.52.0", + "http 0.2.12", + "thiserror", + "tokio", + "tracing", +] + +[[package]] +name = "schannel" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "schemac" +version = "0.1.0" +dependencies = [ + "lazy_static", + "prost-build", + "regex", + "tempfile", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "sct" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b362b83898e0e69f38515b82ee15aa80636befe47c3b6d3d89a911e78fc228ce" +dependencies = [ + "ring 0.16.20", + "untrusted 0.7.1", +] + +[[package]] +name = "sct" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" +dependencies = [ + "ring 0.17.8", + "untrusted 0.9.0", +] + +[[package]] +name = "sealed" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b5e421024b5e5edfbaa8e60ecf90bda9dbffc602dbb230e6028763f85f0c68c" +dependencies = [ + "heck 0.3.3", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "sec1" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +dependencies = [ + "base16ct", + "der", + "generic-array", + "pkcs8", + "subtle", + "zeroize", +] + +[[package]] +name = "security-framework" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "770452e37cad93e0a50d5abc3990d2bc351c36d0328f86cefec2f2fb206eaef6" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41f3cc463c0ef97e11c3461a9d3787412d30e8e7eb907c79180c4a57bf7c04ef" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "semver" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" + +[[package]] +name = "serde" +version = "1.0.201" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "780f1cebed1629e4753a1a38a3c72d30b97ec044f0aef68cb26650a3c5cf363c" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_array_query" +version = "0.2.0" +source = "git+https://github.com/rivet-gg/serde_array_query.git?rev=b9f8bfad77aea6f01dccc6cb77146b8c5daecaa3#b9f8bfad77aea6f01dccc6cb77146b8c5daecaa3" +dependencies = [ + "serde", + "serde_urlencoded", +] + +[[package]] +name = "serde_derive" +version = "1.0.201" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5e405930b9796f1c00bee880d03fc7e0bb4b9a11afc776885ffe84320da2865" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.58", +] + +[[package]] +name = "serde_derive_internals" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85bf8229e7920a9f636479437026331ce11aa132b4dde37d121944a44d6e5f3c" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "serde_json" +version = "1.0.117" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3" +dependencies = [ + "itoa 1.0.11", + "ryu", + "serde", +] + +[[package]] +name = "serde_nanos" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a93142f0367a4cc53ae0fead1bcda39e85beccfad3dcd717656cacab94b12985" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_qs" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cac3f1e2ca2fe333923a1ae72caca910b98ed0630bb35ef6f8c8517d6e81afa" +dependencies = [ + "percent-encoding", + "serde", + "thiserror", +] + +[[package]] +name = "serde_repr" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b2e6b945e9d3df726b65d6ee24060aff8e3533d431f677a9695db04eff9dfdb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.58", +] + +[[package]] +name = "serde_spanned" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa 1.0.11", + "ryu", + "serde", +] + +[[package]] +name = "serde_with" +version = "2.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07ff71d2c147a7b57362cead5e22f772cd52f6ab31cfcd9edcd7f6aeb2a0afbe" +dependencies = [ + "base64 0.13.1", + "chrono", + "hex", + "indexmap 1.9.3", + "serde", + "serde_json", + "serde_with_macros", + "time 0.3.34", +] + +[[package]] +name = "serde_with_macros" +version = "2.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "881b6f881b17d13214e5d494c939ebab463d01264ce1811e9d4ac3a882e7695f" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.58", +] + +[[package]] +name = "serde_yaml" +version = "0.9.34+deprecated" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" +dependencies = [ + "indexmap 2.2.6", + "itoa 1.0.11", + "ryu", + "serde", + "unsafe-libyaml", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sha1_smol" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae1a47186c03a32177042e55dbc5fd5aee900b8e0069a8d70fba96a9375cd012" + +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" +dependencies = [ + "libc", +] + +[[package]] +name = "signatory" +version = "0.27.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1e303f8205714074f6068773f0e29527e0453937fe837c9717d066635b65f31" +dependencies = [ + "pkcs8", + "rand_core", + "signature", + "zeroize", +] + +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +dependencies = [ + "digest", + "rand_core", +] + +[[package]] +name = "simd-abstraction" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cadb29c57caadc51ff8346233b5cec1d240b68ce55cf1afc764818791876987" +dependencies = [ + "outref", +] + +[[package]] +name = "simple_asn1" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085" +dependencies = [ + "num-bigint", + "num-traits", + "thiserror", + "time 0.3.34", +] + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "smallvec" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" + +[[package]] +name = "socket2" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "socket2" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +dependencies = [ + "lock_api", +] + +[[package]] +name = "spinning_top" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d96d2d1d716fb500937168cc09353ffdc7a012be8475ac7308e1bdf0e3923300" +dependencies = [ + "lock_api", +] + +[[package]] +name = "spki" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +dependencies = [ + "base64ct", + "der", +] + +[[package]] +name = "sqlformat" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce81b7bd7c4493975347ef60d8c7e8b742d4694f4c49f93e0a12ea263938176c" +dependencies = [ + "itertools 0.12.1", + "nom", + "unicode_categories", +] + +[[package]] +name = "sqlx" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9a2ccff1a000a5a59cd33da541d9f2fdcd9e6e8229cc200565942bff36d0aaa" +dependencies = [ + "sqlx-core 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "sqlx" +version = "0.7.4" +source = "git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b#08d6e61aa0572e7ec557abbedb72cebb96e1ac5b" +dependencies = [ + "sqlx-core 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "sqlx-macros", + "sqlx-mysql", + "sqlx-postgres", + "sqlx-sqlite", +] + +[[package]] +name = "sqlx-core" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24ba59a9342a3d9bab6c56c118be528b27c9b60e490080e9711a04dccac83ef6" +dependencies = [ + "ahash 0.8.11", + "atoi", + "byteorder", + "bytes", + "crc", + "crossbeam-queue", + "either", + "event-listener", + "futures-channel", + "futures-core", + "futures-intrusive", + "futures-io", + "futures-util", + "hashlink", + "hex", + "indexmap 2.2.6", + "log", + "memchr", + "once_cell", + "paste", + "percent-encoding", + "serde", + "sha2", + "smallvec", + "sqlformat", + "thiserror", + "tracing", + "url", +] + +[[package]] +name = "sqlx-core" +version = "0.7.4" +source = "git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b#08d6e61aa0572e7ec557abbedb72cebb96e1ac5b" +dependencies = [ + "ahash 0.8.11", + "atoi", + "bit-vec", + "byteorder", + "bytes", + "crc", + "crossbeam-queue", + "either", + "event-listener", + "futures-channel", + "futures-core", + "futures-intrusive", + "futures-io", + "futures-util", + "hashlink", + "hex", + "indexmap 2.2.6", + "ipnetwork", + "log", + "memchr", + "native-tls", + "once_cell", + "paste", + "percent-encoding", + "rand", + "serde", + "serde_json", + "sha2", + "smallvec", + "sqlformat", + "thiserror", + "tokio", + "tokio-stream", + "tracing", + "url", + "uuid", +] + +[[package]] +name = "sqlx-macros" +version = "0.7.4" +source = "git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b#08d6e61aa0572e7ec557abbedb72cebb96e1ac5b" +dependencies = [ + "proc-macro2", + "quote", + "sqlx-core 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "sqlx-macros-core", + "syn 1.0.109", +] + +[[package]] +name = "sqlx-macros-core" +version = "0.7.4" +source = "git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b#08d6e61aa0572e7ec557abbedb72cebb96e1ac5b" +dependencies = [ + "dotenvy", + "either", + "heck 0.4.1", + "hex", + "once_cell", + "proc-macro2", + "quote", + "serde", + "serde_json", + "sha2", + "sqlx-core 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "sqlx-mysql", + "sqlx-postgres", + "sqlx-sqlite", + "syn 1.0.109", + "tempfile", + "tokio", + "url", +] + +[[package]] +name = "sqlx-mysql" +version = "0.7.4" +source = "git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b#08d6e61aa0572e7ec557abbedb72cebb96e1ac5b" +dependencies = [ + "atoi", + "base64 0.21.7", + "bitflags 2.5.0", + "byteorder", + "bytes", + "crc", + "digest", + "dotenvy", + "either", + "futures-channel", + "futures-core", + "futures-io", + "futures-util", + "generic-array", + "hex", + "hkdf", + "hmac", + "itoa 1.0.11", + "log", + "md-5", + "memchr", + "once_cell", + "percent-encoding", + "rand", + "rsa", + "serde", + "sha1", + "sha2", + "smallvec", + "sqlx-core 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "stringprep", + "thiserror", + "tracing", + "uuid", + "whoami", +] + +[[package]] +name = "sqlx-postgres" +version = "0.7.4" +source = "git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b#08d6e61aa0572e7ec557abbedb72cebb96e1ac5b" +dependencies = [ + "atoi", + "base64 0.21.7", + "bit-vec", + "bitflags 2.5.0", + "byteorder", + "crc", + "dotenvy", + "etcetera", + "futures-channel", + "futures-core", + "futures-io", + "futures-util", + "hex", + "hkdf", + "hmac", + "home", + "ipnetwork", + "itoa 1.0.11", + "log", + "md-5", + "memchr", + "once_cell", + "rand", + "serde", + "serde_json", + "sha2", + "smallvec", + "sqlx-core 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "stringprep", + "thiserror", + "tracing", + "uuid", + "whoami", +] + +[[package]] +name = "sqlx-sqlite" +version = "0.7.4" +source = "git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b#08d6e61aa0572e7ec557abbedb72cebb96e1ac5b" +dependencies = [ + "atoi", + "flume", + "futures-channel", + "futures-core", + "futures-executor", + "futures-intrusive", + "futures-util", + "libsqlite3-sys", + "log", + "percent-encoding", + "serde", + "sqlx-core 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "tracing", + "url", + "urlencoding", + "uuid", +] + +[[package]] +name = "ssh-cipher" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "caac132742f0d33c3af65bfcde7f6aa8f62f0e991d80db99149eb9d44708784f" +dependencies = [ + "cipher", + "ssh-encoding", +] + +[[package]] +name = "ssh-encoding" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb9242b9ef4108a78e8cd1a2c98e193ef372437f8c22be363075233321dd4a15" +dependencies = [ + "base64ct", + "pem-rfc7468", + "sha2", +] + +[[package]] +name = "ssh-key" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b71299a724c8d84956caaf8fc3b3ea57c3587fe2d0b800cd0dc1f3599905d7e" +dependencies = [ + "p256", + "p384", + "p521", + "rand_core", + "rsa", + "sec1", + "sha2", + "signature", + "ssh-cipher", + "ssh-encoding", + "subtle", + "zeroize", +] + +[[package]] +name = "ssh2" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7fe461910559f6d5604c3731d00d2aafc4a83d1665922e280f42f9a168d5455" +dependencies = [ + "bitflags 1.3.2", + "libc", + "libssh2-sys", + "parking_lot 0.11.2", +] + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "stringprep" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb41d74e231a107a1b4ee36bd1214b11285b77768d2e3824aedafa988fd36ee6" +dependencies = [ + "finl_unicode", + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "strum" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" +dependencies = [ + "strum_macros 0.24.3", +] + +[[package]] +name = "strum" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125" + +[[package]] +name = "strum_macros" +version = "0.24.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "quote", + "rustversion", + "syn 1.0.109", +] + +[[package]] +name = "strum_macros" +version = "0.25.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.58", +] + +[[package]] +name = "subtle" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.58" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44cfb93f38070beee36b3fef7d4f5a16f27751d94b187b666a5cc5e9b0d30687" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + +[[package]] +name = "system-configuration" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "team-avatar-upload-complete" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-team", + "prost 0.10.4", + "reqwest", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "upload-complete", + "upload-get", + "upload-prepare", +] + +[[package]] +name = "team-get" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "upload-file-list", + "upload-get", +] + +[[package]] +name = "team-invite-get" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "chrono", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "team-invite-worker" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "chrono", + "rivet-health-checks", + "rivet-metrics", + "rivet-runtime", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "team-member-list", + "team-user-ban-get", +] + +[[package]] +name = "team-join-request-list" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "team-member-count" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "team-member-get" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "team-member-list" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "team-member-relationship-get" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-team", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "team-profile-validate" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "team-recommend" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "team-resolve-display-name" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-team", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "team-get", +] + +[[package]] +name = "team-search" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "lazy_static", + "prost 0.10.4", + "regex", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "team-user-ban-get" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "team-user-ban-list" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "team-validate" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "profanity-check", + "prost 0.10.4", + "rivet-operation", + "team-resolve-display-name", +] + +[[package]] +name = "team-worker" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-team", + "game-namespace-list", + "mm-lobby-list-for-namespace", + "reqwest", + "rivet-health-checks", + "rivet-metrics", + "rivet-runtime", + "serde", + "team-join-request-list", + "team-profile-validate", + "team-user-ban-get", + "team-validate", + "user-identity-get", +] + +[[package]] +name = "telemetry-beacon" +version = "0.0.38" +dependencies = [ + "async-posthog", + "chirp-client", + "chirp-worker", + "chrono", + "cloud-version-get", + "futures-util", + "game-get", + "game-namespace-get", + "game-version-get", + "indoc 1.0.9", + "lazy_static", + "mm-player-count-for-namespace", + "prost 0.10.4", + "rivet-connection", + "rivet-operation", + "rivet-pools", + "rivet-runtime", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "team-get", + "team-member-count", + "tokio", + "tracing", + "tracing-logfmt", + "tracing-subscriber", +] + +[[package]] +name = "tempfile" +version = "3.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" +dependencies = [ + "cfg-if", + "fastrand 2.0.2", + "rustix", + "windows-sys 0.52.0", +] + +[[package]] +name = "thiserror" +version = "1.0.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "579e9083ca58dd9dcf91a9923bb9054071b9ebbd800b342194c9feb0ee89fc18" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2470041c06ec3ac1ab38d0356a6119054dedaea53e12fbefc0de730a1c08524" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.58", +] + +[[package]] +name = "thread_local" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +dependencies = [ + "cfg-if", + "once_cell", +] + +[[package]] +name = "tier-list" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "cluster-datacenter-get", + "cluster-datacenter-list", + "linode-instance-type-get", + "prost 0.10.4", + "rivet-operation", + "rivet-util-cluster", +] + +[[package]] +name = "time" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" +dependencies = [ + "libc", + "wasi 0.10.0+wasi-snapshot-preview1", + "winapi", +] + +[[package]] +name = "time" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8248b6521bb14bc45b4067159b9b6ad792e2d6d754d6c41fb50e29fefe38749" +dependencies = [ + "deranged", + "itoa 1.0.11", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" + +[[package]] +name = "time-macros" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ba3a3ef41e6672a2f0f001392bb5dcd3ff0a9992d618ca761a11c3121547774" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "token-create" +version = "0.0.1" +dependencies = [ + "base64 0.13.1", + "chirp-client", + "chirp-worker", + "chrono", + "jsonwebtoken", + "lazy_static", + "prost 0.10.4", + "rivet-claims", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "token-exchange" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "chrono", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "token-create", +] + +[[package]] +name = "token-get" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "chrono", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "token-create", +] + +[[package]] +name = "token-revoke" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "chrono", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "token-create", +] + +[[package]] +name = "tokio" +version = "1.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "num_cpus", + "parking_lot 0.12.1", + "pin-project-lite", + "signal-hook-registry", + "socket2 0.5.6", + "tokio-macros", + "tracing", + "windows-sys 0.48.0", +] + +[[package]] +name = "tokio-io-timeout" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30b74022ada614a1b4834de765f9bb43877f910cc8ce4be40e89042c9223a8bf" +dependencies = [ + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-macros" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.58", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + +[[package]] +name = "tokio-retry" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f57eb36ecbe0fc510036adff84824dd3c24bb781e21bfa67b69d556aa85214f" +dependencies = [ + "pin-project", + "rand", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc6844de72e57df1980054b38be3a9f4702aba4858be64dd700181a8a6d0e1b6" +dependencies = [ + "rustls 0.19.1", + "tokio", + "webpki 0.21.4", +] + +[[package]] +name = "tokio-rustls" +version = "0.23.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59" +dependencies = [ + "rustls 0.20.9", + "tokio", + "webpki 0.22.4", +] + +[[package]] +name = "tokio-rustls" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" +dependencies = [ + "rustls 0.21.10", + "tokio", +] + +[[package]] +name = "tokio-stream" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-tungstenite" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c83b561d025642014097b66e6c1bb422783339e0909e4429cde4749d1990bc38" +dependencies = [ + "futures-util", + "log", + "native-tls", + "tokio", + "tokio-native-tls", + "tungstenite", +] + +[[package]] +name = "tokio-util" +version = "0.6.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36943ee01a6d67977dd3f84a5a1d2efeb4ada3a1ae771cadfaa535d9d9fc6507" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "log", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", + "tracing", +] + +[[package]] +name = "toml" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +dependencies = [ + "serde", +] + +[[package]] +name = "toml" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd79e69d3b627db300ff956027cc6c3798cef26d22526befdfcd12feeb6d2257" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit", +] + +[[package]] +name = "toml_datetime" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.19.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap 2.2.6", + "serde", + "serde_spanned", + "toml_datetime", + "winnow", +] + +[[package]] +name = "tonic" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3082666a3a6433f7f511c7192923fa1fe07c69332d3c6a2e6bb040b569199d5a" +dependencies = [ + "async-trait", + "axum", + "base64 0.21.7", + "bytes", + "futures-core", + "futures-util", + "h2", + "http 0.2.12", + "http-body", + "hyper", + "hyper-timeout", + "percent-encoding", + "pin-project", + "prost 0.11.9", + "tokio", + "tokio-stream", + "tower", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +dependencies = [ + "futures-core", + "futures-util", + "indexmap 1.9.3", + "pin-project", + "pin-project-lite", + "rand", + "slab", + "tokio", + "tokio-util 0.7.10", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-layer" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" + +[[package]] +name = "tower-service" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" + +[[package]] +name = "tracing" +version = "0.1.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.58", +] + +[[package]] +name = "tracing-core" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-futures" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" +dependencies = [ + "pin-project", + "tracing", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-logfmt" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22b8e455f6caa5212a102ec530bf86b8dc5a4c536299bffd84b238fed9119be7" +dependencies = [ + "time 0.3.34", + "tracing", + "tracing-core", + "tracing-subscriber", +] + +[[package]] +name = "tracing-serde" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc6b213177105856957181934e4920de57730fc69bf42c37ee5bb664d406d9e1" +dependencies = [ + "serde", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex", + "serde", + "serde_json", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", + "tracing-serde", +] + +[[package]] +name = "trust-dns-proto" +version = "0.23.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3119112651c157f4488931a01e586aa459736e9d6046d3bd9105ffb69352d374" +dependencies = [ + "async-trait", + "cfg-if", + "data-encoding", + "enum-as-inner", + "futures-channel", + "futures-io", + "futures-util", + "idna 0.4.0", + "ipnet", + "native-tls", + "once_cell", + "rand", + "smallvec", + "thiserror", + "tinyvec", + "tokio", + "tokio-native-tls", + "tracing", + "url", +] + +[[package]] +name = "trust-dns-resolver" +version = "0.23.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10a3e6c3aff1718b3c73e395d1f35202ba2ffa847c6a62eea0db8fb4cfe30be6" +dependencies = [ + "cfg-if", + "futures-util", + "ipconfig", + "lru-cache", + "once_cell", + "parking_lot 0.12.1", + "rand", + "resolv-conf", + "smallvec", + "thiserror", + "tokio", + "tokio-native-tls", + "tracing", + "trust-dns-proto", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "tungstenite" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ef1a641ea34f399a848dea702823bbecfb4c486f911735368f1f137cb8257e1" +dependencies = [ + "byteorder", + "bytes", + "data-encoding", + "http 1.1.0", + "httparse", + "log", + "native-tls", + "rand", + "sha1", + "thiserror", + "url", + "utf-8", +] + +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "types" +version = "0.1.0" +dependencies = [ + "chirp-types", + "http 0.2.12", + "prost 0.10.4", + "prost-types 0.10.1", + "serde", + "serde_json", + "thiserror", + "types-build", + "uuid", +] + +[[package]] +name = "types-build" +version = "0.1.0" +dependencies = [ + "bolt-config", + "heck 0.3.3", + "indoc 1.0.9", + "prost-build", + "regex", + "schemac", + "serde", + "toml 0.7.8", +] + +[[package]] +name = "ucd-trie" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" + +[[package]] +name = "unicase" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" +dependencies = [ + "version_check", +] + +[[package]] +name = "unicode-bidi" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "unicode-normalization" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-segmentation" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" + +[[package]] +name = "unicode_categories" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e" + +[[package]] +name = "unsafe-libyaml" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" + +[[package]] +name = "untrusted" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "unzip-n" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2e7e85a0596447f0f2ac090e16bc4c516c6fe91771fb0c0ccf7fa3dae896b9c" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "upload-complete" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "chrono", + "nsfw-image-score", + "prost 0.10.4", + "reqwest", + "rivet-operation", + "s3-util", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "upload-get", + "upload-prepare", + "url", +] + +[[package]] +name = "upload-file-list" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "chrono", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "upload-get" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "chrono", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "upload-prepare", +] + +[[package]] +name = "upload-list-for-user" +version = "0.0.34" +dependencies = [ + "chirp-client", + "chirp-worker", + "chrono", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "upload-prepare", +] + +[[package]] +name = "upload-prepare" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "chrono", + "prost 0.10.4", + "rand", + "reqwest", + "rivet-operation", + "s3-util", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "upload-complete", + "upload-get", +] + +[[package]] +name = "upload-provider-fill" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "futures-util", + "indoc 1.0.9", + "prost 0.10.4", + "reqwest", + "rivet-connection", + "rivet-operation", + "rivet-pools", + "s3-util", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "tokio", + "tracing", + "tracing-logfmt", + "tracing-subscriber", +] + +[[package]] +name = "upload-worker" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "rivet-health-checks", + "rivet-metrics", + "rivet-runtime", + "s3-util", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "upload-get", + "upload-prepare", +] + +[[package]] +name = "ureq" +version = "2.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11f214ce18d8b2cbe84ed3aa6486ed3f5b285cf8d8fbdbce9f3f767a724adc35" +dependencies = [ + "base64 0.21.7", + "flate2", + "log", + "once_cell", + "rustls 0.22.3", + "rustls-pki-types", + "rustls-webpki 0.102.2", + "url", + "webpki-roots 0.26.1", +] + +[[package]] +name = "url" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" +dependencies = [ + "form_urlencoded", + "idna 0.5.0", + "percent-encoding", +] + +[[package]] +name = "urlencoding" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" + +[[package]] +name = "user-avatar-upload-complete" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-user", + "prost 0.10.4", + "reqwest", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "upload-complete", + "upload-get", + "upload-prepare", +] + +[[package]] +name = "user-delete-pending" +version = "0.0.38" +dependencies = [ + "chirp-client", + "chirp-worker", + "chrono", + "futures-util", + "indoc 1.0.9", + "lazy_static", + "prost 0.10.4", + "rivet-connection", + "rivet-operation", + "rivet-pools", + "rivet-runtime", + "tokio", + "tracing", + "tracing-logfmt", + "tracing-subscriber", +] + +[[package]] +name = "user-dev-worker" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "game-get", + "team-member-list", +] + +[[package]] +name = "user-follow-count" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "user-follow-toggle", +] + +[[package]] +name = "user-follow-get" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "user-follow-toggle", +] + +[[package]] +name = "user-follow-list" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "user-follow-toggle", +] + +[[package]] +name = "user-follow-relationship-get" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "user-follow-toggle", +] + +[[package]] +name = "user-follow-request-list" +version = "0.0.35" +dependencies = [ + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "user-follow-toggle", +] + +[[package]] +name = "user-follow-toggle" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "user-follow-worker" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "rivet-health-checks", + "rivet-metrics", + "rivet-runtime", +] + +[[package]] +name = "user-get" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-user", + "prost 0.10.4", + "rand", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "upload-file-list", + "upload-get", +] + +[[package]] +name = "user-identity-create" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "email-address-parser", + "faker-user", + "prost 0.10.4", + "rivet-operation", +] + +[[package]] +name = "user-identity-delete" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-user", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "user-identity-create", +] + +[[package]] +name = "user-identity-get" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-user", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "user-identity-create", +] + +[[package]] +name = "user-mutual-friend-list" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "user-follow-toggle", +] + +[[package]] +name = "user-pending-delete-toggle" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-user", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "user-identity-create", + "user-identity-get", +] + +[[package]] +name = "user-presence-gc" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "chrono", + "futures-util", + "indoc 1.0.9", + "lazy_static", + "prost 0.10.4", + "rivet-connection", + "rivet-health-checks", + "rivet-metrics", + "rivet-operation", + "rivet-pools", + "rivet-runtime", + "rivet-util-user-presence", + "tokio", + "tracing", + "tracing-logfmt", + "tracing-subscriber", + "user-presence-touch", +] + +[[package]] +name = "user-presence-get" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "chrono", + "prost 0.10.4", + "rivet-operation", + "rivet-util-user-presence", +] + +[[package]] +name = "user-presence-touch" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-user", + "prost 0.10.4", + "rivet-operation", + "rivet-util-user-presence", +] + +[[package]] +name = "user-presence-worker" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-user", + "rivet-health-checks", + "rivet-metrics", + "rivet-runtime", + "rivet-util-user-presence", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "user-profile-validate" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-user", + "profanity-check", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "user-get", +] + +[[package]] +name = "user-report-worker" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "rivet-health-checks", + "rivet-metrics", + "rivet-runtime", +] + +[[package]] +name = "user-resolve-access-token" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-user", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "user-identity-create", +] + +[[package]] +name = "user-resolve-email" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-user", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "user-identity-create", +] + +[[package]] +name = "user-search" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "lazy_static", + "prost 0.10.4", + "regex", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "user-identity-create", +] + +[[package]] +name = "user-search-user-gc" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "chrono", + "futures-util", + "indoc 1.0.9", + "lazy_static", + "prost 0.10.4", + "rivet-connection", + "rivet-operation", + "rivet-runtime", + "tokio", + "tracing", + "tracing-logfmt", + "tracing-subscriber", + "user-follow-count", + "user-identity-get", +] + +[[package]] +name = "user-team-list" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", +] + +[[package]] +name = "user-token-create" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "faker-user", + "prost 0.10.4", + "rivet-operation", + "sqlx 0.7.4 (git+https://github.com/rivet-gg/sqlx?rev=08d6e61aa0572e7ec557abbedb72cebb96e1ac5b)", + "token-create", +] + +[[package]] +name = "user-worker" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "chrono", + "faker-user", + "game-get", + "game-namespace-get", + "identity-config-version-get", + "lazy_static", + "rivet-convert", + "rivet-health-checks", + "rivet-metrics", + "rivet-runtime", + "team-get", + "team-member-list", + "upload-get", + "upload-list-for-user", + "upload-prepare", + "user-get", + "user-identity-delete", + "user-profile-validate", + "user-team-list", +] + +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + +[[package]] +name = "uuid" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a183cf7feeba97b4dd1c0d46788634f6221d87fa961b305bed08c851829efcc0" +dependencies = [ + "getrandom", + "serde", +] + +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.10.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasite" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" + +[[package]] +name = "wasm-bindgen" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.58", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.58", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" + +[[package]] +name = "wasm-streams" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b65dc4c90b63b118468cf747d8bf3566c1913ef60be765b5730ead9e0a3ba129" +dependencies = [ + "futures-util", + "js-sys", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "web-sys" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki" +version = "0.21.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8e38c0608262c46d4a56202ebabdeb094cef7e560ca7a226c6bf055188aa4ea" +dependencies = [ + "ring 0.16.20", + "untrusted 0.7.1", +] + +[[package]] +name = "webpki" +version = "0.22.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed63aea5ce73d0ff405984102c42de94fc55a6b75765d621c65262469b3c9b53" +dependencies = [ + "ring 0.17.8", + "untrusted 0.9.0", +] + +[[package]] +name = "webpki-roots" +version = "0.22.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c71e40d7d2c34a5106301fb632274ca37242cd0c9d3e64dbece371a40a2d87" +dependencies = [ + "webpki 0.22.4", +] + +[[package]] +name = "webpki-roots" +version = "0.25.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" + +[[package]] +name = "webpki-roots" +version = "0.26.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3de34ae270483955a94f4b21bdaaeb83d508bb84a01435f393818edb0012009" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "which" +version = "4.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" +dependencies = [ + "either", + "home", + "once_cell", + "rustix", +] + +[[package]] +name = "whoami" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a44ab49fad634e88f55bf8f9bb3abd2f27d7204172a112c7c9987e01c1c94ea9" +dependencies = [ + "redox_syscall 0.4.1", + "wasite", +] + +[[package]] +name = "widestring" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "653f141f39ec16bba3c5abe400a0c60da7468261cc2cbf36805022876bc721a8" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-core" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ + "windows-targets 0.52.4", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.4", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b" +dependencies = [ + "windows_aarch64_gnullvm 0.52.4", + "windows_aarch64_msvc 0.52.4", + "windows_i686_gnu 0.52.4", + "windows_i686_msvc 0.52.4", + "windows_x86_64_gnu 0.52.4", + "windows_x86_64_gnullvm 0.52.4", + "windows_x86_64_msvc 0.52.4", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8" + +[[package]] +name = "winnow" +version = "0.5.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] + +[[package]] +name = "winreg" +version = "0.50.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" +dependencies = [ + "cfg-if", + "windows-sys 0.48.0", +] + +[[package]] +name = "workflow-gc" +version = "0.0.1" +dependencies = [ + "chirp-client", + "chirp-worker", + "rivet-connection", + "rivet-health-checks", + "rivet-metrics", + "rivet-operation", + "rivet-runtime", + "tokio", + "tracing", + "tracing-logfmt", + "tracing-subscriber", +] + +[[package]] +name = "xmlparser" +version = "0.13.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66fee0b777b0f5ac1c69bb06d361268faafa61cd4682ae064a171c16c433e9e4" + +[[package]] +name = "yaml-rust" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85" +dependencies = [ + "linked-hash-map", +] + +[[package]] +name = "zerocopy" +version = "0.7.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.58", +] + +[[package]] +name = "zeroize" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d" diff --git a/svc/Cargo.toml b/svc/Cargo.toml index 53fc0bf20..917486ee3 100644 --- a/svc/Cargo.toml +++ b/svc/Cargo.toml @@ -83,6 +83,8 @@ members = [ "pkg/custom-user-avatar/ops/list-for-game", "pkg/custom-user-avatar/ops/upload-complete", "pkg/debug/ops/email-res", + "pkg/ds/ops/server-create", + "pkg/ds/ops/server-delete", "pkg/email-verification/ops/complete", "pkg/email-verification/ops/create", "pkg/email/ops/send", @@ -204,7 +206,6 @@ members = [ "pkg/region/ops/recommend", "pkg/region/ops/resolve", "pkg/region/ops/resolve-for-game", - "pkg/servers/ops/server-create", "pkg/team-invite/ops/get", "pkg/team-invite/worker", "pkg/team/ops/avatar-upload-complete", diff --git a/svc/api/cloud/Cargo.toml b/svc/api/cloud/Cargo.toml index 5aad793ab..3392d6e0e 100644 --- a/svc/api/cloud/Cargo.toml +++ b/svc/api/cloud/Cargo.toml @@ -105,6 +105,7 @@ team-get = { path = "../../pkg/team/ops/get" } team-member-count = { path = "../../pkg/team/ops/member-count" } team-validate = { path = "../../pkg/team/ops/validate" } tier-list = { path = "../../pkg/tier/ops/list" } +token-create = { path = "../../pkg/token/ops/create" } token-revoke = { path = "../../pkg/token/ops/revoke" } upload-complete = { path = "../../pkg/upload/ops/complete" } upload-file-list = { path = "../../pkg/upload/ops/file-list" } diff --git a/svc/api/cloud/src/route/games/tokens.rs b/svc/api/cloud/src/route/games/tokens.rs index ad4e73e8e..c6312dd39 100644 --- a/svc/api/cloud/src/route/games/tokens.rs +++ b/svc/api/cloud/src/route/games/tokens.rs @@ -1,9 +1,13 @@ use api_helper::ctx::Ctx; use rivet_api::models; -use rivet_operation::prelude::*; +use rivet_operation::prelude::{proto::backend::pkg::token, *}; use crate::auth::Auth; +// Also see user-token-create/src/main.rs +pub const TOKEN_TTL: i64 = util::duration::minutes(15); +pub const REFRESH_TOKEN_TTL: i64 = util::duration::days(90); + // MARK: POST /games/{}/tokens/cloud pub async fn create_cloud_token( ctx: Ctx, @@ -23,3 +27,41 @@ pub async fn create_cloud_token( token: token_res.token, }) } + +// MARK: POST /games/{}/tokens/service +pub async fn create_service_token( + ctx: Ctx, + game_id: Uuid, + _body: serde_json::Value, +) -> GlobalResult { + ctx.auth() + .check_game_write_or_admin(ctx.op_ctx(), game_id) + .await?; + + let token_res = op!([ctx] token_create { + token_config: Some(token::create::request::TokenConfig { + ttl: TOKEN_TTL, + }), + refresh_token_config: Some(token::create::request::TokenConfig { + ttl: REFRESH_TOKEN_TTL, + }), + issuer: "api-cloud".to_owned(), + client: Some(ctx.client_info()), + kind: Some(token::create::request::Kind::New( + token::create::request::KindNew { entitlements: vec![proto::claims::Entitlement { + kind: Some(proto::claims::entitlement::Kind::GameService( + proto::claims::entitlement::GameService { + game_id: Some(game_id.into()), + } + )), + }]}, + )), + label: Some("game_service".to_owned()), + ..Default::default() + }) + .await?; + + Ok(models::CloudGamesCreateServiceTokenResponse { + token: unwrap!(token_res.token).token, + }) +} diff --git a/svc/api/cloud/src/route/mod.rs b/svc/api/cloud/src/route/mod.rs index 5eb6f0483..de861ab11 100644 --- a/svc/api/cloud/src/route/mod.rs +++ b/svc/api/cloud/src/route/mod.rs @@ -147,6 +147,9 @@ define_router! { "games" / Uuid / "tokens" / "cloud": { POST: games::tokens::create_cloud_token(body: serde_json::Value), }, + "games" / Uuid / "tokens" / "service": { + POST: games::tokens::create_service_token(body: serde_json::Value), + }, "games" / Uuid / "matchmaker" / "lobbies" / "export-history": { POST: games::matchmaker::export_history(body: models::CloudGamesExportMatchmakerLobbyHistoryRequest), }, diff --git a/svc/api/monolith/Cargo.toml b/svc/api/monolith/Cargo.toml index 0d8132676..3b33435cd 100644 --- a/svc/api/monolith/Cargo.toml +++ b/svc/api/monolith/Cargo.toml @@ -31,4 +31,5 @@ api-job = { path = "../job" } api-kv = { path = "../kv" } api-matchmaker = { path = "../matchmaker" } api-portal = { path = "../portal" } +api-servers = { path = "../servers" } api-status = { path = "../status" } diff --git a/svc/api/monolith/Service.toml b/svc/api/monolith/Service.toml index 0fcaa7f92..4f509cae8 100644 --- a/svc/api/monolith/Service.toml +++ b/svc/api/monolith/Service.toml @@ -19,6 +19,7 @@ paths = [ "/module", "/portal", "/provision", + "/servers", "/status", ] @@ -82,6 +83,12 @@ subdomain = "portal.api" strip-prefix = "/v1" add-path = "/portal" +[[api.router.mounts]] +deprecated = true +subdomain = "servers.api" +strip-prefix = "/v1" +add-path = "/servers" + [[api.router.mounts]] deprecated = true subdomain = "status.api" diff --git a/svc/api/monolith/src/route/mod.rs b/svc/api/monolith/src/route/mod.rs index 8d5905e4c..0ed0ba74d 100644 --- a/svc/api/monolith/src/route/mod.rs +++ b/svc/api/monolith/src/route/mod.rs @@ -58,6 +58,10 @@ define_router! { path: api_portal::route::Router, prefix: "portal", }, + { + path: api_servers::route::Router, + prefix: "servers", + }, { path: api_status::route::Router, prefix: "status", diff --git a/svc/api/servers/Cargo.toml b/svc/api/servers/Cargo.toml index ae2e9f06c..b4360579e 100644 --- a/svc/api/servers/Cargo.toml +++ b/svc/api/servers/Cargo.toml @@ -16,6 +16,7 @@ rivet-api = { path = "../../../sdks/full/rust" } rivet-cache = { path = "../../../lib/cache/build" } rivet-claims = { path = "../../../lib/claims" } rivet-health-checks = { path = "../../../lib/health-checks" } +rivet-convert = { path = "../../../lib/convert" } rivet-pools = { path = "../../../lib/pools" } s3-util = { path = "../../../lib/s3-util" } serde = { version = "1.0", features = ["derive"] } @@ -27,12 +28,15 @@ tracing-subscriber = { version = "0.3", default-features = false, features = ["f url = "2.2.2" uuid = { version = "1", features = ["v4"] } +cluster-datacenter-get = { path = "../../pkg/cluster/ops/datacenter-get" } +cluster-datacenter-list = { path = "../../pkg/cluster/ops/datacenter-list" } +cluster-datacenter-resolve-for-name-id = { path = "../../pkg/cluster/ops/datacenter-resolve-for-name-id" } cluster-get = { path = "../../pkg/cluster/ops/get" } +cluster-get-for-game = { path = "../../pkg/cluster/ops/get-for-game" } cluster-list = { path = "../../pkg/cluster/ops/list" } -cluster-datacenter-list = { path = "../../pkg/cluster/ops/datacenter-list" } -cluster-datacenter-get = { path = "../../pkg/cluster/ops/datacenter-get" } cluster-resolve-for-name-id = { path = "../../pkg/cluster/ops/resolve-for-name-id" } -cluster-datacenter-resolve-for-name-id = { path = "../../pkg/cluster/ops/datacenter-resolve-for-name-id" } +ds-server-create = { path = "../../pkg/ds/ops/server-create" } +ds-server-delete = { path = "../../pkg/ds/ops/server-delete" } [dev-dependencies] rivet-connection = { path = "../../../lib/connection" } diff --git a/svc/api/servers/Service.toml b/svc/api/servers/Service.toml index c11f709ca..c2c2993e4 100644 --- a/svc/api/servers/Service.toml +++ b/svc/api/servers/Service.toml @@ -1,5 +1,5 @@ [service] -name = "api-servers" +name = "api-dynamic-servers" [runtime] kind = "rust" diff --git a/svc/api/servers/src/auth.rs b/svc/api/servers/src/auth.rs index 9421b0cee..201d23495 100644 --- a/svc/api/servers/src/auth.rs +++ b/svc/api/servers/src/auth.rs @@ -1,9 +1,13 @@ -use api_helper::auth::{ApiAuth, AuthRateLimitCtx}; +use api_helper::{ + auth::{ApiAuth, AuthRateLimitCtx}, + util::{as_auth_expired, basic_rate_limit}, +}; use proto::claims::Claims; +use rivet_claims::ClaimsDecode; use rivet_operation::prelude::*; pub struct Auth { - _claims: Option, + claims: Option, } #[async_trait] @@ -14,12 +18,28 @@ impl ApiAuth for Auth { ) -> GlobalResult { Self::rate_limit(rate_limit_ctx).await?; - todo!(); + Ok(Auth { + claims: if let Some(api_token) = api_token { + Some(as_auth_expired(rivet_claims::decode(&api_token)?)?) + } else { + None + }, + }) + } + + async fn rate_limit(rate_limit_ctx: AuthRateLimitCtx<'_>) -> GlobalResult<()> { + basic_rate_limit(rate_limit_ctx).await + } +} - Ok(Auth { _claims: None }) +impl Auth { + pub fn claims(&self) -> GlobalResult<&Claims> { + self.claims + .as_ref() + .ok_or_else(|| err_code!(API_UNAUTHORIZED, reason = "No bearer token provided.")) } - async fn rate_limit(_rate_limit_ctx: AuthRateLimitCtx<'_>) -> GlobalResult<()> { - Ok(()) + pub fn server(&self) -> GlobalResult { + self.claims()?.as_game_service() } } diff --git a/svc/api/servers/src/route/images.rs b/svc/api/servers/src/route/images.rs deleted file mode 100644 index 3ff46b58c..000000000 --- a/svc/api/servers/src/route/images.rs +++ /dev/null @@ -1,17 +0,0 @@ -use api_helper::ctx::Ctx; -use proto::backend::pkg::*; -use rivet_api::models; -use rivet_operation::prelude::*; -use serde_json::json; - -use crate::auth::Auth; - -// MARK: POST /images -pub async fn create( - ctx: Ctx, - body: models::ServersImagesCreateRequest, -) -> GlobalResult { - todo!(); - - Ok(json!({})) -} diff --git a/svc/api/servers/src/route/mod.rs b/svc/api/servers/src/route/mod.rs index e6a6a7587..b82293698 100644 --- a/svc/api/servers/src/route/mod.rs +++ b/svc/api/servers/src/route/mod.rs @@ -3,7 +3,6 @@ use hyper::{Body, Request, Response}; use rivet_api::models; use uuid::Uuid; -pub mod images; pub mod servers; pub async fn handle( @@ -23,17 +22,13 @@ define_router! { routes: { "servers" : { POST: servers::create( - body: models::ServersServersCreateRequest, + body: models::ServersCreateServerRequest, ), }, "servers" / Uuid : { - DELETE: servers::delete(), - }, - - "images" : { - POST: images::create( - body: models::ServersImagesCreateRequest, + DELETE: servers::destroy( + query: servers::DeleteQuery, ), }, }, diff --git a/svc/api/servers/src/route/servers.rs b/svc/api/servers/src/route/servers.rs index 7a5b0eb5e..5ebdaa137 100644 --- a/svc/api/servers/src/route/servers.rs +++ b/svc/api/servers/src/route/servers.rs @@ -1,40 +1,27 @@ use api_helper::ctx::Ctx; -use proto::backend::pkg::*; use rivet_api::models; +use rivet_convert::{ApiInto, ApiTryInto}; use rivet_operation::prelude::*; -use serde_json::json; +use serde::{Deserialize, Serialize}; use crate::auth::Auth; // MARK: POST /servers pub async fn create( ctx: Ctx, - body: models::ServersServersCreateRequest, -) -> GlobalResult { - let clusters = op!([ctx] cluster_resolve_for_name_id { - name_ids: vec![body.cluster.clone()] + body: models::ServersCreateServerRequest, +) -> GlobalResult { + let game_id = ctx.auth().server()?.game_id; + let games = op!([ctx] cluster_get_for_game { + game_ids: vec![game_id.into()] }) .await? - .clusters; + .games; - if clusters.is_empty() { - bail_with!(CLUSTER_NOT_FOUND); - } - - let cluster_id = unwrap!(unwrap!(clusters.first()).cluster_id); - - let clusters = op!([ctx] cluster_get { - cluster_ids: vec![cluster_id] - }) - .await? - .clusters; - - let cluster = match clusters.first() { - Some(c) => c, - None => bail_with!(CLUSTER_NOT_FOUND), - }; + let cluster_id = unwrap!(unwrap!(games.first()).cluster_id); let datacenters = op!([ctx] cluster_datacenter_resolve_for_name_id { + cluster_id: Some(cluster_id), name_ids: vec![body.datacenter.clone()] }) .await? @@ -46,23 +33,43 @@ pub async fn create( let datacenter_id = unwrap!(unwrap!(datacenters.first()).datacenter_id); - let datacenters = op!([ctx] cluster_datacenter_get { - datacenter_ids: vec![datacenter_id] + let metadata = serde_json::from_value(body.metadata.unwrap_or_default())?; + + let server = op!([ctx] ds_server_create { + cluster_id: Some(cluster_id), + datacenter_id: Some(datacenter_id), + resources: Some((*body.resources).api_into()), + kill_timeout_ms: body.kill_timeout.unwrap_or_default(), + metadata: metadata, + runtime: Some((*body.runtime).api_try_into()?), }) .await? - .datacenters; + .server; - let datacenter = match datacenters.first() { - Some(d) => d, - None => bail_with!(CLUSTER_DATACENTER_NOT_FOUND), - }; - - Ok(models::ServersServersCreateResponse { server: todo!() }) + Ok(models::ServersCreateServerResponse { + server: Box::new(unwrap!(server).api_try_into()?), + }) } // MARK: DELETE /servers/{server_id} -pub async fn delete(ctx: Ctx, server_id: Uuid) -> GlobalResult { - todo!(); +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct DeleteQuery { + override_kill_timeout: Option, +} + +pub async fn destroy( + ctx: Ctx, + server_id: Uuid, + query: DeleteQuery, +) -> GlobalResult { + let server_id = op!([ctx] ds_server_delete { + server_id: Some(server_id.into()), + override_kill_timeout_ms: query.override_kill_timeout.unwrap_or_default(), + }) + .await? + .server_id; - Ok(json!({})) + Ok(models::ServersDestroyServerResponse { + server_id: unwrap!(server_id).as_uuid(), + }) } diff --git a/svc/api/servers/tests/basic.rs b/svc/api/servers/tests/basic.rs index b14567e0e..ed70f5ece 100644 --- a/svc/api/servers/tests/basic.rs +++ b/svc/api/servers/tests/basic.rs @@ -18,18 +18,20 @@ impl Ctx { .init(); }); - let pools = rivet_pools::from_env("api-servers-test").await.unwrap(); + let pools = rivet_pools::from_env("api-dynamic-servers-test") + .await + .unwrap(); let cache = rivet_cache::CacheInner::new( - "api-servers-test".to_string(), + "api-dynamic-servers-test".to_string(), util::env::var("RIVET_SOURCE_HASH").unwrap(), pools.redis_cache().unwrap(), ); let client = chirp_client::SharedClient::from_env(pools.clone()) .expect("create client") - .wrap_new("api-servers-test"); + .wrap_new("api-dynamic-servers-test"); let conn = rivet_connection::Connection::new(client, pools, cache); let op_ctx = OperationContext::new( - "api-servers-test".to_string(), + "api-dynamic-servers-test".to_string(), std::time::Duration::from_secs(60), conn, Uuid::new_v4(), @@ -37,7 +39,6 @@ impl Ctx { util::timestamp::now(), util::timestamp::now(), (), - Vec::new(), ); Ctx { op_ctx } diff --git a/svc/pkg/ds/db/servers/Service.toml b/svc/pkg/ds/db/servers/Service.toml new file mode 100644 index 000000000..352986b38 --- /dev/null +++ b/svc/pkg/ds/db/servers/Service.toml @@ -0,0 +1,7 @@ +[service] +name = "db-dynamic-servers" + +[runtime] +kind = "crdb" + +[database] diff --git a/svc/pkg/ds/db/servers/migrations/20240501133910_init.down.sql b/svc/pkg/ds/db/servers/migrations/20240501133910_init.down.sql new file mode 100644 index 000000000..e69de29bb diff --git a/svc/pkg/ds/db/servers/migrations/20240501133910_init.up.sql b/svc/pkg/ds/db/servers/migrations/20240501133910_init.up.sql new file mode 100644 index 000000000..d4ad485ce --- /dev/null +++ b/svc/pkg/ds/db/servers/migrations/20240501133910_init.up.sql @@ -0,0 +1,45 @@ +CREATE TABLE servers ( + server_id UUID PRIMARY KEY, + game_id UUID NOT NULL, + datacenter_id UUID NOT NULL, + -- The server will be locked to a certain cluster, but a game might change + -- clusters, and therefore the server will be moved to a new cluster. + cluster_id UUID NOT NULL, + -- This represents a map + metadata JSONB NOT NULL, + resources_cpu_millicores INT NOT NULL, + resources_memory_mib INT NOT NULL, + kill_timeout_ms INT NOT NULL, + + create_ts INT NOT NULL, + -- When the server was marked to be deleted by Rivet + destroy_ts INT, + + INDEX (game_id) +); + +CREATE TABLE docker_runtimes ( + server_id UUID PRIMARY KEY REFERENCES servers(server_id), + image_id UUID NOT NULL, + args STRING[], + network_mode INT NOT NULL, -- rivet.backend.dynamic_servers.DockerNetworkMode + -- This is a map + environment JSONB NOT NULL +); + +CREATE TABLE docker_ports_protocol_game_guard ( + server_id UUID NOT NULL REFERENCES docker_runtimes(server_id), + port_name string NOT NULL, + port_number INT NOT NULL, + protocol INT NOT NULL, -- rivet.backend.dynamic_servers.GameGuardProtocol + + PRIMARY KEY (server_id, port_name) +); + +CREATE TABLE docker_ports_host ( + server_id UUID NOT NULL REFERENCES docker_runtimes(server_id), + port_name string NOT NULL, + port_number INT NOT NULL, + + PRIMARY KEY (server_id, port_name) +); \ No newline at end of file diff --git a/svc/pkg/servers/ops/server-create/Cargo.toml b/svc/pkg/ds/ops/server-create/Cargo.toml similarity index 96% rename from svc/pkg/servers/ops/server-create/Cargo.toml rename to svc/pkg/ds/ops/server-create/Cargo.toml index d9c3cf880..e521ed5c0 100644 --- a/svc/pkg/servers/ops/server-create/Cargo.toml +++ b/svc/pkg/ds/ops/server-create/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "servers-server-create" +name = "ds-server-create" version = "0.0.1" edition = "2021" authors = ["Rivet Gaming, LLC "] diff --git a/svc/pkg/ds/ops/server-create/Service.toml b/svc/pkg/ds/ops/server-create/Service.toml new file mode 100644 index 000000000..a0260ec28 --- /dev/null +++ b/svc/pkg/ds/ops/server-create/Service.toml @@ -0,0 +1,10 @@ +[service] +name = "ds-server-create" + +[runtime] +kind = "rust" + +[operation] + +[databases] +db-dynamic-servers = {} diff --git a/svc/pkg/ds/ops/server-create/src/lib.rs b/svc/pkg/ds/ops/server-create/src/lib.rs new file mode 100644 index 000000000..323c3ddc5 --- /dev/null +++ b/svc/pkg/ds/ops/server-create/src/lib.rs @@ -0,0 +1,193 @@ +use futures_util::FutureExt; +use proto::backend::{self, pkg::*}; +use rivet_operation::prelude::*; + +#[operation(name = "ds-server-create")] +pub async fn handle( + ctx: OperationContext, +) -> GlobalResult { + let resources = unwrap_ref!(ctx.resources).clone(); + let runtime = unwrap!(ctx.runtime.clone()); + + let server_id = Uuid::new_v4(); + let game_id = unwrap_ref!(ctx.game_id).as_uuid(); + let cluster_id = unwrap_ref!(ctx.cluster_id).as_uuid(); + let datacenter_id = unwrap_ref!(ctx.datacenter_id).as_uuid(); + + let create_ts = ctx.ts(); + + rivet_pools::utils::crdb::tx(&ctx.crdb().await?, |tx| { + let ctx = ctx.clone(); + let runtime = runtime.clone(); + + async move { + match runtime { + dynamic_servers::server_create::request::Runtime::DockerRuntime(docker_runtime) => { + #[derive(Default)] + struct GameGuardUnnest { + port_names: Vec, + port_numbers: Vec>, + protocols: Vec, + } + + #[derive(Default)] + struct HostUnnest { + port_names: Vec, + port_numbers: Vec>, + } + + let docker_runtime_clone = docker_runtime.clone(); + + let docker_network = unwrap!(docker_runtime.network); + let (game_guard_unnest, host_unnest) = + unwrap!(docker_network.ports.iter().try_fold( + (GameGuardUnnest::default(), HostUnnest::default()), + |(mut game_guard_unnest, mut host_unnest), (name, port)| { + let routing = unwrap!(port.routing.clone()); + match routing { + backend::dynamic_servers::docker_port::Routing::GameGuard( + gameguard_protocol, + ) => { + game_guard_unnest.port_names.push(name.clone()); + game_guard_unnest.port_numbers.push(port.port); + game_guard_unnest + .protocols + .push(gameguard_protocol.protocol); + } + backend::dynamic_servers::docker_port::Routing::Host(_) => { + host_unnest.port_names.push(name.clone()); + host_unnest.port_numbers.push(port.port); + } + }; + Ok::<_, GlobalError>((game_guard_unnest, host_unnest)) + }, + )); + + sql_execute!( + [ctx, @tx tx] + " + WITH + servers_cte AS ( + INSERT INTO + db_dynamic_servers.servers ( + server_id, + game_id, + datacenter_id, + cluster_id, + metadata, + resources_cpu_millicores, + resources_memory_mib, + kill_timeout_ms, + create_ts + ) + VALUES + ($1, $2, $3, $4, $5, $6, $7, $8, $9) + RETURNING + 1 + ), + docker_runtimes_cte AS ( + INSERT INTO + db_dynamic_servers.docker_runtimes ( + server_id, + image_id, + args, + network_mode, + environment + ) + VALUES + ($1, $10, $11, $12, $13) + RETURNING + 1 + ), + docker_ports_host_cte AS ( + INSERT INTO + db_dynamic_servers.docker_ports_host ( + server_id, + port_name, + port_number + ) + SELECT + $1, + t.* + FROM + unnest($14, $15) AS t (port_name, port_number) + RETURNING + 1 + ), + docker_ports_protocol_game_guard_cte AS ( + INSERT INTO + db_dynamic_servers.docker_ports_protocol_game_guard ( + server_id, + port_name, + port_number, + protocol + ) + SELECT + $1, + t.* + FROM + unnest($16, $17, $18) AS t (port_name, port_number, protocol) + RETURNING + 1 + ) + SELECT + 1 + ", + server_id, + game_id, + datacenter_id, + cluster_id, + serde_json::value::to_raw_value(&ctx.metadata.to_owned())?.to_string(), // 5 + resources.cpu_millicores, + resources.memory_mib, + ctx.kill_timeout_ms, + create_ts, + unwrap!(docker_runtime_clone.image_id).as_uuid(), // 10 + docker_runtime_clone.args, + unwrap!(docker_runtime_clone.network).mode, + serde_json::value::to_raw_value(&docker_runtime_clone.environment)?.to_string(), + host_unnest.port_names, + host_unnest.port_numbers, // 15 + game_guard_unnest.port_names, + game_guard_unnest.port_numbers, + game_guard_unnest.protocols, + ) + .await?; + } + } + + Ok(()) + } + .boxed() + }) + .await?; + + Ok(dynamic_servers::server_create::Response { + server: Some(backend::dynamic_servers::Server { + server_id: Some(server_id.into()), + game_id: Some(game_id.into()), + datacenter_id: Some(datacenter_id.into()), + cluster_id: Some(cluster_id.into()), + metadata: ctx.metadata.clone(), + resources: Some(backend::dynamic_servers::ServerResources { + cpu_millicores: resources.cpu_millicores, + memory_mib: resources.memory_mib, + }), + kill_timeout_ms: ctx.kill_timeout_ms, + create_ts, + destroy_ts: None, + runtime: Some(match runtime { + dynamic_servers::server_create::request::Runtime::DockerRuntime(docker_runtime) => { + backend::dynamic_servers::server::Runtime::DockerRuntime( + backend::dynamic_servers::DockerRuntime { + args: docker_runtime.args, + environment: docker_runtime.environment, + image_id: docker_runtime.image_id, + network: docker_runtime.network, + }, + ) + } + }), + }), + }) +} diff --git a/svc/pkg/ds/ops/server-create/tests/integration.rs b/svc/pkg/ds/ops/server-create/tests/integration.rs new file mode 100644 index 000000000..0c25ec363 --- /dev/null +++ b/svc/pkg/ds/ops/server-create/tests/integration.rs @@ -0,0 +1,41 @@ +use std::collections::HashMap; + +use chirp_worker::prelude::*; + +#[worker_test] +async fn create(ctx: TestCtx) { + let datacenter_id = Uuid::new_v4(); + let cluster_id = Uuid::new_v4(); + let game_id = Uuid::new_v4(); + let image_id = Uuid::new_v4(); + + let server = op!([ctx] ds_server_create { + game_id: Some(game_id.into()), + cluster_id: Some(cluster_id.into()), + datacenter_id: Some(datacenter_id.into()), + resources: Some(proto::backend::dynamic_servers::ServerResources { cpu_millicores: 1000, memory_mib: 1000 }), + kill_timeout_ms: 0, + metadata: HashMap::new(), + runtime: Some( + proto::backend::pkg::dynamic_servers::server_create::request::Runtime::DockerRuntime( + proto::backend::dynamic_servers::DockerRuntime { + args: Vec::new(), + environment: HashMap::new(), + image_id: Some(image_id.into()), + network: Some( + proto::backend::dynamic_servers::DockerNetwork { + mode: 1, + ports: HashMap::new() + } + ) + } + ) + ), + }) + .await + .unwrap() + .server + .unwrap(); + + assert_eq!(game_id, server.game_id.unwrap().as_uuid()); +} diff --git a/svc/pkg/ds/ops/server-delete/Cargo.toml b/svc/pkg/ds/ops/server-delete/Cargo.toml new file mode 100644 index 000000000..4a0005c6f --- /dev/null +++ b/svc/pkg/ds/ops/server-delete/Cargo.toml @@ -0,0 +1,17 @@ +[package] +name = "ds-server-delete" +version = "0.0.1" +edition = "2021" +authors = ["Rivet Gaming, LLC "] +license = "Apache-2.0" + +[dependencies] +chirp-client = { path = "../../../../../lib/chirp/client" } +rivet-operation = { path = "../../../../../lib/operation/core" } + +[dependencies.sqlx] +version = "0.7" +default-features = false + +[dev-dependencies] +chirp-worker = { path = "../../../../../lib/chirp/worker" } diff --git a/svc/pkg/ds/ops/server-delete/Service.toml b/svc/pkg/ds/ops/server-delete/Service.toml new file mode 100644 index 000000000..526238336 --- /dev/null +++ b/svc/pkg/ds/ops/server-delete/Service.toml @@ -0,0 +1,10 @@ +[service] +name = "ds-server-delete" + +[runtime] +kind = "rust" + +[operation] + +[databases] +db-dynamic-servers = {} diff --git a/svc/pkg/ds/ops/server-delete/src/lib.rs b/svc/pkg/ds/ops/server-delete/src/lib.rs new file mode 100644 index 000000000..0afd2ceae --- /dev/null +++ b/svc/pkg/ds/ops/server-delete/src/lib.rs @@ -0,0 +1,38 @@ +use futures_util::FutureExt; +use proto::backend::pkg::*; +use rivet_operation::prelude::*; + +#[operation(name = "ds-server-delete")] +pub async fn handle( + ctx: OperationContext, +) -> GlobalResult { + let server_id = unwrap_ref!(ctx.server_id).as_uuid(); + + rivet_pools::utils::crdb::tx(&ctx.crdb().await?, |tx| { + let ctx = ctx.clone(); + + async move { + sql_execute!( + [ctx, @tx tx] + " + UPDATE db_dynamic_servers.servers + SET delete_ts = $2 + WHERE + server_id = $1 + AND delete_ts IS NULL + ", + server_id, + ctx.ts(), + ) + .await?; + + Ok(()) + } + .boxed() + }) + .await?; + + Ok(dynamic_servers::server_delete::Response { + server_id: Some(server_id.into()), + }) +} diff --git a/svc/pkg/servers/ops/server-create/tests/integration.rs b/svc/pkg/ds/ops/server-delete/tests/integration.rs similarity index 100% rename from svc/pkg/servers/ops/server-create/tests/integration.rs rename to svc/pkg/ds/ops/server-delete/tests/integration.rs diff --git a/svc/pkg/ds/types/server-create.proto b/svc/pkg/ds/types/server-create.proto new file mode 100644 index 000000000..d64d2e58f --- /dev/null +++ b/svc/pkg/ds/types/server-create.proto @@ -0,0 +1,23 @@ +syntax = "proto3"; + +package rivet.backend.pkg.dynamic_servers.server_create; + +import "proto/common.proto"; +import "proto/backend/dynamic_servers.proto"; + +message Request { + rivet.common.Uuid game_id = 1; + rivet.common.Uuid cluster_id = 2; + rivet.common.Uuid datacenter_id = 3; + rivet.backend.dynamic_servers.ServerResources resources = 4; + int64 kill_timeout_ms = 5; + map metadata = 6; + + oneof runtime { + rivet.backend.dynamic_servers.DockerRuntime docker_runtime = 7; + } +} + +message Response { + rivet.backend.dynamic_servers.Server server = 1; +} diff --git a/svc/pkg/ds/types/server-delete.proto b/svc/pkg/ds/types/server-delete.proto new file mode 100644 index 000000000..9212894cb --- /dev/null +++ b/svc/pkg/ds/types/server-delete.proto @@ -0,0 +1,14 @@ +syntax = "proto3"; + +package rivet.backend.pkg.dynamic_servers.server_delete; + +import "proto/common.proto"; + +message Request { + rivet.common.Uuid server_id = 1; + int64 override_kill_timeout_ms = 2; +} + +message Response { + rivet.common.Uuid server_id = 1; +} diff --git a/svc/pkg/servers/ops/server-create/Service.toml b/svc/pkg/servers/ops/server-create/Service.toml deleted file mode 100644 index 06acc8bd1..000000000 --- a/svc/pkg/servers/ops/server-create/Service.toml +++ /dev/null @@ -1,7 +0,0 @@ -[service] -name = "servers-server-create" - -[runtime] -kind = "rust" - -[operation] diff --git a/svc/pkg/servers/ops/server-create/src/lib.rs b/svc/pkg/servers/ops/server-create/src/lib.rs deleted file mode 100644 index 057064baa..000000000 --- a/svc/pkg/servers/ops/server-create/src/lib.rs +++ /dev/null @@ -1,12 +0,0 @@ -use std::collections::HashMap; - -use proto::backend::{self, pkg::*}; -use rivet_operation::prelude::*; -// use chirp_worker::prelude::*; - -#[operation(name = "servers-server-create")] -pub async fn handle( - ctx: OperationContext, -) -> GlobalResult { - todo!(); -} diff --git a/svc/pkg/servers/types/server-create.proto b/svc/pkg/servers/types/server-create.proto deleted file mode 100644 index 519802911..000000000 --- a/svc/pkg/servers/types/server-create.proto +++ /dev/null @@ -1,14 +0,0 @@ -syntax = "proto3"; - -package rivet.backend.pkg.servers.server_create; - -import "proto/common.proto"; -import "proto/backend/servers.proto"; - -message Request { - repeated rivet.backend.servers.Server servers = 1; -} - -message Response { - repeated rivet.common.Uuid server_ids = 1; -}