From 30b0af5f37b9063d28628d850ed329e0c093f4e1 Mon Sep 17 00:00:00 2001 From: Forest Anderson Date: Mon, 29 Apr 2024 19:03:17 -0400 Subject: [PATCH 1/8] fix: change test relative path --- lib/bolt/core/src/tasks/test.rs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/bolt/core/src/tasks/test.rs b/lib/bolt/core/src/tasks/test.rs index e870fbce29..08993a69dd 100644 --- a/lib/bolt/core/src/tasks/test.rs +++ b/lib/bolt/core/src/tasks/test.rs @@ -389,12 +389,14 @@ async fn exec_test( // Convert path relative to project let relative_path = test_binary .path - .strip_prefix(ctx.path()) - .context("path not in project")?; + .strip_prefix(ctx.cargo_target_dir()) + .context(format!("path not in project: {:?}", test_binary.path))?; + + let container_path = Path::new("/target").join(relative_path); let command = format!( "RIVET_TEST_ID={test_id} {} --exact {}", - &relative_path.display(), + &container_path.display(), &test_binary.test_name ); From b80b5a0e11c6d656b99330bdd8e33d649bfbbba5 Mon Sep 17 00:00:00 2001 From: Forest Anderson Date: Thu, 25 Apr 2024 15:57:32 -0400 Subject: [PATCH 2/8] chore: change devcontainer user off root --- .devcontainer/devcontainer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 1ce1973582..2ea921a174 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -4,7 +4,7 @@ "dockerfile": "Dockerfile", "context": "." }, - "remoteUser": "root", + "remoteUser": "vscode", "features": { "ghcr.io/devcontainers/features/docker-in-docker:2": { "moby": true, From 5c33c8f68cc0248cd3d3f0c4ba1a4ebe8d981170 Mon Sep 17 00:00:00 2001 From: Forest Anderson Date: Thu, 25 Apr 2024 19:52:01 -0400 Subject: [PATCH 3/8] docs: add api scope to dev tunnel docs --- docs/infrastructure/dev-tunnel/SETUP.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/infrastructure/dev-tunnel/SETUP.md b/docs/infrastructure/dev-tunnel/SETUP.md index 5e163a3f6d..bfb501186b 100644 --- a/docs/infrastructure/dev-tunnel/SETUP.md +++ b/docs/infrastructure/dev-tunnel/SETUP.md @@ -13,6 +13,7 @@ Make sure to run `nix-shell` for all subsequent commands. - Docker - Linode API Key + - Scope: `Linodes: Read/Write, Firewall: Read/Write` ## Step 1: Create Dev Tunnel @@ -20,7 +21,8 @@ Make sure to run `nix-shell` for all subsequent commands. task dev-tunnel:up ``` -This will prompt you to past your Linode API token. +This will prompt you to past your Linode API token. Running this will create a +new `Nanode 1 GB` instance on Linode. Once complete, this will print an IP to your console like: From 3b8a32166b24e94dd9f23cc32abd75c4962e1972 Mon Sep 17 00:00:00 2001 From: Forest Anderson Date: Mon, 29 Apr 2024 19:05:53 -0400 Subject: [PATCH 4/8] chore: add target directory in dockerfile --- .devcontainer/Dockerfile | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 8285b7338c..e825253840 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -8,3 +8,7 @@ RUN apt-get update \ pkg-config \ build-essential \ protobuf-compiler + +# Create a folder for cargo target to use +RUN mkdir -p /target \ + && chown -R vscode:vscode /target From 8a8db50fe71b5aac1bafeef25f5296aa4f426b27 Mon Sep 17 00:00:00 2001 From: Forest Anderson Date: Fri, 26 Apr 2024 15:47:00 -0400 Subject: [PATCH 5/8] feat(svc): resolve cluster name id op --- svc/Cargo.lock | 11 ++++++ svc/Cargo.toml | 1 + .../ops/resolve-for-name-id/Cargo.toml | 18 ++++++++++ .../ops/resolve-for-name-id/Service.toml | 10 ++++++ .../ops/resolve-for-name-id/src/lib.rs | 35 +++++++++++++++++++ .../resolve-for-name-id/tests/integration.rs | 29 +++++++++++++++ .../cluster/types/resolve-for-name-id.proto | 19 ++++++++++ 7 files changed, 123 insertions(+) create mode 100644 svc/pkg/cluster/ops/resolve-for-name-id/Cargo.toml create mode 100644 svc/pkg/cluster/ops/resolve-for-name-id/Service.toml create mode 100644 svc/pkg/cluster/ops/resolve-for-name-id/src/lib.rs create mode 100644 svc/pkg/cluster/ops/resolve-for-name-id/tests/integration.rs create mode 100644 svc/pkg/cluster/types/resolve-for-name-id.proto diff --git a/svc/Cargo.lock b/svc/Cargo.lock index f316ab193b..94684421dd 100644 --- a/svc/Cargo.lock +++ b/svc/Cargo.lock @@ -2565,6 +2565,17 @@ dependencies = [ "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", +] + [[package]] name = "cluster-server-get" version = "0.0.1" diff --git a/svc/Cargo.toml b/svc/Cargo.toml index 332e341d95..5c2ce3a6e1 100644 --- a/svc/Cargo.toml +++ b/svc/Cargo.toml @@ -69,6 +69,7 @@ members = [ "pkg/cluster/ops/get", "pkg/cluster/ops/get-for-game", "pkg/cluster/ops/list", + "pkg/cluster/ops/resolve-for-name-id", "pkg/cluster/ops/server-get", "pkg/cluster/ops/server-list", "pkg/cluster/ops/server-resolve-for-ip", diff --git a/svc/pkg/cluster/ops/resolve-for-name-id/Cargo.toml b/svc/pkg/cluster/ops/resolve-for-name-id/Cargo.toml new file mode 100644 index 0000000000..38b7161a5a --- /dev/null +++ b/svc/pkg/cluster/ops/resolve-for-name-id/Cargo.toml @@ -0,0 +1,18 @@ +[package] +name = "cluster-resolve-for-name-id" +version = "0.0.1" +edition = "2018" +authors = ["Rivet Gaming, LLC "] +license = "Apache-2.0" + +[dependencies] +chirp-client = { path = "../../../../../lib/chirp/client" } +prost = "0.10" +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/cluster/ops/resolve-for-name-id/Service.toml b/svc/pkg/cluster/ops/resolve-for-name-id/Service.toml new file mode 100644 index 0000000000..e944c42f5c --- /dev/null +++ b/svc/pkg/cluster/ops/resolve-for-name-id/Service.toml @@ -0,0 +1,10 @@ +[service] +name = "cluster-resolve-for-name-id" + +[runtime] +kind = "rust" + +[operation] + +[databases] +db-cluster = {} diff --git a/svc/pkg/cluster/ops/resolve-for-name-id/src/lib.rs b/svc/pkg/cluster/ops/resolve-for-name-id/src/lib.rs new file mode 100644 index 0000000000..8cafcf1058 --- /dev/null +++ b/svc/pkg/cluster/ops/resolve-for-name-id/src/lib.rs @@ -0,0 +1,35 @@ +use proto::backend::pkg::*; +use rivet_operation::prelude::*; + +#[derive(sqlx::FromRow)] +struct Cluster { + cluster_id: Uuid, + name_id: String, +} + +#[operation(name = "cluster-resolve-for-name-id")] +pub async fn handle( + ctx: OperationContext, +) -> GlobalResult { + let clusters = sql_fetch_all!( + [ctx, Cluster] + " + SELECT + cluster_id, + name_id + FROM db_cluster.clusters + WHERE + name_id = ANY($1) + ", + &ctx.name_ids, + ) + .await? + .into_iter() + .map(|dc| cluster::resolve_for_name_id::response::Cluster { + cluster_id: Some(dc.cluster_id.into()), + name_id: dc.name_id, + }) + .collect::>(); + + Ok(cluster::resolve_for_name_id::Response { clusters }) +} diff --git a/svc/pkg/cluster/ops/resolve-for-name-id/tests/integration.rs b/svc/pkg/cluster/ops/resolve-for-name-id/tests/integration.rs new file mode 100644 index 0000000000..d268ab5f4d --- /dev/null +++ b/svc/pkg/cluster/ops/resolve-for-name-id/tests/integration.rs @@ -0,0 +1,29 @@ +use chirp_worker::prelude::*; +use proto::backend::{self, pkg::*}; + +#[worker_test] +async fn empty(ctx: TestCtx) { + let cluster_id = Uuid::new_v4(); + let name_id = util::faker::ident(); + + msg!([ctx] cluster::msg::create(cluster_id) -> cluster::msg::create_complete { + cluster_id: Some(cluster_id.into()), + name_id: name_id.clone(), + owner_team_id: None, + }) + .await + .unwrap(); + + let res = op!([ctx] cluster_resolve_for_name_id { + name_ids: vec![name_id], + }) + .await + .unwrap(); + + let cluster = res.clusters.first().expect("cluster not found"); + assert_eq!( + cluster_id, + cluster.cluster_id.unwrap().as_uuid(), + "wrong cluster returned" + ); +} diff --git a/svc/pkg/cluster/types/resolve-for-name-id.proto b/svc/pkg/cluster/types/resolve-for-name-id.proto new file mode 100644 index 0000000000..41bc28bef8 --- /dev/null +++ b/svc/pkg/cluster/types/resolve-for-name-id.proto @@ -0,0 +1,19 @@ +syntax = "proto3"; + +package rivet.backend.pkg.cluster.resolve_for_name_id; + +import "proto/common.proto"; +import "proto/backend/cluster.proto"; + +message Request { + repeated string name_ids = 1; +} + +message Response { + message Cluster { + rivet.common.Uuid cluster_id = 1; + string name_id = 2; + } + + repeated Cluster clusters = 1; +} From dec056a638f783d1e2d7622a4c6ae9500ef32be4 Mon Sep 17 00:00:00 2001 From: Forest Anderson Date: Wed, 1 May 2024 23:25:19 -0400 Subject: [PATCH 6/8] chore(api): move games/builds to game/docker/builds --- .../cloud/games/{ => docker}/builds.yml | 6 +- sdks/full/go/cloud/games/client/client.go | 6 +- .../go/cloud/games/{ => docker}/builds.go | 2 +- .../cloud/games/{ => docker}/builds/client.go | 14 +- .../go/cloud/games/docker/client/client.go | 30 ++++ .../full/go/cloud/games/{ => docker}/types.go | 2 +- sdks/full/openapi/openapi.yml | 136 +++++++-------- sdks/full/openapi_compat/openapi.yml | 158 +++++++++--------- sdks/full/rust-cli/.openapi-generator/FILES | 24 +-- sdks/full/rust-cli/README.md | 14 +- ...md => CloudGamesDockerBuildCompression.md} | 2 +- .../docs/CloudGamesDockerBuildKind.md} | 2 +- .../docs/CloudGamesDockerBuildsApi.md} | 20 +-- ...CloudGamesDockerCreateGameBuildRequest.md} | 6 +- ...loudGamesDockerCreateGameBuildResponse.md} | 2 +- ...CloudGamesDockerListGameBuildsResponse.md} | 2 +- ...pi.rs => cloud_games_docker_builds_api.rs} | 22 +-- sdks/full/rust-cli/src/apis/mod.rs | 2 +- .../cloud_games_docker_build_compression.rs} | 8 +- .../models/cloud_games_docker_build_kind.rs} | 8 +- ...games_docker_create_game_build_request.rs} | 12 +- ...ames_docker_create_game_build_response.rs} | 8 +- ...games_docker_list_game_builds_response.rs} | 8 +- sdks/full/rust-cli/src/models/mod.rs | 20 +-- sdks/full/rust/.openapi-generator/FILES | 24 +-- sdks/full/rust/README.md | 14 +- ...md => CloudGamesDockerBuildCompression.md} | 2 +- .../docs/CloudGamesDockerBuildKind.md} | 2 +- .../docs/CloudGamesDockerBuildsApi.md} | 20 +-- ...CloudGamesDockerCreateGameBuildRequest.md} | 6 +- ...loudGamesDockerCreateGameBuildResponse.md} | 2 +- ...CloudGamesDockerListGameBuildsResponse.md} | 2 +- ...pi.rs => cloud_games_docker_builds_api.rs} | 22 +-- sdks/full/rust/src/apis/mod.rs | 2 +- .../cloud_games_docker_build_compression.rs} | 8 +- .../models/cloud_games_docker_build_kind.rs} | 8 +- ...games_docker_create_game_build_request.rs} | 12 +- ...ames_docker_create_game_build_response.rs} | 8 +- ...games_docker_list_game_builds_response.rs} | 8 +- sdks/full/rust/src/models/mod.rs | 20 +-- sdks/full/typescript/archive.tgz | 4 +- .../cloud/resources/games/client/Client.ts | 14 +- .../games/resources/docker/client/Client.ts | 30 ++++ .../{builds => docker}/client/index.ts | 0 .../resources/games/resources/docker/index.ts | 2 + .../resources}/builds/client/Client.ts | 26 +-- .../docker/resources/builds/client/index.ts | 1 + .../{ => docker/resources}/builds/index.ts | 0 .../games/resources/docker/resources/index.ts | 2 + .../cloud/resources/games/resources/index.ts | 3 +- .../resources/games/resources/docker/index.ts | 1 + .../{ => docker/resources}/builds/index.ts | 0 .../games/resources/docker/resources/index.ts | 2 + .../cloud/resources/games/resources/index.ts | 3 +- svc/api/cloud/src/route/games/builds.rs | 18 +- svc/api/cloud/src/route/mod.rs | 4 +- 56 files changed, 425 insertions(+), 359 deletions(-) rename fern/definition/cloud/games/{ => docker}/builds.yml (93%) rename sdks/full/go/cloud/games/{ => docker}/builds.go (99%) rename sdks/full/go/cloud/games/{ => docker}/builds/client.go (90%) create mode 100644 sdks/full/go/cloud/games/docker/client/client.go rename sdks/full/go/cloud/games/{ => docker}/types.go (98%) rename sdks/full/rust-cli/docs/{CloudGamesBuildCompression.md => CloudGamesDockerBuildCompression.md} (88%) rename sdks/full/{rust/docs/CloudGamesBuildKind.md => rust-cli/docs/CloudGamesDockerBuildKind.md} (90%) rename sdks/full/{rust/docs/CloudGamesBuildsApi.md => rust-cli/docs/CloudGamesDockerBuildsApi.md} (54%) rename sdks/full/rust-cli/docs/{CloudGamesCreateGameBuildRequest.md => CloudGamesDockerCreateGameBuildRequest.md} (66%) rename sdks/full/{rust/docs/CloudGamesCreateGameBuildResponse.md => rust-cli/docs/CloudGamesDockerCreateGameBuildResponse.md} (93%) rename sdks/full/rust-cli/docs/{CloudGamesListGameBuildsResponse.md => CloudGamesDockerListGameBuildsResponse.md} (90%) rename sdks/full/rust-cli/src/apis/{cloud_games_builds_api.rs => cloud_games_docker_builds_api.rs} (71%) rename sdks/full/{rust/src/models/cloud_games_build_compression.rs => rust-cli/src/models/cloud_games_docker_build_compression.rs} (75%) rename sdks/full/{rust/src/models/cloud_games_build_kind.rs => rust-cli/src/models/cloud_games_docker_build_kind.rs} (79%) rename sdks/full/{rust/src/models/cloud_games_create_game_build_request.rs => rust-cli/src/models/cloud_games_docker_create_game_build_request.rs} (75%) rename sdks/full/{rust/src/models/cloud_games_create_game_build_response.rs => rust-cli/src/models/cloud_games_docker_create_game_build_response.rs} (84%) rename sdks/full/{rust/src/models/cloud_games_list_game_builds_response.rs => rust-cli/src/models/cloud_games_docker_list_game_builds_response.rs} (73%) rename sdks/full/rust/docs/{CloudGamesBuildCompression.md => CloudGamesDockerBuildCompression.md} (88%) rename sdks/full/{rust-cli/docs/CloudGamesBuildKind.md => rust/docs/CloudGamesDockerBuildKind.md} (90%) rename sdks/full/{rust-cli/docs/CloudGamesBuildsApi.md => rust/docs/CloudGamesDockerBuildsApi.md} (54%) rename sdks/full/rust/docs/{CloudGamesCreateGameBuildRequest.md => CloudGamesDockerCreateGameBuildRequest.md} (66%) rename sdks/full/{rust-cli/docs/CloudGamesCreateGameBuildResponse.md => rust/docs/CloudGamesDockerCreateGameBuildResponse.md} (93%) rename sdks/full/rust/docs/{CloudGamesListGameBuildsResponse.md => CloudGamesDockerListGameBuildsResponse.md} (90%) rename sdks/full/rust/src/apis/{cloud_games_builds_api.rs => cloud_games_docker_builds_api.rs} (71%) rename sdks/full/{rust-cli/src/models/cloud_games_build_compression.rs => rust/src/models/cloud_games_docker_build_compression.rs} (75%) rename sdks/full/{rust-cli/src/models/cloud_games_build_kind.rs => rust/src/models/cloud_games_docker_build_kind.rs} (79%) rename sdks/full/{rust-cli/src/models/cloud_games_create_game_build_request.rs => rust/src/models/cloud_games_docker_create_game_build_request.rs} (75%) rename sdks/full/{rust-cli/src/models/cloud_games_create_game_build_response.rs => rust/src/models/cloud_games_docker_create_game_build_response.rs} (84%) rename sdks/full/{rust-cli/src/models/cloud_games_list_game_builds_response.rs => rust/src/models/cloud_games_docker_list_game_builds_response.rs} (73%) create mode 100644 sdks/full/typescript/src/api/resources/cloud/resources/games/resources/docker/client/Client.ts rename sdks/full/typescript/src/api/resources/cloud/resources/games/resources/{builds => docker}/client/index.ts (100%) create mode 100644 sdks/full/typescript/src/api/resources/cloud/resources/games/resources/docker/index.ts rename sdks/full/typescript/src/api/resources/cloud/resources/games/resources/{ => docker/resources}/builds/client/Client.ts (92%) create mode 100644 sdks/full/typescript/src/api/resources/cloud/resources/games/resources/docker/resources/builds/client/index.ts rename sdks/full/typescript/src/api/resources/cloud/resources/games/resources/{ => docker/resources}/builds/index.ts (100%) create mode 100644 sdks/full/typescript/src/api/resources/cloud/resources/games/resources/docker/resources/index.ts create mode 100644 sdks/full/typescript/src/serialization/resources/cloud/resources/games/resources/docker/index.ts rename sdks/full/typescript/src/serialization/resources/cloud/resources/games/resources/{ => docker/resources}/builds/index.ts (100%) create mode 100644 sdks/full/typescript/src/serialization/resources/cloud/resources/games/resources/docker/resources/index.ts diff --git a/fern/definition/cloud/games/builds.yml b/fern/definition/cloud/games/docker/builds.yml similarity index 93% rename from fern/definition/cloud/games/builds.yml rename to fern/definition/cloud/games/docker/builds.yml index 50ef5c0ec5..9a7648d361 100644 --- a/fern/definition/cloud/games/builds.yml +++ b/fern/definition/cloud/games/docker/builds.yml @@ -1,12 +1,12 @@ # yaml-language-server: $schema=https://raw.githubusercontent.com/fern-api/fern/main/fern.schema.json imports: - uploadCommons: ../../upload/common.yml - cloudCommons: ../../cloud/common.yml + uploadCommons: ../../../upload/common.yml + cloudCommons: ../../../cloud/common.yml service: auth: true - base-path: /cloud/games/{game_id} + base-path: /cloud/games/{game_id}/docker path-parameters: game_id: type: uuid diff --git a/sdks/full/go/cloud/games/client/client.go b/sdks/full/go/cloud/games/client/client.go index a7e72a73f6..f075e9b984 100644 --- a/sdks/full/go/cloud/games/client/client.go +++ b/sdks/full/go/cloud/games/client/client.go @@ -5,8 +5,8 @@ package client import ( http "net/http" avatars "sdk/cloud/games/avatars" - builds "sdk/cloud/games/builds" cdn "sdk/cloud/games/cdn" + dockerclient "sdk/cloud/games/docker/client" games "sdk/cloud/games/games" matchmaker "sdk/cloud/games/matchmaker" namespacesclient "sdk/cloud/games/namespaces/client" @@ -22,8 +22,8 @@ type Client struct { Namespaces *namespacesclient.Client Avatars *avatars.Client - Builds *builds.Client Cdn *cdn.Client + Docker *dockerclient.Client Games *games.Client Matchmaker *matchmaker.Client Tokens *tokens.Client @@ -41,8 +41,8 @@ func NewClient(opts ...core.ClientOption) *Client { header: options.ToHeader(), Namespaces: namespacesclient.NewClient(opts...), Avatars: avatars.NewClient(opts...), - Builds: builds.NewClient(opts...), Cdn: cdn.NewClient(opts...), + Docker: dockerclient.NewClient(opts...), Games: games.NewClient(opts...), Matchmaker: matchmaker.NewClient(opts...), Tokens: tokens.NewClient(opts...), diff --git a/sdks/full/go/cloud/games/builds.go b/sdks/full/go/cloud/games/docker/builds.go similarity index 99% rename from sdks/full/go/cloud/games/builds.go rename to sdks/full/go/cloud/games/docker/builds.go index aad35359aa..04075c7e21 100644 --- a/sdks/full/go/cloud/games/builds.go +++ b/sdks/full/go/cloud/games/docker/builds.go @@ -1,6 +1,6 @@ // This file was auto-generated by Fern from our API Definition. -package games +package docker import ( json "encoding/json" diff --git a/sdks/full/go/cloud/games/builds/client.go b/sdks/full/go/cloud/games/docker/builds/client.go similarity index 90% rename from sdks/full/go/cloud/games/builds/client.go rename to sdks/full/go/cloud/games/docker/builds/client.go index be97fd530d..c7e3aca205 100644 --- a/sdks/full/go/cloud/games/builds/client.go +++ b/sdks/full/go/cloud/games/docker/builds/client.go @@ -12,7 +12,7 @@ import ( io "io" http "net/http" sdk "sdk" - games "sdk/cloud/games" + docker "sdk/cloud/games/docker" core "sdk/core" ) @@ -35,12 +35,12 @@ func NewClient(opts ...core.ClientOption) *Client { } // Lists game builds for the given game. -func (c *Client) ListGameBuilds(ctx context.Context, gameId uuid.UUID) (*games.ListGameBuildsResponse, error) { +func (c *Client) ListGameBuilds(ctx context.Context, gameId uuid.UUID) (*docker.ListGameBuildsResponse, error) { baseURL := "https://api.rivet.gg" if c.baseURL != "" { baseURL = c.baseURL } - endpointURL := fmt.Sprintf(baseURL+"/"+"cloud/games/%v/builds", gameId) + endpointURL := fmt.Sprintf(baseURL+"/"+"cloud/games/%v/docker/builds", gameId) errorDecoder := func(statusCode int, body io.Reader) error { raw, err := io.ReadAll(body) @@ -96,7 +96,7 @@ func (c *Client) ListGameBuilds(ctx context.Context, gameId uuid.UUID) (*games.L return apiError } - var response *games.ListGameBuildsResponse + var response *docker.ListGameBuildsResponse if err := c.caller.Call( ctx, &core.CallParams{ @@ -113,12 +113,12 @@ func (c *Client) ListGameBuilds(ctx context.Context, gameId uuid.UUID) (*games.L } // Creates a new game build for the given game. -func (c *Client) CreateGameBuild(ctx context.Context, gameId uuid.UUID, request *games.CreateGameBuildRequest) (*games.CreateGameBuildResponse, error) { +func (c *Client) CreateGameBuild(ctx context.Context, gameId uuid.UUID, request *docker.CreateGameBuildRequest) (*docker.CreateGameBuildResponse, error) { baseURL := "https://api.rivet.gg" if c.baseURL != "" { baseURL = c.baseURL } - endpointURL := fmt.Sprintf(baseURL+"/"+"cloud/games/%v/builds", gameId) + endpointURL := fmt.Sprintf(baseURL+"/"+"cloud/games/%v/docker/builds", gameId) errorDecoder := func(statusCode int, body io.Reader) error { raw, err := io.ReadAll(body) @@ -174,7 +174,7 @@ func (c *Client) CreateGameBuild(ctx context.Context, gameId uuid.UUID, request return apiError } - var response *games.CreateGameBuildResponse + var response *docker.CreateGameBuildResponse if err := c.caller.Call( ctx, &core.CallParams{ diff --git a/sdks/full/go/cloud/games/docker/client/client.go b/sdks/full/go/cloud/games/docker/client/client.go new file mode 100644 index 0000000000..d8438098bd --- /dev/null +++ b/sdks/full/go/cloud/games/docker/client/client.go @@ -0,0 +1,30 @@ +// This file was auto-generated by Fern from our API Definition. + +package client + +import ( + http "net/http" + builds "sdk/cloud/games/docker/builds" + core "sdk/core" +) + +type Client struct { + baseURL string + caller *core.Caller + header http.Header + + Builds *builds.Client +} + +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(), + Builds: builds.NewClient(opts...), + } +} diff --git a/sdks/full/go/cloud/games/types.go b/sdks/full/go/cloud/games/docker/types.go similarity index 98% rename from sdks/full/go/cloud/games/types.go rename to sdks/full/go/cloud/games/docker/types.go index 805a3307cb..639b336fd2 100644 --- a/sdks/full/go/cloud/games/types.go +++ b/sdks/full/go/cloud/games/docker/types.go @@ -1,6 +1,6 @@ // This file was auto-generated by Fern from our API Definition. -package games +package docker import ( fmt "fmt" diff --git a/sdks/full/openapi/openapi.yml b/sdks/full/openapi/openapi.yml index 984451e47c..f9ec1edbb8 100644 --- a/sdks/full/openapi/openapi.yml +++ b/sdks/full/openapi/openapi.yml @@ -5391,12 +5391,12 @@ paths: schema: $ref: '#/components/schemas/ErrorBody' security: *ref_0 - /cloud/games/{game_id}/builds: + /cloud/games/{game_id}/cdn/sites: get: - description: Lists game builds for the given game. - operationId: cloud_games_builds_listGameBuilds + description: Lists CDN sites for a game. + operationId: cloud_games_cdn_listGameCdnSites tags: - - CloudGamesBuilds + - CloudGamesCdn parameters: - name: game_id in: path @@ -5410,7 +5410,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/CloudGamesListGameBuildsResponse' + $ref: '#/components/schemas/CloudGamesListGameCdnSitesResponse' '400': description: '' content: @@ -5449,10 +5449,10 @@ paths: $ref: '#/components/schemas/ErrorBody' security: *ref_0 post: - description: Creates a new game build for the given game. - operationId: cloud_games_builds_createGameBuild + description: Creates a new CDN site for the given game. + operationId: cloud_games_cdn_createGameCdnSite tags: - - CloudGamesBuilds + - CloudGamesCdn parameters: - name: game_id in: path @@ -5466,7 +5466,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/CloudGamesCreateGameBuildResponse' + $ref: '#/components/schemas/CloudGamesCreateGameCdnSiteResponse' '400': description: '' content: @@ -5509,13 +5509,13 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/CloudGamesCreateGameBuildRequest' - /cloud/games/{game_id}/cdn/sites: + $ref: '#/components/schemas/CloudGamesCreateGameCdnSiteRequest' + /cloud/games/{game_id}/docker/builds: get: - description: Lists CDN sites for a game. - operationId: cloud_games_cdn_listGameCdnSites + description: Lists game builds for the given game. + operationId: cloud_games_docker_builds_listGameBuilds tags: - - CloudGamesCdn + - CloudGamesDockerBuilds parameters: - name: game_id in: path @@ -5529,7 +5529,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/CloudGamesListGameCdnSitesResponse' + $ref: '#/components/schemas/CloudGamesDockerListGameBuildsResponse' '400': description: '' content: @@ -5568,10 +5568,10 @@ paths: $ref: '#/components/schemas/ErrorBody' security: *ref_0 post: - description: Creates a new CDN site for the given game. - operationId: cloud_games_cdn_createGameCdnSite + description: Creates a new game build for the given game. + operationId: cloud_games_docker_builds_createGameBuild tags: - - CloudGamesCdn + - CloudGamesDockerBuilds parameters: - name: game_id in: path @@ -5585,7 +5585,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/CloudGamesCreateGameCdnSiteResponse' + $ref: '#/components/schemas/CloudGamesDockerCreateGameBuildResponse' '400': description: '' content: @@ -5628,7 +5628,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/CloudGamesCreateGameCdnSiteRequest' + $ref: '#/components/schemas/CloudGamesDockerCreateGameBuildRequest' /cloud/games: get: description: >- @@ -11103,7 +11103,48 @@ components: required: - upload_id - presigned_request - CloudGamesListGameBuildsResponse: + CloudGamesListGameCdnSitesResponse: + type: object + properties: + sites: + type: array + items: + $ref: '#/components/schemas/CloudCdnSiteSummary' + description: A list of CDN site summaries. + required: + - sites + CloudGamesCreateGameCdnSiteRequest: + type: object + properties: + display_name: + type: string + description: Represent a resource's readable display name. + files: + type: array + items: + $ref: '#/components/schemas/UploadPrepareFile' + description: A list of files preparing to upload. + required: + - display_name + - files + CloudGamesCreateGameCdnSiteResponse: + type: object + properties: + site_id: + type: string + format: uuid + upload_id: + type: string + format: uuid + presigned_requests: + type: array + items: + $ref: '#/components/schemas/UploadPresignedRequest' + required: + - site_id + - upload_id + - presigned_requests + CloudGamesDockerListGameBuildsResponse: type: object properties: builds: @@ -11113,7 +11154,7 @@ components: description: A list of build summaries. required: - builds - CloudGamesCreateGameBuildRequest: + CloudGamesDockerCreateGameBuildRequest: type: object properties: display_name: @@ -11127,14 +11168,14 @@ components: multipart_upload: type: boolean kind: - $ref: '#/components/schemas/CloudGamesBuildKind' + $ref: '#/components/schemas/CloudGamesDockerBuildKind' compression: - $ref: '#/components/schemas/CloudGamesBuildCompression' + $ref: '#/components/schemas/CloudGamesDockerBuildCompression' required: - display_name - image_tag - image_file - CloudGamesCreateGameBuildResponse: + CloudGamesDockerCreateGameBuildResponse: type: object properties: build_id: @@ -11152,57 +11193,16 @@ components: required: - build_id - upload_id - CloudGamesBuildKind: + CloudGamesDockerBuildKind: type: string enum: - docker_image - oci_bundle - CloudGamesBuildCompression: + CloudGamesDockerBuildCompression: type: string enum: - none - lz4 - CloudGamesListGameCdnSitesResponse: - type: object - properties: - sites: - type: array - items: - $ref: '#/components/schemas/CloudCdnSiteSummary' - description: A list of CDN site summaries. - required: - - sites - CloudGamesCreateGameCdnSiteRequest: - type: object - properties: - display_name: - type: string - description: Represent a resource's readable display name. - files: - type: array - items: - $ref: '#/components/schemas/UploadPrepareFile' - description: A list of files preparing to upload. - required: - - display_name - - files - CloudGamesCreateGameCdnSiteResponse: - type: object - properties: - site_id: - type: string - format: uuid - upload_id: - type: string - format: uuid - presigned_requests: - type: array - items: - $ref: '#/components/schemas/UploadPresignedRequest' - required: - - site_id - - upload_id - - presigned_requests CloudGamesGetGamesResponse: type: object properties: diff --git a/sdks/full/openapi_compat/openapi.yml b/sdks/full/openapi_compat/openapi.yml index fa3a1e6a78..8e169f3c4a 100644 --- a/sdks/full/openapi_compat/openapi.yml +++ b/sdks/full/openapi_compat/openapi.yml @@ -708,16 +708,6 @@ components: - namespaces - expenses type: object - CloudGamesBuildCompression: - enum: - - none - - lz4 - type: string - CloudGamesBuildKind: - enum: - - docker_image - - oci_bundle - type: string CloudGamesCreateCloudTokenResponse: properties: token: @@ -730,45 +720,6 @@ components: required: - token type: object - CloudGamesCreateGameBuildRequest: - properties: - compression: - $ref: '#/components/schemas/CloudGamesBuildCompression' - display_name: - description: Represent a resource's readable display name. - type: string - image_file: - $ref: '#/components/schemas/UploadPrepareFile' - image_tag: - description: A tag given to the game build. - type: string - kind: - $ref: '#/components/schemas/CloudGamesBuildKind' - multipart_upload: - type: boolean - required: - - display_name - - image_tag - - image_file - type: object - CloudGamesCreateGameBuildResponse: - properties: - build_id: - format: uuid - type: string - image_presigned_request: - $ref: '#/components/schemas/UploadPresignedRequest' - image_presigned_requests: - items: - $ref: '#/components/schemas/UploadPresignedRequest' - type: array - upload_id: - format: uuid - type: string - required: - - build_id - - upload_id - type: object CloudGamesCreateGameCdnSiteRequest: properties: display_name: @@ -855,6 +806,65 @@ components: required: - did_remove type: object + CloudGamesDockerBuildCompression: + enum: + - none + - lz4 + type: string + CloudGamesDockerBuildKind: + enum: + - docker_image + - oci_bundle + type: string + CloudGamesDockerCreateGameBuildRequest: + properties: + compression: + $ref: '#/components/schemas/CloudGamesDockerBuildCompression' + display_name: + description: Represent a resource's readable display name. + type: string + image_file: + $ref: '#/components/schemas/UploadPrepareFile' + image_tag: + description: A tag given to the game build. + type: string + kind: + $ref: '#/components/schemas/CloudGamesDockerBuildKind' + multipart_upload: + type: boolean + required: + - display_name + - image_tag + - image_file + type: object + CloudGamesDockerCreateGameBuildResponse: + properties: + build_id: + format: uuid + type: string + image_presigned_request: + $ref: '#/components/schemas/UploadPresignedRequest' + image_presigned_requests: + items: + $ref: '#/components/schemas/UploadPresignedRequest' + type: array + upload_id: + format: uuid + type: string + required: + - build_id + - upload_id + type: object + CloudGamesDockerListGameBuildsResponse: + properties: + builds: + description: A list of build summaries. + items: + $ref: '#/components/schemas/CloudBuildSummary' + type: array + required: + - builds + type: object CloudGamesExportLobbyLogsRequest: properties: stream: @@ -1001,16 +1011,6 @@ components: - timestamps - watch type: object - CloudGamesListGameBuildsResponse: - properties: - builds: - description: A list of build summaries. - items: - $ref: '#/components/schemas/CloudBuildSummary' - type: array - required: - - builds - type: object CloudGamesListGameCdnSitesResponse: properties: sites: @@ -5918,10 +5918,10 @@ paths: security: *id001 tags: - CloudGamesGames - /cloud/games/{game_id}/builds: + /cloud/games/{game_id}/cdn/sites: get: - description: Lists game builds for the given game. - operationId: cloud_games_builds_listGameBuilds + description: Lists CDN sites for a game. + operationId: cloud_games_cdn_listGameCdnSites parameters: - in: path name: game_id @@ -5934,7 +5934,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/CloudGamesListGameBuildsResponse' + $ref: '#/components/schemas/CloudGamesListGameCdnSitesResponse' description: '' '400': content: @@ -5974,10 +5974,10 @@ paths: description: '' security: *id001 tags: - - CloudGamesBuilds + - CloudGamesCdn post: - description: Creates a new game build for the given game. - operationId: cloud_games_builds_createGameBuild + description: Creates a new CDN site for the given game. + operationId: cloud_games_cdn_createGameCdnSite parameters: - in: path name: game_id @@ -5989,14 +5989,14 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/CloudGamesCreateGameBuildRequest' + $ref: '#/components/schemas/CloudGamesCreateGameCdnSiteRequest' required: true responses: '200': content: application/json: schema: - $ref: '#/components/schemas/CloudGamesCreateGameBuildResponse' + $ref: '#/components/schemas/CloudGamesCreateGameCdnSiteResponse' description: '' '400': content: @@ -6036,11 +6036,11 @@ paths: description: '' security: *id001 tags: - - CloudGamesBuilds - /cloud/games/{game_id}/cdn/sites: + - CloudGamesCdn + /cloud/games/{game_id}/docker/builds: get: - description: Lists CDN sites for a game. - operationId: cloud_games_cdn_listGameCdnSites + description: Lists game builds for the given game. + operationId: cloud_games_docker_builds_listGameBuilds parameters: - in: path name: game_id @@ -6053,7 +6053,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/CloudGamesListGameCdnSitesResponse' + $ref: '#/components/schemas/CloudGamesDockerListGameBuildsResponse' description: '' '400': content: @@ -6093,10 +6093,10 @@ paths: description: '' security: *id001 tags: - - CloudGamesCdn + - CloudGamesDockerBuilds post: - description: Creates a new CDN site for the given game. - operationId: cloud_games_cdn_createGameCdnSite + description: Creates a new game build for the given game. + operationId: cloud_games_docker_builds_createGameBuild parameters: - in: path name: game_id @@ -6108,14 +6108,14 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/CloudGamesCreateGameCdnSiteRequest' + $ref: '#/components/schemas/CloudGamesDockerCreateGameBuildRequest' required: true responses: '200': content: application/json: schema: - $ref: '#/components/schemas/CloudGamesCreateGameCdnSiteResponse' + $ref: '#/components/schemas/CloudGamesDockerCreateGameBuildResponse' description: '' '400': content: @@ -6155,7 +6155,7 @@ paths: description: '' security: *id001 tags: - - CloudGamesCdn + - CloudGamesDockerBuilds /cloud/games/{game_id}/logo-upload/prepare: post: description: Prepares a game logo image upload. diff --git a/sdks/full/rust-cli/.openapi-generator/FILES b/sdks/full/rust-cli/.openapi-generator/FILES index 1bde2fe484..8becf9eef3 100644 --- a/sdks/full/rust-cli/.openapi-generator/FILES +++ b/sdks/full/rust-cli/.openapi-generator/FILES @@ -67,13 +67,8 @@ docs/CloudDevicesPrepareDeviceLinkResponse.md docs/CloudGameFull.md docs/CloudGameLobbyExpenses.md docs/CloudGamesAvatarsApi.md -docs/CloudGamesBuildCompression.md -docs/CloudGamesBuildKind.md -docs/CloudGamesBuildsApi.md docs/CloudGamesCdnApi.md docs/CloudGamesCreateCloudTokenResponse.md -docs/CloudGamesCreateGameBuildRequest.md -docs/CloudGamesCreateGameBuildResponse.md docs/CloudGamesCreateGameCdnSiteRequest.md docs/CloudGamesCreateGameCdnSiteResponse.md docs/CloudGamesCreateGameRequest.md @@ -81,6 +76,12 @@ docs/CloudGamesCreateGameResponse.md docs/CloudGamesCreateGameVersionRequest.md docs/CloudGamesCreateGameVersionResponse.md docs/CloudGamesDeleteMatchmakerLobbyResponse.md +docs/CloudGamesDockerBuildCompression.md +docs/CloudGamesDockerBuildKind.md +docs/CloudGamesDockerBuildsApi.md +docs/CloudGamesDockerCreateGameBuildRequest.md +docs/CloudGamesDockerCreateGameBuildResponse.md +docs/CloudGamesDockerListGameBuildsResponse.md docs/CloudGamesExportLobbyLogsRequest.md docs/CloudGamesExportLobbyLogsResponse.md docs/CloudGamesExportMatchmakerLobbyHistoryRequest.md @@ -94,7 +95,6 @@ docs/CloudGamesGetGameByIdResponse.md docs/CloudGamesGetGameVersionByIdResponse.md docs/CloudGamesGetGamesResponse.md docs/CloudGamesGetLobbyLogsResponse.md -docs/CloudGamesListGameBuildsResponse.md docs/CloudGamesListGameCdnSitesResponse.md docs/CloudGamesListGameCustomAvatarsResponse.md docs/CloudGamesLogStream.md @@ -361,8 +361,8 @@ src/apis/cloud_api.rs src/apis/cloud_auth_api.rs src/apis/cloud_devices_links_api.rs src/apis/cloud_games_avatars_api.rs -src/apis/cloud_games_builds_api.rs src/apis/cloud_games_cdn_api.rs +src/apis/cloud_games_docker_builds_api.rs src/apis/cloud_games_games_api.rs src/apis/cloud_games_matchmaker_api.rs src/apis/cloud_games_namespaces_analytics_api.rs @@ -448,11 +448,7 @@ src/models/cloud_devices_get_device_link_response.rs src/models/cloud_devices_prepare_device_link_response.rs src/models/cloud_game_full.rs src/models/cloud_game_lobby_expenses.rs -src/models/cloud_games_build_compression.rs -src/models/cloud_games_build_kind.rs src/models/cloud_games_create_cloud_token_response.rs -src/models/cloud_games_create_game_build_request.rs -src/models/cloud_games_create_game_build_response.rs src/models/cloud_games_create_game_cdn_site_request.rs src/models/cloud_games_create_game_cdn_site_response.rs src/models/cloud_games_create_game_request.rs @@ -460,6 +456,11 @@ 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_delete_matchmaker_lobby_response.rs +src/models/cloud_games_docker_build_compression.rs +src/models/cloud_games_docker_build_kind.rs +src/models/cloud_games_docker_create_game_build_request.rs +src/models/cloud_games_docker_create_game_build_response.rs +src/models/cloud_games_docker_list_game_builds_response.rs src/models/cloud_games_export_lobby_logs_request.rs src/models/cloud_games_export_lobby_logs_response.rs src/models/cloud_games_export_matchmaker_lobby_history_request.rs @@ -472,7 +473,6 @@ src/models/cloud_games_get_game_by_id_response.rs src/models/cloud_games_get_game_version_by_id_response.rs src/models/cloud_games_get_games_response.rs src/models/cloud_games_get_lobby_logs_response.rs -src/models/cloud_games_list_game_builds_response.rs src/models/cloud_games_list_game_cdn_sites_response.rs src/models/cloud_games_list_game_custom_avatars_response.rs src/models/cloud_games_log_stream.rs diff --git a/sdks/full/rust-cli/README.md b/sdks/full/rust-cli/README.md index 6d83dd8d86..1dddbffd7e 100644 --- a/sdks/full/rust-cli/README.md +++ b/sdks/full/rust-cli/README.md @@ -45,10 +45,10 @@ Class | Method | HTTP request | Description *CloudGamesAvatarsApi* | [**cloud_games_avatars_complete_custom_avatar_upload**](docs/CloudGamesAvatarsApi.md#cloud_games_avatars_complete_custom_avatar_upload) | **POST** /cloud/games/{game_id}/avatar-upload/{upload_id}/complete | *CloudGamesAvatarsApi* | [**cloud_games_avatars_list_game_custom_avatars**](docs/CloudGamesAvatarsApi.md#cloud_games_avatars_list_game_custom_avatars) | **GET** /cloud/games/{game_id}/avatars | *CloudGamesAvatarsApi* | [**cloud_games_avatars_prepare_custom_avatar_upload**](docs/CloudGamesAvatarsApi.md#cloud_games_avatars_prepare_custom_avatar_upload) | **POST** /cloud/games/{game_id}/prepare | -*CloudGamesBuildsApi* | [**cloud_games_builds_create_game_build**](docs/CloudGamesBuildsApi.md#cloud_games_builds_create_game_build) | **POST** /cloud/games/{game_id}/builds | -*CloudGamesBuildsApi* | [**cloud_games_builds_list_game_builds**](docs/CloudGamesBuildsApi.md#cloud_games_builds_list_game_builds) | **GET** /cloud/games/{game_id}/builds | *CloudGamesCdnApi* | [**cloud_games_cdn_create_game_cdn_site**](docs/CloudGamesCdnApi.md#cloud_games_cdn_create_game_cdn_site) | **POST** /cloud/games/{game_id}/cdn/sites | *CloudGamesCdnApi* | [**cloud_games_cdn_list_game_cdn_sites**](docs/CloudGamesCdnApi.md#cloud_games_cdn_list_game_cdn_sites) | **GET** /cloud/games/{game_id}/cdn/sites | +*CloudGamesDockerBuildsApi* | [**cloud_games_docker_builds_create_game_build**](docs/CloudGamesDockerBuildsApi.md#cloud_games_docker_builds_create_game_build) | **POST** /cloud/games/{game_id}/docker/builds | +*CloudGamesDockerBuildsApi* | [**cloud_games_docker_builds_list_game_builds**](docs/CloudGamesDockerBuildsApi.md#cloud_games_docker_builds_list_game_builds) | **GET** /cloud/games/{game_id}/docker/builds | *CloudGamesGamesApi* | [**cloud_games_games_create_game**](docs/CloudGamesGamesApi.md#cloud_games_games_create_game) | **POST** /cloud/games | *CloudGamesGamesApi* | [**cloud_games_games_game_banner_upload_complete**](docs/CloudGamesGamesApi.md#cloud_games_games_game_banner_upload_complete) | **POST** /cloud/games/{game_id}/banner-upload/{upload_id}/complete | *CloudGamesGamesApi* | [**cloud_games_games_game_banner_upload_prepare**](docs/CloudGamesGamesApi.md#cloud_games_games_game_banner_upload_prepare) | **POST** /cloud/games/{game_id}/banner-upload/prepare | @@ -226,11 +226,7 @@ Class | Method | HTTP request | Description - [CloudDevicesPrepareDeviceLinkResponse](docs/CloudDevicesPrepareDeviceLinkResponse.md) - [CloudGameFull](docs/CloudGameFull.md) - [CloudGameLobbyExpenses](docs/CloudGameLobbyExpenses.md) - - [CloudGamesBuildCompression](docs/CloudGamesBuildCompression.md) - - [CloudGamesBuildKind](docs/CloudGamesBuildKind.md) - [CloudGamesCreateCloudTokenResponse](docs/CloudGamesCreateCloudTokenResponse.md) - - [CloudGamesCreateGameBuildRequest](docs/CloudGamesCreateGameBuildRequest.md) - - [CloudGamesCreateGameBuildResponse](docs/CloudGamesCreateGameBuildResponse.md) - [CloudGamesCreateGameCdnSiteRequest](docs/CloudGamesCreateGameCdnSiteRequest.md) - [CloudGamesCreateGameCdnSiteResponse](docs/CloudGamesCreateGameCdnSiteResponse.md) - [CloudGamesCreateGameRequest](docs/CloudGamesCreateGameRequest.md) @@ -238,6 +234,11 @@ Class | Method | HTTP request | Description - [CloudGamesCreateGameVersionRequest](docs/CloudGamesCreateGameVersionRequest.md) - [CloudGamesCreateGameVersionResponse](docs/CloudGamesCreateGameVersionResponse.md) - [CloudGamesDeleteMatchmakerLobbyResponse](docs/CloudGamesDeleteMatchmakerLobbyResponse.md) + - [CloudGamesDockerBuildCompression](docs/CloudGamesDockerBuildCompression.md) + - [CloudGamesDockerBuildKind](docs/CloudGamesDockerBuildKind.md) + - [CloudGamesDockerCreateGameBuildRequest](docs/CloudGamesDockerCreateGameBuildRequest.md) + - [CloudGamesDockerCreateGameBuildResponse](docs/CloudGamesDockerCreateGameBuildResponse.md) + - [CloudGamesDockerListGameBuildsResponse](docs/CloudGamesDockerListGameBuildsResponse.md) - [CloudGamesExportLobbyLogsRequest](docs/CloudGamesExportLobbyLogsRequest.md) - [CloudGamesExportLobbyLogsResponse](docs/CloudGamesExportLobbyLogsResponse.md) - [CloudGamesExportMatchmakerLobbyHistoryRequest](docs/CloudGamesExportMatchmakerLobbyHistoryRequest.md) @@ -250,7 +251,6 @@ Class | Method | HTTP request | Description - [CloudGamesGetGameVersionByIdResponse](docs/CloudGamesGetGameVersionByIdResponse.md) - [CloudGamesGetGamesResponse](docs/CloudGamesGetGamesResponse.md) - [CloudGamesGetLobbyLogsResponse](docs/CloudGamesGetLobbyLogsResponse.md) - - [CloudGamesListGameBuildsResponse](docs/CloudGamesListGameBuildsResponse.md) - [CloudGamesListGameCdnSitesResponse](docs/CloudGamesListGameCdnSitesResponse.md) - [CloudGamesListGameCustomAvatarsResponse](docs/CloudGamesListGameCustomAvatarsResponse.md) - [CloudGamesLogStream](docs/CloudGamesLogStream.md) diff --git a/sdks/full/rust-cli/docs/CloudGamesBuildCompression.md b/sdks/full/rust-cli/docs/CloudGamesDockerBuildCompression.md similarity index 88% rename from sdks/full/rust-cli/docs/CloudGamesBuildCompression.md rename to sdks/full/rust-cli/docs/CloudGamesDockerBuildCompression.md index fb25e9a05e..bc0b2c2b7d 100644 --- a/sdks/full/rust-cli/docs/CloudGamesBuildCompression.md +++ b/sdks/full/rust-cli/docs/CloudGamesDockerBuildCompression.md @@ -1,4 +1,4 @@ -# CloudGamesBuildCompression +# CloudGamesDockerBuildCompression ## Properties diff --git a/sdks/full/rust/docs/CloudGamesBuildKind.md b/sdks/full/rust-cli/docs/CloudGamesDockerBuildKind.md similarity index 90% rename from sdks/full/rust/docs/CloudGamesBuildKind.md rename to sdks/full/rust-cli/docs/CloudGamesDockerBuildKind.md index 0bbba38deb..04b712f52a 100644 --- a/sdks/full/rust/docs/CloudGamesBuildKind.md +++ b/sdks/full/rust-cli/docs/CloudGamesDockerBuildKind.md @@ -1,4 +1,4 @@ -# CloudGamesBuildKind +# CloudGamesDockerBuildKind ## Properties diff --git a/sdks/full/rust/docs/CloudGamesBuildsApi.md b/sdks/full/rust-cli/docs/CloudGamesDockerBuildsApi.md similarity index 54% rename from sdks/full/rust/docs/CloudGamesBuildsApi.md rename to sdks/full/rust-cli/docs/CloudGamesDockerBuildsApi.md index 85885a62ab..7d038d8182 100644 --- a/sdks/full/rust/docs/CloudGamesBuildsApi.md +++ b/sdks/full/rust-cli/docs/CloudGamesDockerBuildsApi.md @@ -1,17 +1,17 @@ -# \CloudGamesBuildsApi +# \CloudGamesDockerBuildsApi All URIs are relative to *https://api.rivet.gg* Method | HTTP request | Description ------------- | ------------- | ------------- -[**cloud_games_builds_create_game_build**](CloudGamesBuildsApi.md#cloud_games_builds_create_game_build) | **POST** /cloud/games/{game_id}/builds | -[**cloud_games_builds_list_game_builds**](CloudGamesBuildsApi.md#cloud_games_builds_list_game_builds) | **GET** /cloud/games/{game_id}/builds | +[**cloud_games_docker_builds_create_game_build**](CloudGamesDockerBuildsApi.md#cloud_games_docker_builds_create_game_build) | **POST** /cloud/games/{game_id}/docker/builds | +[**cloud_games_docker_builds_list_game_builds**](CloudGamesDockerBuildsApi.md#cloud_games_docker_builds_list_game_builds) | **GET** /cloud/games/{game_id}/docker/builds | -## cloud_games_builds_create_game_build +## cloud_games_docker_builds_create_game_build -> crate::models::CloudGamesCreateGameBuildResponse cloud_games_builds_create_game_build(game_id, cloud_games_create_game_build_request) +> crate::models::CloudGamesDockerCreateGameBuildResponse cloud_games_docker_builds_create_game_build(game_id, cloud_games_docker_create_game_build_request) Creates a new game build for the given game. @@ -22,11 +22,11 @@ Creates a new game build for the given game. Name | Type | Description | Required | Notes ------------- | ------------- | ------------- | ------------- | ------------- **game_id** | **uuid::Uuid** | | [required] | -**cloud_games_create_game_build_request** | [**CloudGamesCreateGameBuildRequest**](CloudGamesCreateGameBuildRequest.md) | | [required] | +**cloud_games_docker_create_game_build_request** | [**CloudGamesDockerCreateGameBuildRequest**](CloudGamesDockerCreateGameBuildRequest.md) | | [required] | ### Return type -[**crate::models::CloudGamesCreateGameBuildResponse**](CloudGamesCreateGameBuildResponse.md) +[**crate::models::CloudGamesDockerCreateGameBuildResponse**](CloudGamesDockerCreateGameBuildResponse.md) ### Authorization @@ -40,9 +40,9 @@ 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_builds_list_game_builds +## cloud_games_docker_builds_list_game_builds -> crate::models::CloudGamesListGameBuildsResponse cloud_games_builds_list_game_builds(game_id) +> crate::models::CloudGamesDockerListGameBuildsResponse cloud_games_docker_builds_list_game_builds(game_id) Lists game builds for the given game. @@ -56,7 +56,7 @@ Name | Type | Description | Required | Notes ### Return type -[**crate::models::CloudGamesListGameBuildsResponse**](CloudGamesListGameBuildsResponse.md) +[**crate::models::CloudGamesDockerListGameBuildsResponse**](CloudGamesDockerListGameBuildsResponse.md) ### Authorization diff --git a/sdks/full/rust-cli/docs/CloudGamesCreateGameBuildRequest.md b/sdks/full/rust-cli/docs/CloudGamesDockerCreateGameBuildRequest.md similarity index 66% rename from sdks/full/rust-cli/docs/CloudGamesCreateGameBuildRequest.md rename to sdks/full/rust-cli/docs/CloudGamesDockerCreateGameBuildRequest.md index 3861ff9f5d..5ad8daeca9 100644 --- a/sdks/full/rust-cli/docs/CloudGamesCreateGameBuildRequest.md +++ b/sdks/full/rust-cli/docs/CloudGamesDockerCreateGameBuildRequest.md @@ -1,14 +1,14 @@ -# CloudGamesCreateGameBuildRequest +# CloudGamesDockerCreateGameBuildRequest ## Properties Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**compression** | Option<[**crate::models::CloudGamesBuildCompression**](CloudGamesBuildCompression.md)> | | [optional] +**compression** | Option<[**crate::models::CloudGamesDockerBuildCompression**](CloudGamesDockerBuildCompression.md)> | | [optional] **display_name** | **String** | Represent a resource's readable display name. | **image_file** | [**crate::models::UploadPrepareFile**](UploadPrepareFile.md) | | **image_tag** | **String** | A tag given to the game build. | -**kind** | Option<[**crate::models::CloudGamesBuildKind**](CloudGamesBuildKind.md)> | | [optional] +**kind** | Option<[**crate::models::CloudGamesDockerBuildKind**](CloudGamesDockerBuildKind.md)> | | [optional] **multipart_upload** | Option<**bool**> | | [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/CloudGamesCreateGameBuildResponse.md b/sdks/full/rust-cli/docs/CloudGamesDockerCreateGameBuildResponse.md similarity index 93% rename from sdks/full/rust/docs/CloudGamesCreateGameBuildResponse.md rename to sdks/full/rust-cli/docs/CloudGamesDockerCreateGameBuildResponse.md index fb3c4a586a..63ae020286 100644 --- a/sdks/full/rust/docs/CloudGamesCreateGameBuildResponse.md +++ b/sdks/full/rust-cli/docs/CloudGamesDockerCreateGameBuildResponse.md @@ -1,4 +1,4 @@ -# CloudGamesCreateGameBuildResponse +# CloudGamesDockerCreateGameBuildResponse ## Properties diff --git a/sdks/full/rust-cli/docs/CloudGamesListGameBuildsResponse.md b/sdks/full/rust-cli/docs/CloudGamesDockerListGameBuildsResponse.md similarity index 90% rename from sdks/full/rust-cli/docs/CloudGamesListGameBuildsResponse.md rename to sdks/full/rust-cli/docs/CloudGamesDockerListGameBuildsResponse.md index 14bf4e7708..575c10688f 100644 --- a/sdks/full/rust-cli/docs/CloudGamesListGameBuildsResponse.md +++ b/sdks/full/rust-cli/docs/CloudGamesDockerListGameBuildsResponse.md @@ -1,4 +1,4 @@ -# CloudGamesListGameBuildsResponse +# CloudGamesDockerListGameBuildsResponse ## Properties diff --git a/sdks/full/rust-cli/src/apis/cloud_games_builds_api.rs b/sdks/full/rust-cli/src/apis/cloud_games_docker_builds_api.rs similarity index 71% rename from sdks/full/rust-cli/src/apis/cloud_games_builds_api.rs rename to sdks/full/rust-cli/src/apis/cloud_games_docker_builds_api.rs index d1bc1e91f6..0b808498bd 100644 --- a/sdks/full/rust-cli/src/apis/cloud_games_builds_api.rs +++ b/sdks/full/rust-cli/src/apis/cloud_games_docker_builds_api.rs @@ -15,10 +15,10 @@ use crate::apis::ResponseContent; use super::{Error, configuration}; -/// struct for typed errors of method [`cloud_games_builds_create_game_build`] +/// struct for typed errors of method [`cloud_games_docker_builds_create_game_build`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] -pub enum CloudGamesBuildsCreateGameBuildError { +pub enum CloudGamesDockerBuildsCreateGameBuildError { Status400(crate::models::ErrorBody), Status403(crate::models::ErrorBody), Status404(crate::models::ErrorBody), @@ -28,10 +28,10 @@ pub enum CloudGamesBuildsCreateGameBuildError { UnknownValue(serde_json::Value), } -/// struct for typed errors of method [`cloud_games_builds_list_game_builds`] +/// struct for typed errors of method [`cloud_games_docker_builds_list_game_builds`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] -pub enum CloudGamesBuildsListGameBuildsError { +pub enum CloudGamesDockerBuildsListGameBuildsError { Status400(crate::models::ErrorBody), Status403(crate::models::ErrorBody), Status404(crate::models::ErrorBody), @@ -43,12 +43,12 @@ pub enum CloudGamesBuildsListGameBuildsError { /// Creates a new game build for the given game. -pub async fn cloud_games_builds_create_game_build(configuration: &configuration::Configuration, game_id: &str, cloud_games_create_game_build_request: crate::models::CloudGamesCreateGameBuildRequest) -> Result> { +pub async fn cloud_games_docker_builds_create_game_build(configuration: &configuration::Configuration, game_id: &str, cloud_games_docker_create_game_build_request: crate::models::CloudGamesDockerCreateGameBuildRequest) -> Result> { let local_var_configuration = configuration; let local_var_client = &local_var_configuration.client; - let local_var_uri_str = format!("{}/cloud/games/{game_id}/builds", local_var_configuration.base_path, game_id=crate::apis::urlencode(game_id)); + let local_var_uri_str = format!("{}/cloud/games/{game_id}/docker/builds", 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 { @@ -57,7 +57,7 @@ pub async fn cloud_games_builds_create_game_build(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(&cloud_games_create_game_build_request); + local_var_req_builder = local_var_req_builder.json(&cloud_games_docker_create_game_build_request); let local_var_req = local_var_req_builder.build()?; let local_var_resp = local_var_client.execute(local_var_req).await?; @@ -68,19 +68,19 @@ pub async fn cloud_games_builds_create_game_build(configuration: &configuration: 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_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)) } } /// Lists game builds for the given game. -pub async fn cloud_games_builds_list_game_builds(configuration: &configuration::Configuration, game_id: &str) -> Result> { +pub async fn cloud_games_docker_builds_list_game_builds(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}/builds", local_var_configuration.base_path, game_id=crate::apis::urlencode(game_id)); + let local_var_uri_str = format!("{}/cloud/games/{game_id}/docker/builds", local_var_configuration.base_path, game_id=crate::apis::urlencode(game_id)); let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str()); if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { @@ -99,7 +99,7 @@ pub async fn cloud_games_builds_list_game_builds(configuration: &configuration:: 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_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 174663aba4..919658fa98 100644 --- a/sdks/full/rust-cli/src/apis/mod.rs +++ b/sdks/full/rust-cli/src/apis/mod.rs @@ -100,8 +100,8 @@ pub mod cloud_api; pub mod cloud_auth_api; pub mod cloud_devices_links_api; pub mod cloud_games_avatars_api; -pub mod cloud_games_builds_api; pub mod cloud_games_cdn_api; +pub mod cloud_games_docker_builds_api; pub mod cloud_games_games_api; pub mod cloud_games_matchmaker_api; pub mod cloud_games_namespaces_api; diff --git a/sdks/full/rust/src/models/cloud_games_build_compression.rs b/sdks/full/rust-cli/src/models/cloud_games_docker_build_compression.rs similarity index 75% rename from sdks/full/rust/src/models/cloud_games_build_compression.rs rename to sdks/full/rust-cli/src/models/cloud_games_docker_build_compression.rs index 9980cc9cb9..d9c256f898 100644 --- a/sdks/full/rust/src/models/cloud_games_build_compression.rs +++ b/sdks/full/rust-cli/src/models/cloud_games_docker_build_compression.rs @@ -11,7 +11,7 @@ /// #[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] -pub enum CloudGamesBuildCompression { +pub enum CloudGamesDockerBuildCompression { #[serde(rename = "none")] None, #[serde(rename = "lz4")] @@ -19,7 +19,7 @@ pub enum CloudGamesBuildCompression { } -impl ToString for CloudGamesBuildCompression { +impl ToString for CloudGamesDockerBuildCompression { fn to_string(&self) -> String { match self { Self::None => String::from("none"), @@ -28,8 +28,8 @@ impl ToString for CloudGamesBuildCompression { } } -impl Default for CloudGamesBuildCompression { - fn default() -> CloudGamesBuildCompression { +impl Default for CloudGamesDockerBuildCompression { + fn default() -> CloudGamesDockerBuildCompression { Self::None } } diff --git a/sdks/full/rust/src/models/cloud_games_build_kind.rs b/sdks/full/rust-cli/src/models/cloud_games_docker_build_kind.rs similarity index 79% rename from sdks/full/rust/src/models/cloud_games_build_kind.rs rename to sdks/full/rust-cli/src/models/cloud_games_docker_build_kind.rs index 892db37414..70b2859344 100644 --- a/sdks/full/rust/src/models/cloud_games_build_kind.rs +++ b/sdks/full/rust-cli/src/models/cloud_games_docker_build_kind.rs @@ -11,7 +11,7 @@ /// #[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] -pub enum CloudGamesBuildKind { +pub enum CloudGamesDockerBuildKind { #[serde(rename = "docker_image")] DockerImage, #[serde(rename = "oci_bundle")] @@ -19,7 +19,7 @@ pub enum CloudGamesBuildKind { } -impl ToString for CloudGamesBuildKind { +impl ToString for CloudGamesDockerBuildKind { fn to_string(&self) -> String { match self { Self::DockerImage => String::from("docker_image"), @@ -28,8 +28,8 @@ impl ToString for CloudGamesBuildKind { } } -impl Default for CloudGamesBuildKind { - fn default() -> CloudGamesBuildKind { +impl Default for CloudGamesDockerBuildKind { + fn default() -> CloudGamesDockerBuildKind { Self::DockerImage } } diff --git a/sdks/full/rust/src/models/cloud_games_create_game_build_request.rs b/sdks/full/rust-cli/src/models/cloud_games_docker_create_game_build_request.rs similarity index 75% rename from sdks/full/rust/src/models/cloud_games_create_game_build_request.rs rename to sdks/full/rust-cli/src/models/cloud_games_docker_create_game_build_request.rs index b25d286793..e37d552a32 100644 --- a/sdks/full/rust/src/models/cloud_games_create_game_build_request.rs +++ b/sdks/full/rust-cli/src/models/cloud_games_docker_create_game_build_request.rs @@ -12,9 +12,9 @@ #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] -pub struct CloudGamesCreateGameBuildRequest { +pub struct CloudGamesDockerCreateGameBuildRequest { #[serde(rename = "compression", skip_serializing_if = "Option::is_none")] - pub compression: Option, + pub compression: Option, /// Represent a resource's readable display name. #[serde(rename = "display_name")] pub display_name: String, @@ -24,14 +24,14 @@ pub struct CloudGamesCreateGameBuildRequest { #[serde(rename = "image_tag")] pub image_tag: String, #[serde(rename = "kind", skip_serializing_if = "Option::is_none")] - pub kind: Option, + pub kind: Option, #[serde(rename = "multipart_upload", skip_serializing_if = "Option::is_none")] pub multipart_upload: Option, } -impl CloudGamesCreateGameBuildRequest { - pub fn new(display_name: String, image_file: crate::models::UploadPrepareFile, image_tag: String) -> CloudGamesCreateGameBuildRequest { - CloudGamesCreateGameBuildRequest { +impl CloudGamesDockerCreateGameBuildRequest { + pub fn new(display_name: String, image_file: crate::models::UploadPrepareFile, image_tag: String) -> CloudGamesDockerCreateGameBuildRequest { + CloudGamesDockerCreateGameBuildRequest { compression: None, display_name, image_file: Box::new(image_file), diff --git a/sdks/full/rust/src/models/cloud_games_create_game_build_response.rs b/sdks/full/rust-cli/src/models/cloud_games_docker_create_game_build_response.rs similarity index 84% rename from sdks/full/rust/src/models/cloud_games_create_game_build_response.rs rename to sdks/full/rust-cli/src/models/cloud_games_docker_create_game_build_response.rs index bf7ed65cca..7a35673093 100644 --- a/sdks/full/rust/src/models/cloud_games_create_game_build_response.rs +++ b/sdks/full/rust-cli/src/models/cloud_games_docker_create_game_build_response.rs @@ -12,7 +12,7 @@ #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] -pub struct CloudGamesCreateGameBuildResponse { +pub struct CloudGamesDockerCreateGameBuildResponse { #[serde(rename = "build_id")] pub build_id: uuid::Uuid, #[serde(rename = "image_presigned_request", skip_serializing_if = "Option::is_none")] @@ -23,9 +23,9 @@ pub struct CloudGamesCreateGameBuildResponse { pub upload_id: uuid::Uuid, } -impl CloudGamesCreateGameBuildResponse { - pub fn new(build_id: uuid::Uuid, upload_id: uuid::Uuid) -> CloudGamesCreateGameBuildResponse { - CloudGamesCreateGameBuildResponse { +impl CloudGamesDockerCreateGameBuildResponse { + pub fn new(build_id: uuid::Uuid, upload_id: uuid::Uuid) -> CloudGamesDockerCreateGameBuildResponse { + CloudGamesDockerCreateGameBuildResponse { build_id, image_presigned_request: None, image_presigned_requests: None, diff --git a/sdks/full/rust/src/models/cloud_games_list_game_builds_response.rs b/sdks/full/rust-cli/src/models/cloud_games_docker_list_game_builds_response.rs similarity index 73% rename from sdks/full/rust/src/models/cloud_games_list_game_builds_response.rs rename to sdks/full/rust-cli/src/models/cloud_games_docker_list_game_builds_response.rs index b1acc359db..743e2ded7c 100644 --- a/sdks/full/rust/src/models/cloud_games_list_game_builds_response.rs +++ b/sdks/full/rust-cli/src/models/cloud_games_docker_list_game_builds_response.rs @@ -12,15 +12,15 @@ #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] -pub struct CloudGamesListGameBuildsResponse { +pub struct CloudGamesDockerListGameBuildsResponse { /// A list of build summaries. #[serde(rename = "builds")] pub builds: Vec, } -impl CloudGamesListGameBuildsResponse { - pub fn new(builds: Vec) -> CloudGamesListGameBuildsResponse { - CloudGamesListGameBuildsResponse { +impl CloudGamesDockerListGameBuildsResponse { + pub fn new(builds: Vec) -> CloudGamesDockerListGameBuildsResponse { + CloudGamesDockerListGameBuildsResponse { builds, } } diff --git a/sdks/full/rust-cli/src/models/mod.rs b/sdks/full/rust-cli/src/models/mod.rs index 3abe695bdd..a5ef02f3c0 100644 --- a/sdks/full/rust-cli/src/models/mod.rs +++ b/sdks/full/rust-cli/src/models/mod.rs @@ -106,16 +106,8 @@ pub mod cloud_game_full; pub use self::cloud_game_full::CloudGameFull; pub mod cloud_game_lobby_expenses; pub use self::cloud_game_lobby_expenses::CloudGameLobbyExpenses; -pub mod cloud_games_build_compression; -pub use self::cloud_games_build_compression::CloudGamesBuildCompression; -pub mod cloud_games_build_kind; -pub use self::cloud_games_build_kind::CloudGamesBuildKind; pub mod cloud_games_create_cloud_token_response; pub use self::cloud_games_create_cloud_token_response::CloudGamesCreateCloudTokenResponse; -pub mod cloud_games_create_game_build_request; -pub use self::cloud_games_create_game_build_request::CloudGamesCreateGameBuildRequest; -pub mod cloud_games_create_game_build_response; -pub use self::cloud_games_create_game_build_response::CloudGamesCreateGameBuildResponse; pub mod cloud_games_create_game_cdn_site_request; pub use self::cloud_games_create_game_cdn_site_request::CloudGamesCreateGameCdnSiteRequest; pub mod cloud_games_create_game_cdn_site_response; @@ -130,6 +122,16 @@ pub mod cloud_games_create_game_version_response; pub use self::cloud_games_create_game_version_response::CloudGamesCreateGameVersionResponse; pub mod cloud_games_delete_matchmaker_lobby_response; pub use self::cloud_games_delete_matchmaker_lobby_response::CloudGamesDeleteMatchmakerLobbyResponse; +pub mod cloud_games_docker_build_compression; +pub use self::cloud_games_docker_build_compression::CloudGamesDockerBuildCompression; +pub mod cloud_games_docker_build_kind; +pub use self::cloud_games_docker_build_kind::CloudGamesDockerBuildKind; +pub mod cloud_games_docker_create_game_build_request; +pub use self::cloud_games_docker_create_game_build_request::CloudGamesDockerCreateGameBuildRequest; +pub mod cloud_games_docker_create_game_build_response; +pub use self::cloud_games_docker_create_game_build_response::CloudGamesDockerCreateGameBuildResponse; +pub mod cloud_games_docker_list_game_builds_response; +pub use self::cloud_games_docker_list_game_builds_response::CloudGamesDockerListGameBuildsResponse; pub mod cloud_games_export_lobby_logs_request; pub use self::cloud_games_export_lobby_logs_request::CloudGamesExportLobbyLogsRequest; pub mod cloud_games_export_lobby_logs_response; @@ -154,8 +156,6 @@ pub mod cloud_games_get_games_response; pub use self::cloud_games_get_games_response::CloudGamesGetGamesResponse; pub mod cloud_games_get_lobby_logs_response; pub use self::cloud_games_get_lobby_logs_response::CloudGamesGetLobbyLogsResponse; -pub mod cloud_games_list_game_builds_response; -pub use self::cloud_games_list_game_builds_response::CloudGamesListGameBuildsResponse; pub mod cloud_games_list_game_cdn_sites_response; pub use self::cloud_games_list_game_cdn_sites_response::CloudGamesListGameCdnSitesResponse; pub mod cloud_games_list_game_custom_avatars_response; diff --git a/sdks/full/rust/.openapi-generator/FILES b/sdks/full/rust/.openapi-generator/FILES index 1bde2fe484..8becf9eef3 100644 --- a/sdks/full/rust/.openapi-generator/FILES +++ b/sdks/full/rust/.openapi-generator/FILES @@ -67,13 +67,8 @@ docs/CloudDevicesPrepareDeviceLinkResponse.md docs/CloudGameFull.md docs/CloudGameLobbyExpenses.md docs/CloudGamesAvatarsApi.md -docs/CloudGamesBuildCompression.md -docs/CloudGamesBuildKind.md -docs/CloudGamesBuildsApi.md docs/CloudGamesCdnApi.md docs/CloudGamesCreateCloudTokenResponse.md -docs/CloudGamesCreateGameBuildRequest.md -docs/CloudGamesCreateGameBuildResponse.md docs/CloudGamesCreateGameCdnSiteRequest.md docs/CloudGamesCreateGameCdnSiteResponse.md docs/CloudGamesCreateGameRequest.md @@ -81,6 +76,12 @@ docs/CloudGamesCreateGameResponse.md docs/CloudGamesCreateGameVersionRequest.md docs/CloudGamesCreateGameVersionResponse.md docs/CloudGamesDeleteMatchmakerLobbyResponse.md +docs/CloudGamesDockerBuildCompression.md +docs/CloudGamesDockerBuildKind.md +docs/CloudGamesDockerBuildsApi.md +docs/CloudGamesDockerCreateGameBuildRequest.md +docs/CloudGamesDockerCreateGameBuildResponse.md +docs/CloudGamesDockerListGameBuildsResponse.md docs/CloudGamesExportLobbyLogsRequest.md docs/CloudGamesExportLobbyLogsResponse.md docs/CloudGamesExportMatchmakerLobbyHistoryRequest.md @@ -94,7 +95,6 @@ docs/CloudGamesGetGameByIdResponse.md docs/CloudGamesGetGameVersionByIdResponse.md docs/CloudGamesGetGamesResponse.md docs/CloudGamesGetLobbyLogsResponse.md -docs/CloudGamesListGameBuildsResponse.md docs/CloudGamesListGameCdnSitesResponse.md docs/CloudGamesListGameCustomAvatarsResponse.md docs/CloudGamesLogStream.md @@ -361,8 +361,8 @@ src/apis/cloud_api.rs src/apis/cloud_auth_api.rs src/apis/cloud_devices_links_api.rs src/apis/cloud_games_avatars_api.rs -src/apis/cloud_games_builds_api.rs src/apis/cloud_games_cdn_api.rs +src/apis/cloud_games_docker_builds_api.rs src/apis/cloud_games_games_api.rs src/apis/cloud_games_matchmaker_api.rs src/apis/cloud_games_namespaces_analytics_api.rs @@ -448,11 +448,7 @@ src/models/cloud_devices_get_device_link_response.rs src/models/cloud_devices_prepare_device_link_response.rs src/models/cloud_game_full.rs src/models/cloud_game_lobby_expenses.rs -src/models/cloud_games_build_compression.rs -src/models/cloud_games_build_kind.rs src/models/cloud_games_create_cloud_token_response.rs -src/models/cloud_games_create_game_build_request.rs -src/models/cloud_games_create_game_build_response.rs src/models/cloud_games_create_game_cdn_site_request.rs src/models/cloud_games_create_game_cdn_site_response.rs src/models/cloud_games_create_game_request.rs @@ -460,6 +456,11 @@ 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_delete_matchmaker_lobby_response.rs +src/models/cloud_games_docker_build_compression.rs +src/models/cloud_games_docker_build_kind.rs +src/models/cloud_games_docker_create_game_build_request.rs +src/models/cloud_games_docker_create_game_build_response.rs +src/models/cloud_games_docker_list_game_builds_response.rs src/models/cloud_games_export_lobby_logs_request.rs src/models/cloud_games_export_lobby_logs_response.rs src/models/cloud_games_export_matchmaker_lobby_history_request.rs @@ -472,7 +473,6 @@ src/models/cloud_games_get_game_by_id_response.rs src/models/cloud_games_get_game_version_by_id_response.rs src/models/cloud_games_get_games_response.rs src/models/cloud_games_get_lobby_logs_response.rs -src/models/cloud_games_list_game_builds_response.rs src/models/cloud_games_list_game_cdn_sites_response.rs src/models/cloud_games_list_game_custom_avatars_response.rs src/models/cloud_games_log_stream.rs diff --git a/sdks/full/rust/README.md b/sdks/full/rust/README.md index 6d83dd8d86..1dddbffd7e 100644 --- a/sdks/full/rust/README.md +++ b/sdks/full/rust/README.md @@ -45,10 +45,10 @@ Class | Method | HTTP request | Description *CloudGamesAvatarsApi* | [**cloud_games_avatars_complete_custom_avatar_upload**](docs/CloudGamesAvatarsApi.md#cloud_games_avatars_complete_custom_avatar_upload) | **POST** /cloud/games/{game_id}/avatar-upload/{upload_id}/complete | *CloudGamesAvatarsApi* | [**cloud_games_avatars_list_game_custom_avatars**](docs/CloudGamesAvatarsApi.md#cloud_games_avatars_list_game_custom_avatars) | **GET** /cloud/games/{game_id}/avatars | *CloudGamesAvatarsApi* | [**cloud_games_avatars_prepare_custom_avatar_upload**](docs/CloudGamesAvatarsApi.md#cloud_games_avatars_prepare_custom_avatar_upload) | **POST** /cloud/games/{game_id}/prepare | -*CloudGamesBuildsApi* | [**cloud_games_builds_create_game_build**](docs/CloudGamesBuildsApi.md#cloud_games_builds_create_game_build) | **POST** /cloud/games/{game_id}/builds | -*CloudGamesBuildsApi* | [**cloud_games_builds_list_game_builds**](docs/CloudGamesBuildsApi.md#cloud_games_builds_list_game_builds) | **GET** /cloud/games/{game_id}/builds | *CloudGamesCdnApi* | [**cloud_games_cdn_create_game_cdn_site**](docs/CloudGamesCdnApi.md#cloud_games_cdn_create_game_cdn_site) | **POST** /cloud/games/{game_id}/cdn/sites | *CloudGamesCdnApi* | [**cloud_games_cdn_list_game_cdn_sites**](docs/CloudGamesCdnApi.md#cloud_games_cdn_list_game_cdn_sites) | **GET** /cloud/games/{game_id}/cdn/sites | +*CloudGamesDockerBuildsApi* | [**cloud_games_docker_builds_create_game_build**](docs/CloudGamesDockerBuildsApi.md#cloud_games_docker_builds_create_game_build) | **POST** /cloud/games/{game_id}/docker/builds | +*CloudGamesDockerBuildsApi* | [**cloud_games_docker_builds_list_game_builds**](docs/CloudGamesDockerBuildsApi.md#cloud_games_docker_builds_list_game_builds) | **GET** /cloud/games/{game_id}/docker/builds | *CloudGamesGamesApi* | [**cloud_games_games_create_game**](docs/CloudGamesGamesApi.md#cloud_games_games_create_game) | **POST** /cloud/games | *CloudGamesGamesApi* | [**cloud_games_games_game_banner_upload_complete**](docs/CloudGamesGamesApi.md#cloud_games_games_game_banner_upload_complete) | **POST** /cloud/games/{game_id}/banner-upload/{upload_id}/complete | *CloudGamesGamesApi* | [**cloud_games_games_game_banner_upload_prepare**](docs/CloudGamesGamesApi.md#cloud_games_games_game_banner_upload_prepare) | **POST** /cloud/games/{game_id}/banner-upload/prepare | @@ -226,11 +226,7 @@ Class | Method | HTTP request | Description - [CloudDevicesPrepareDeviceLinkResponse](docs/CloudDevicesPrepareDeviceLinkResponse.md) - [CloudGameFull](docs/CloudGameFull.md) - [CloudGameLobbyExpenses](docs/CloudGameLobbyExpenses.md) - - [CloudGamesBuildCompression](docs/CloudGamesBuildCompression.md) - - [CloudGamesBuildKind](docs/CloudGamesBuildKind.md) - [CloudGamesCreateCloudTokenResponse](docs/CloudGamesCreateCloudTokenResponse.md) - - [CloudGamesCreateGameBuildRequest](docs/CloudGamesCreateGameBuildRequest.md) - - [CloudGamesCreateGameBuildResponse](docs/CloudGamesCreateGameBuildResponse.md) - [CloudGamesCreateGameCdnSiteRequest](docs/CloudGamesCreateGameCdnSiteRequest.md) - [CloudGamesCreateGameCdnSiteResponse](docs/CloudGamesCreateGameCdnSiteResponse.md) - [CloudGamesCreateGameRequest](docs/CloudGamesCreateGameRequest.md) @@ -238,6 +234,11 @@ Class | Method | HTTP request | Description - [CloudGamesCreateGameVersionRequest](docs/CloudGamesCreateGameVersionRequest.md) - [CloudGamesCreateGameVersionResponse](docs/CloudGamesCreateGameVersionResponse.md) - [CloudGamesDeleteMatchmakerLobbyResponse](docs/CloudGamesDeleteMatchmakerLobbyResponse.md) + - [CloudGamesDockerBuildCompression](docs/CloudGamesDockerBuildCompression.md) + - [CloudGamesDockerBuildKind](docs/CloudGamesDockerBuildKind.md) + - [CloudGamesDockerCreateGameBuildRequest](docs/CloudGamesDockerCreateGameBuildRequest.md) + - [CloudGamesDockerCreateGameBuildResponse](docs/CloudGamesDockerCreateGameBuildResponse.md) + - [CloudGamesDockerListGameBuildsResponse](docs/CloudGamesDockerListGameBuildsResponse.md) - [CloudGamesExportLobbyLogsRequest](docs/CloudGamesExportLobbyLogsRequest.md) - [CloudGamesExportLobbyLogsResponse](docs/CloudGamesExportLobbyLogsResponse.md) - [CloudGamesExportMatchmakerLobbyHistoryRequest](docs/CloudGamesExportMatchmakerLobbyHistoryRequest.md) @@ -250,7 +251,6 @@ Class | Method | HTTP request | Description - [CloudGamesGetGameVersionByIdResponse](docs/CloudGamesGetGameVersionByIdResponse.md) - [CloudGamesGetGamesResponse](docs/CloudGamesGetGamesResponse.md) - [CloudGamesGetLobbyLogsResponse](docs/CloudGamesGetLobbyLogsResponse.md) - - [CloudGamesListGameBuildsResponse](docs/CloudGamesListGameBuildsResponse.md) - [CloudGamesListGameCdnSitesResponse](docs/CloudGamesListGameCdnSitesResponse.md) - [CloudGamesListGameCustomAvatarsResponse](docs/CloudGamesListGameCustomAvatarsResponse.md) - [CloudGamesLogStream](docs/CloudGamesLogStream.md) diff --git a/sdks/full/rust/docs/CloudGamesBuildCompression.md b/sdks/full/rust/docs/CloudGamesDockerBuildCompression.md similarity index 88% rename from sdks/full/rust/docs/CloudGamesBuildCompression.md rename to sdks/full/rust/docs/CloudGamesDockerBuildCompression.md index fb25e9a05e..bc0b2c2b7d 100644 --- a/sdks/full/rust/docs/CloudGamesBuildCompression.md +++ b/sdks/full/rust/docs/CloudGamesDockerBuildCompression.md @@ -1,4 +1,4 @@ -# CloudGamesBuildCompression +# CloudGamesDockerBuildCompression ## Properties diff --git a/sdks/full/rust-cli/docs/CloudGamesBuildKind.md b/sdks/full/rust/docs/CloudGamesDockerBuildKind.md similarity index 90% rename from sdks/full/rust-cli/docs/CloudGamesBuildKind.md rename to sdks/full/rust/docs/CloudGamesDockerBuildKind.md index 0bbba38deb..04b712f52a 100644 --- a/sdks/full/rust-cli/docs/CloudGamesBuildKind.md +++ b/sdks/full/rust/docs/CloudGamesDockerBuildKind.md @@ -1,4 +1,4 @@ -# CloudGamesBuildKind +# CloudGamesDockerBuildKind ## Properties diff --git a/sdks/full/rust-cli/docs/CloudGamesBuildsApi.md b/sdks/full/rust/docs/CloudGamesDockerBuildsApi.md similarity index 54% rename from sdks/full/rust-cli/docs/CloudGamesBuildsApi.md rename to sdks/full/rust/docs/CloudGamesDockerBuildsApi.md index 85885a62ab..7d038d8182 100644 --- a/sdks/full/rust-cli/docs/CloudGamesBuildsApi.md +++ b/sdks/full/rust/docs/CloudGamesDockerBuildsApi.md @@ -1,17 +1,17 @@ -# \CloudGamesBuildsApi +# \CloudGamesDockerBuildsApi All URIs are relative to *https://api.rivet.gg* Method | HTTP request | Description ------------- | ------------- | ------------- -[**cloud_games_builds_create_game_build**](CloudGamesBuildsApi.md#cloud_games_builds_create_game_build) | **POST** /cloud/games/{game_id}/builds | -[**cloud_games_builds_list_game_builds**](CloudGamesBuildsApi.md#cloud_games_builds_list_game_builds) | **GET** /cloud/games/{game_id}/builds | +[**cloud_games_docker_builds_create_game_build**](CloudGamesDockerBuildsApi.md#cloud_games_docker_builds_create_game_build) | **POST** /cloud/games/{game_id}/docker/builds | +[**cloud_games_docker_builds_list_game_builds**](CloudGamesDockerBuildsApi.md#cloud_games_docker_builds_list_game_builds) | **GET** /cloud/games/{game_id}/docker/builds | -## cloud_games_builds_create_game_build +## cloud_games_docker_builds_create_game_build -> crate::models::CloudGamesCreateGameBuildResponse cloud_games_builds_create_game_build(game_id, cloud_games_create_game_build_request) +> crate::models::CloudGamesDockerCreateGameBuildResponse cloud_games_docker_builds_create_game_build(game_id, cloud_games_docker_create_game_build_request) Creates a new game build for the given game. @@ -22,11 +22,11 @@ Creates a new game build for the given game. Name | Type | Description | Required | Notes ------------- | ------------- | ------------- | ------------- | ------------- **game_id** | **uuid::Uuid** | | [required] | -**cloud_games_create_game_build_request** | [**CloudGamesCreateGameBuildRequest**](CloudGamesCreateGameBuildRequest.md) | | [required] | +**cloud_games_docker_create_game_build_request** | [**CloudGamesDockerCreateGameBuildRequest**](CloudGamesDockerCreateGameBuildRequest.md) | | [required] | ### Return type -[**crate::models::CloudGamesCreateGameBuildResponse**](CloudGamesCreateGameBuildResponse.md) +[**crate::models::CloudGamesDockerCreateGameBuildResponse**](CloudGamesDockerCreateGameBuildResponse.md) ### Authorization @@ -40,9 +40,9 @@ 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_builds_list_game_builds +## cloud_games_docker_builds_list_game_builds -> crate::models::CloudGamesListGameBuildsResponse cloud_games_builds_list_game_builds(game_id) +> crate::models::CloudGamesDockerListGameBuildsResponse cloud_games_docker_builds_list_game_builds(game_id) Lists game builds for the given game. @@ -56,7 +56,7 @@ Name | Type | Description | Required | Notes ### Return type -[**crate::models::CloudGamesListGameBuildsResponse**](CloudGamesListGameBuildsResponse.md) +[**crate::models::CloudGamesDockerListGameBuildsResponse**](CloudGamesDockerListGameBuildsResponse.md) ### Authorization diff --git a/sdks/full/rust/docs/CloudGamesCreateGameBuildRequest.md b/sdks/full/rust/docs/CloudGamesDockerCreateGameBuildRequest.md similarity index 66% rename from sdks/full/rust/docs/CloudGamesCreateGameBuildRequest.md rename to sdks/full/rust/docs/CloudGamesDockerCreateGameBuildRequest.md index 3861ff9f5d..5ad8daeca9 100644 --- a/sdks/full/rust/docs/CloudGamesCreateGameBuildRequest.md +++ b/sdks/full/rust/docs/CloudGamesDockerCreateGameBuildRequest.md @@ -1,14 +1,14 @@ -# CloudGamesCreateGameBuildRequest +# CloudGamesDockerCreateGameBuildRequest ## Properties Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**compression** | Option<[**crate::models::CloudGamesBuildCompression**](CloudGamesBuildCompression.md)> | | [optional] +**compression** | Option<[**crate::models::CloudGamesDockerBuildCompression**](CloudGamesDockerBuildCompression.md)> | | [optional] **display_name** | **String** | Represent a resource's readable display name. | **image_file** | [**crate::models::UploadPrepareFile**](UploadPrepareFile.md) | | **image_tag** | **String** | A tag given to the game build. | -**kind** | Option<[**crate::models::CloudGamesBuildKind**](CloudGamesBuildKind.md)> | | [optional] +**kind** | Option<[**crate::models::CloudGamesDockerBuildKind**](CloudGamesDockerBuildKind.md)> | | [optional] **multipart_upload** | Option<**bool**> | | [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/CloudGamesCreateGameBuildResponse.md b/sdks/full/rust/docs/CloudGamesDockerCreateGameBuildResponse.md similarity index 93% rename from sdks/full/rust-cli/docs/CloudGamesCreateGameBuildResponse.md rename to sdks/full/rust/docs/CloudGamesDockerCreateGameBuildResponse.md index fb3c4a586a..63ae020286 100644 --- a/sdks/full/rust-cli/docs/CloudGamesCreateGameBuildResponse.md +++ b/sdks/full/rust/docs/CloudGamesDockerCreateGameBuildResponse.md @@ -1,4 +1,4 @@ -# CloudGamesCreateGameBuildResponse +# CloudGamesDockerCreateGameBuildResponse ## Properties diff --git a/sdks/full/rust/docs/CloudGamesListGameBuildsResponse.md b/sdks/full/rust/docs/CloudGamesDockerListGameBuildsResponse.md similarity index 90% rename from sdks/full/rust/docs/CloudGamesListGameBuildsResponse.md rename to sdks/full/rust/docs/CloudGamesDockerListGameBuildsResponse.md index 14bf4e7708..575c10688f 100644 --- a/sdks/full/rust/docs/CloudGamesListGameBuildsResponse.md +++ b/sdks/full/rust/docs/CloudGamesDockerListGameBuildsResponse.md @@ -1,4 +1,4 @@ -# CloudGamesListGameBuildsResponse +# CloudGamesDockerListGameBuildsResponse ## Properties diff --git a/sdks/full/rust/src/apis/cloud_games_builds_api.rs b/sdks/full/rust/src/apis/cloud_games_docker_builds_api.rs similarity index 71% rename from sdks/full/rust/src/apis/cloud_games_builds_api.rs rename to sdks/full/rust/src/apis/cloud_games_docker_builds_api.rs index d1bc1e91f6..0b808498bd 100644 --- a/sdks/full/rust/src/apis/cloud_games_builds_api.rs +++ b/sdks/full/rust/src/apis/cloud_games_docker_builds_api.rs @@ -15,10 +15,10 @@ use crate::apis::ResponseContent; use super::{Error, configuration}; -/// struct for typed errors of method [`cloud_games_builds_create_game_build`] +/// struct for typed errors of method [`cloud_games_docker_builds_create_game_build`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] -pub enum CloudGamesBuildsCreateGameBuildError { +pub enum CloudGamesDockerBuildsCreateGameBuildError { Status400(crate::models::ErrorBody), Status403(crate::models::ErrorBody), Status404(crate::models::ErrorBody), @@ -28,10 +28,10 @@ pub enum CloudGamesBuildsCreateGameBuildError { UnknownValue(serde_json::Value), } -/// struct for typed errors of method [`cloud_games_builds_list_game_builds`] +/// struct for typed errors of method [`cloud_games_docker_builds_list_game_builds`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] -pub enum CloudGamesBuildsListGameBuildsError { +pub enum CloudGamesDockerBuildsListGameBuildsError { Status400(crate::models::ErrorBody), Status403(crate::models::ErrorBody), Status404(crate::models::ErrorBody), @@ -43,12 +43,12 @@ pub enum CloudGamesBuildsListGameBuildsError { /// Creates a new game build for the given game. -pub async fn cloud_games_builds_create_game_build(configuration: &configuration::Configuration, game_id: &str, cloud_games_create_game_build_request: crate::models::CloudGamesCreateGameBuildRequest) -> Result> { +pub async fn cloud_games_docker_builds_create_game_build(configuration: &configuration::Configuration, game_id: &str, cloud_games_docker_create_game_build_request: crate::models::CloudGamesDockerCreateGameBuildRequest) -> Result> { let local_var_configuration = configuration; let local_var_client = &local_var_configuration.client; - let local_var_uri_str = format!("{}/cloud/games/{game_id}/builds", local_var_configuration.base_path, game_id=crate::apis::urlencode(game_id)); + let local_var_uri_str = format!("{}/cloud/games/{game_id}/docker/builds", 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 { @@ -57,7 +57,7 @@ pub async fn cloud_games_builds_create_game_build(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(&cloud_games_create_game_build_request); + local_var_req_builder = local_var_req_builder.json(&cloud_games_docker_create_game_build_request); let local_var_req = local_var_req_builder.build()?; let local_var_resp = local_var_client.execute(local_var_req).await?; @@ -68,19 +68,19 @@ pub async fn cloud_games_builds_create_game_build(configuration: &configuration: 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_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)) } } /// Lists game builds for the given game. -pub async fn cloud_games_builds_list_game_builds(configuration: &configuration::Configuration, game_id: &str) -> Result> { +pub async fn cloud_games_docker_builds_list_game_builds(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}/builds", local_var_configuration.base_path, game_id=crate::apis::urlencode(game_id)); + let local_var_uri_str = format!("{}/cloud/games/{game_id}/docker/builds", local_var_configuration.base_path, game_id=crate::apis::urlencode(game_id)); let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str()); if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { @@ -99,7 +99,7 @@ pub async fn cloud_games_builds_list_game_builds(configuration: &configuration:: 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_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 174663aba4..919658fa98 100644 --- a/sdks/full/rust/src/apis/mod.rs +++ b/sdks/full/rust/src/apis/mod.rs @@ -100,8 +100,8 @@ pub mod cloud_api; pub mod cloud_auth_api; pub mod cloud_devices_links_api; pub mod cloud_games_avatars_api; -pub mod cloud_games_builds_api; pub mod cloud_games_cdn_api; +pub mod cloud_games_docker_builds_api; pub mod cloud_games_games_api; pub mod cloud_games_matchmaker_api; pub mod cloud_games_namespaces_api; diff --git a/sdks/full/rust-cli/src/models/cloud_games_build_compression.rs b/sdks/full/rust/src/models/cloud_games_docker_build_compression.rs similarity index 75% rename from sdks/full/rust-cli/src/models/cloud_games_build_compression.rs rename to sdks/full/rust/src/models/cloud_games_docker_build_compression.rs index 9980cc9cb9..d9c256f898 100644 --- a/sdks/full/rust-cli/src/models/cloud_games_build_compression.rs +++ b/sdks/full/rust/src/models/cloud_games_docker_build_compression.rs @@ -11,7 +11,7 @@ /// #[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] -pub enum CloudGamesBuildCompression { +pub enum CloudGamesDockerBuildCompression { #[serde(rename = "none")] None, #[serde(rename = "lz4")] @@ -19,7 +19,7 @@ pub enum CloudGamesBuildCompression { } -impl ToString for CloudGamesBuildCompression { +impl ToString for CloudGamesDockerBuildCompression { fn to_string(&self) -> String { match self { Self::None => String::from("none"), @@ -28,8 +28,8 @@ impl ToString for CloudGamesBuildCompression { } } -impl Default for CloudGamesBuildCompression { - fn default() -> CloudGamesBuildCompression { +impl Default for CloudGamesDockerBuildCompression { + fn default() -> CloudGamesDockerBuildCompression { Self::None } } diff --git a/sdks/full/rust-cli/src/models/cloud_games_build_kind.rs b/sdks/full/rust/src/models/cloud_games_docker_build_kind.rs similarity index 79% rename from sdks/full/rust-cli/src/models/cloud_games_build_kind.rs rename to sdks/full/rust/src/models/cloud_games_docker_build_kind.rs index 892db37414..70b2859344 100644 --- a/sdks/full/rust-cli/src/models/cloud_games_build_kind.rs +++ b/sdks/full/rust/src/models/cloud_games_docker_build_kind.rs @@ -11,7 +11,7 @@ /// #[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] -pub enum CloudGamesBuildKind { +pub enum CloudGamesDockerBuildKind { #[serde(rename = "docker_image")] DockerImage, #[serde(rename = "oci_bundle")] @@ -19,7 +19,7 @@ pub enum CloudGamesBuildKind { } -impl ToString for CloudGamesBuildKind { +impl ToString for CloudGamesDockerBuildKind { fn to_string(&self) -> String { match self { Self::DockerImage => String::from("docker_image"), @@ -28,8 +28,8 @@ impl ToString for CloudGamesBuildKind { } } -impl Default for CloudGamesBuildKind { - fn default() -> CloudGamesBuildKind { +impl Default for CloudGamesDockerBuildKind { + fn default() -> CloudGamesDockerBuildKind { Self::DockerImage } } diff --git a/sdks/full/rust-cli/src/models/cloud_games_create_game_build_request.rs b/sdks/full/rust/src/models/cloud_games_docker_create_game_build_request.rs similarity index 75% rename from sdks/full/rust-cli/src/models/cloud_games_create_game_build_request.rs rename to sdks/full/rust/src/models/cloud_games_docker_create_game_build_request.rs index b25d286793..e37d552a32 100644 --- a/sdks/full/rust-cli/src/models/cloud_games_create_game_build_request.rs +++ b/sdks/full/rust/src/models/cloud_games_docker_create_game_build_request.rs @@ -12,9 +12,9 @@ #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] -pub struct CloudGamesCreateGameBuildRequest { +pub struct CloudGamesDockerCreateGameBuildRequest { #[serde(rename = "compression", skip_serializing_if = "Option::is_none")] - pub compression: Option, + pub compression: Option, /// Represent a resource's readable display name. #[serde(rename = "display_name")] pub display_name: String, @@ -24,14 +24,14 @@ pub struct CloudGamesCreateGameBuildRequest { #[serde(rename = "image_tag")] pub image_tag: String, #[serde(rename = "kind", skip_serializing_if = "Option::is_none")] - pub kind: Option, + pub kind: Option, #[serde(rename = "multipart_upload", skip_serializing_if = "Option::is_none")] pub multipart_upload: Option, } -impl CloudGamesCreateGameBuildRequest { - pub fn new(display_name: String, image_file: crate::models::UploadPrepareFile, image_tag: String) -> CloudGamesCreateGameBuildRequest { - CloudGamesCreateGameBuildRequest { +impl CloudGamesDockerCreateGameBuildRequest { + pub fn new(display_name: String, image_file: crate::models::UploadPrepareFile, image_tag: String) -> CloudGamesDockerCreateGameBuildRequest { + CloudGamesDockerCreateGameBuildRequest { compression: None, display_name, image_file: Box::new(image_file), diff --git a/sdks/full/rust-cli/src/models/cloud_games_create_game_build_response.rs b/sdks/full/rust/src/models/cloud_games_docker_create_game_build_response.rs similarity index 84% rename from sdks/full/rust-cli/src/models/cloud_games_create_game_build_response.rs rename to sdks/full/rust/src/models/cloud_games_docker_create_game_build_response.rs index bf7ed65cca..7a35673093 100644 --- a/sdks/full/rust-cli/src/models/cloud_games_create_game_build_response.rs +++ b/sdks/full/rust/src/models/cloud_games_docker_create_game_build_response.rs @@ -12,7 +12,7 @@ #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] -pub struct CloudGamesCreateGameBuildResponse { +pub struct CloudGamesDockerCreateGameBuildResponse { #[serde(rename = "build_id")] pub build_id: uuid::Uuid, #[serde(rename = "image_presigned_request", skip_serializing_if = "Option::is_none")] @@ -23,9 +23,9 @@ pub struct CloudGamesCreateGameBuildResponse { pub upload_id: uuid::Uuid, } -impl CloudGamesCreateGameBuildResponse { - pub fn new(build_id: uuid::Uuid, upload_id: uuid::Uuid) -> CloudGamesCreateGameBuildResponse { - CloudGamesCreateGameBuildResponse { +impl CloudGamesDockerCreateGameBuildResponse { + pub fn new(build_id: uuid::Uuid, upload_id: uuid::Uuid) -> CloudGamesDockerCreateGameBuildResponse { + CloudGamesDockerCreateGameBuildResponse { build_id, image_presigned_request: None, image_presigned_requests: None, diff --git a/sdks/full/rust-cli/src/models/cloud_games_list_game_builds_response.rs b/sdks/full/rust/src/models/cloud_games_docker_list_game_builds_response.rs similarity index 73% rename from sdks/full/rust-cli/src/models/cloud_games_list_game_builds_response.rs rename to sdks/full/rust/src/models/cloud_games_docker_list_game_builds_response.rs index b1acc359db..743e2ded7c 100644 --- a/sdks/full/rust-cli/src/models/cloud_games_list_game_builds_response.rs +++ b/sdks/full/rust/src/models/cloud_games_docker_list_game_builds_response.rs @@ -12,15 +12,15 @@ #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] -pub struct CloudGamesListGameBuildsResponse { +pub struct CloudGamesDockerListGameBuildsResponse { /// A list of build summaries. #[serde(rename = "builds")] pub builds: Vec, } -impl CloudGamesListGameBuildsResponse { - pub fn new(builds: Vec) -> CloudGamesListGameBuildsResponse { - CloudGamesListGameBuildsResponse { +impl CloudGamesDockerListGameBuildsResponse { + pub fn new(builds: Vec) -> CloudGamesDockerListGameBuildsResponse { + CloudGamesDockerListGameBuildsResponse { builds, } } diff --git a/sdks/full/rust/src/models/mod.rs b/sdks/full/rust/src/models/mod.rs index 3abe695bdd..a5ef02f3c0 100644 --- a/sdks/full/rust/src/models/mod.rs +++ b/sdks/full/rust/src/models/mod.rs @@ -106,16 +106,8 @@ pub mod cloud_game_full; pub use self::cloud_game_full::CloudGameFull; pub mod cloud_game_lobby_expenses; pub use self::cloud_game_lobby_expenses::CloudGameLobbyExpenses; -pub mod cloud_games_build_compression; -pub use self::cloud_games_build_compression::CloudGamesBuildCompression; -pub mod cloud_games_build_kind; -pub use self::cloud_games_build_kind::CloudGamesBuildKind; pub mod cloud_games_create_cloud_token_response; pub use self::cloud_games_create_cloud_token_response::CloudGamesCreateCloudTokenResponse; -pub mod cloud_games_create_game_build_request; -pub use self::cloud_games_create_game_build_request::CloudGamesCreateGameBuildRequest; -pub mod cloud_games_create_game_build_response; -pub use self::cloud_games_create_game_build_response::CloudGamesCreateGameBuildResponse; pub mod cloud_games_create_game_cdn_site_request; pub use self::cloud_games_create_game_cdn_site_request::CloudGamesCreateGameCdnSiteRequest; pub mod cloud_games_create_game_cdn_site_response; @@ -130,6 +122,16 @@ pub mod cloud_games_create_game_version_response; pub use self::cloud_games_create_game_version_response::CloudGamesCreateGameVersionResponse; pub mod cloud_games_delete_matchmaker_lobby_response; pub use self::cloud_games_delete_matchmaker_lobby_response::CloudGamesDeleteMatchmakerLobbyResponse; +pub mod cloud_games_docker_build_compression; +pub use self::cloud_games_docker_build_compression::CloudGamesDockerBuildCompression; +pub mod cloud_games_docker_build_kind; +pub use self::cloud_games_docker_build_kind::CloudGamesDockerBuildKind; +pub mod cloud_games_docker_create_game_build_request; +pub use self::cloud_games_docker_create_game_build_request::CloudGamesDockerCreateGameBuildRequest; +pub mod cloud_games_docker_create_game_build_response; +pub use self::cloud_games_docker_create_game_build_response::CloudGamesDockerCreateGameBuildResponse; +pub mod cloud_games_docker_list_game_builds_response; +pub use self::cloud_games_docker_list_game_builds_response::CloudGamesDockerListGameBuildsResponse; pub mod cloud_games_export_lobby_logs_request; pub use self::cloud_games_export_lobby_logs_request::CloudGamesExportLobbyLogsRequest; pub mod cloud_games_export_lobby_logs_response; @@ -154,8 +156,6 @@ pub mod cloud_games_get_games_response; pub use self::cloud_games_get_games_response::CloudGamesGetGamesResponse; pub mod cloud_games_get_lobby_logs_response; pub use self::cloud_games_get_lobby_logs_response::CloudGamesGetLobbyLogsResponse; -pub mod cloud_games_list_game_builds_response; -pub use self::cloud_games_list_game_builds_response::CloudGamesListGameBuildsResponse; pub mod cloud_games_list_game_cdn_sites_response; pub use self::cloud_games_list_game_cdn_sites_response::CloudGamesListGameCdnSitesResponse; pub mod cloud_games_list_game_custom_avatars_response; diff --git a/sdks/full/typescript/archive.tgz b/sdks/full/typescript/archive.tgz index 19b1626280..23435917c5 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:38f957dfa8a9d28fd62ba9f28d8aeaa7c524b7010cb25b5a44236eecba7caa00 -size 633868 +oid sha256:4152096d289549a96afe2c3239ee5f2c06f4004eb491528926f359f412d6de2c +size 638887 diff --git a/sdks/full/typescript/src/api/resources/cloud/resources/games/client/Client.ts b/sdks/full/typescript/src/api/resources/cloud/resources/games/client/Client.ts index 9b47d4fe4e..7fe60b90df 100644 --- a/sdks/full/typescript/src/api/resources/cloud/resources/games/client/Client.ts +++ b/sdks/full/typescript/src/api/resources/cloud/resources/games/client/Client.ts @@ -6,8 +6,8 @@ import * as environments from "../../../../../../environments"; import * as core from "../../../../../../core"; import { Namespaces } from "../resources/namespaces/client/Client"; import { Avatars } from "../resources/avatars/client/Client"; -import { Builds } from "../resources/builds/client/Client"; import { Cdn } from "../resources/cdn/client/Client"; +import { Docker } from "../resources/docker/client/Client"; import { Games as Games_ } from "../resources/games/client/Client"; import { Matchmaker } from "../resources/matchmaker/client/Client"; import { Tokens } from "../resources/tokens/client/Client"; @@ -41,18 +41,18 @@ export class Games { return (this._avatars ??= new Avatars(this._options)); } - protected _builds: Builds | undefined; - - public get builds(): Builds { - return (this._builds ??= new Builds(this._options)); - } - protected _cdn: Cdn | undefined; public get cdn(): Cdn { return (this._cdn ??= new Cdn(this._options)); } + protected _docker: Docker | undefined; + + public get docker(): Docker { + return (this._docker ??= new Docker(this._options)); + } + protected _games: Games_ | undefined; public get games(): Games_ { diff --git a/sdks/full/typescript/src/api/resources/cloud/resources/games/resources/docker/client/Client.ts b/sdks/full/typescript/src/api/resources/cloud/resources/games/resources/docker/client/Client.ts new file mode 100644 index 0000000000..bb08875650 --- /dev/null +++ b/sdks/full/typescript/src/api/resources/cloud/resources/games/resources/docker/client/Client.ts @@ -0,0 +1,30 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ + +import * as environments from "../../../../../../../../environments"; +import * as core from "../../../../../../../../core"; +import { Builds } from "../resources/builds/client/Client"; + +export declare namespace Docker { + interface Options { + environment?: core.Supplier; + token?: core.Supplier; + fetcher?: core.FetchFunction; + } + + interface RequestOptions { + timeoutInSeconds?: number; + maxRetries?: number; + } +} + +export class Docker { + constructor(protected readonly _options: Docker.Options = {}) {} + + protected _builds: Builds | undefined; + + public get builds(): Builds { + return (this._builds ??= new Builds(this._options)); + } +} diff --git a/sdks/full/typescript/src/api/resources/cloud/resources/games/resources/builds/client/index.ts b/sdks/full/typescript/src/api/resources/cloud/resources/games/resources/docker/client/index.ts similarity index 100% rename from sdks/full/typescript/src/api/resources/cloud/resources/games/resources/builds/client/index.ts rename to sdks/full/typescript/src/api/resources/cloud/resources/games/resources/docker/client/index.ts diff --git a/sdks/full/typescript/src/api/resources/cloud/resources/games/resources/docker/index.ts b/sdks/full/typescript/src/api/resources/cloud/resources/games/resources/docker/index.ts new file mode 100644 index 0000000000..4ce0f39077 --- /dev/null +++ b/sdks/full/typescript/src/api/resources/cloud/resources/games/resources/docker/index.ts @@ -0,0 +1,2 @@ +export * from "./resources"; +export * from "./client"; diff --git a/sdks/full/typescript/src/api/resources/cloud/resources/games/resources/builds/client/Client.ts b/sdks/full/typescript/src/api/resources/cloud/resources/games/resources/docker/resources/builds/client/Client.ts similarity index 92% rename from sdks/full/typescript/src/api/resources/cloud/resources/games/resources/builds/client/Client.ts rename to sdks/full/typescript/src/api/resources/cloud/resources/games/resources/docker/resources/builds/client/Client.ts index ad8f483493..266f83f42e 100644 --- a/sdks/full/typescript/src/api/resources/cloud/resources/games/resources/builds/client/Client.ts +++ b/sdks/full/typescript/src/api/resources/cloud/resources/games/resources/docker/resources/builds/client/Client.ts @@ -2,12 +2,12 @@ * 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 environments from "../../../../../../../../../../environments"; +import * as core from "../../../../../../../../../../core"; +import * as Rivet from "../../../../../../../../.."; import urlJoin from "url-join"; -import * as serializers from "../../../../../../../../serialization"; -import * as errors from "../../../../../../../../errors"; +import * as serializers from "../../../../../../../../../../serialization"; +import * as errors from "../../../../../../../../../../errors"; export declare namespace Builds { interface Options { @@ -37,11 +37,11 @@ export class Builds { public async listGameBuilds( gameId: string, requestOptions?: Builds.RequestOptions - ): Promise { + ): Promise { const _response = await (this._options.fetcher ?? core.fetcher)({ url: urlJoin( (await core.Supplier.get(this._options.environment)) ?? environments.RivetEnvironment.Production, - `/cloud/games/${gameId}/builds` + `/cloud/games/${gameId}/docker/builds` ), method: "GET", headers: { @@ -52,7 +52,7 @@ export class Builds { maxRetries: requestOptions?.maxRetries, }); if (_response.ok) { - return await serializers.cloud.games.ListGameBuildsResponse.parseOrThrow(_response.body, { + return await serializers.cloud.games.docker.ListGameBuildsResponse.parseOrThrow(_response.body, { unrecognizedObjectKeys: "passthrough", allowUnrecognizedUnionMembers: true, allowUnrecognizedEnumValues: true, @@ -157,27 +157,27 @@ export class Builds { */ public async createGameBuild( gameId: string, - request: Rivet.cloud.games.CreateGameBuildRequest, + request: Rivet.cloud.games.docker.CreateGameBuildRequest, requestOptions?: Builds.RequestOptions - ): Promise { + ): Promise { const _response = await (this._options.fetcher ?? core.fetcher)({ url: urlJoin( (await core.Supplier.get(this._options.environment)) ?? environments.RivetEnvironment.Production, - `/cloud/games/${gameId}/builds` + `/cloud/games/${gameId}/docker/builds` ), method: "POST", headers: { Authorization: await this._getAuthorizationHeader(), }, contentType: "application/json", - body: await serializers.cloud.games.CreateGameBuildRequest.jsonOrThrow(request, { + body: await serializers.cloud.games.docker.CreateGameBuildRequest.jsonOrThrow(request, { unrecognizedObjectKeys: "strip", }), timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 180000, maxRetries: requestOptions?.maxRetries, }); if (_response.ok) { - return await serializers.cloud.games.CreateGameBuildResponse.parseOrThrow(_response.body, { + return await serializers.cloud.games.docker.CreateGameBuildResponse.parseOrThrow(_response.body, { unrecognizedObjectKeys: "passthrough", allowUnrecognizedUnionMembers: true, allowUnrecognizedEnumValues: true, diff --git a/sdks/full/typescript/src/api/resources/cloud/resources/games/resources/docker/resources/builds/client/index.ts b/sdks/full/typescript/src/api/resources/cloud/resources/games/resources/docker/resources/builds/client/index.ts new file mode 100644 index 0000000000..cb0ff5c3b5 --- /dev/null +++ b/sdks/full/typescript/src/api/resources/cloud/resources/games/resources/docker/resources/builds/client/index.ts @@ -0,0 +1 @@ +export {}; diff --git a/sdks/full/typescript/src/api/resources/cloud/resources/games/resources/builds/index.ts b/sdks/full/typescript/src/api/resources/cloud/resources/games/resources/docker/resources/builds/index.ts similarity index 100% rename from sdks/full/typescript/src/api/resources/cloud/resources/games/resources/builds/index.ts rename to sdks/full/typescript/src/api/resources/cloud/resources/games/resources/docker/resources/builds/index.ts diff --git a/sdks/full/typescript/src/api/resources/cloud/resources/games/resources/docker/resources/index.ts b/sdks/full/typescript/src/api/resources/cloud/resources/games/resources/docker/resources/index.ts new file mode 100644 index 0000000000..89eacb89a7 --- /dev/null +++ b/sdks/full/typescript/src/api/resources/cloud/resources/games/resources/docker/resources/index.ts @@ -0,0 +1,2 @@ +export * as builds from "./builds"; +export * from "./builds/types"; diff --git a/sdks/full/typescript/src/api/resources/cloud/resources/games/resources/index.ts b/sdks/full/typescript/src/api/resources/cloud/resources/games/resources/index.ts index bc7a3852d6..3747f309e2 100644 --- a/sdks/full/typescript/src/api/resources/cloud/resources/games/resources/index.ts +++ b/sdks/full/typescript/src/api/resources/cloud/resources/games/resources/index.ts @@ -1,10 +1,9 @@ export * as namespaces from "./namespaces"; export * as avatars from "./avatars"; export * from "./avatars/types"; -export * as builds from "./builds"; -export * from "./builds/types"; export * as cdn from "./cdn"; export * from "./cdn/types"; +export * as docker from "./docker"; export * as games from "./games"; export * from "./games/types"; export * as matchmaker from "./matchmaker"; diff --git a/sdks/full/typescript/src/serialization/resources/cloud/resources/games/resources/docker/index.ts b/sdks/full/typescript/src/serialization/resources/cloud/resources/games/resources/docker/index.ts new file mode 100644 index 0000000000..3e5335fe42 --- /dev/null +++ b/sdks/full/typescript/src/serialization/resources/cloud/resources/games/resources/docker/index.ts @@ -0,0 +1 @@ +export * from "./resources"; diff --git a/sdks/full/typescript/src/serialization/resources/cloud/resources/games/resources/builds/index.ts b/sdks/full/typescript/src/serialization/resources/cloud/resources/games/resources/docker/resources/builds/index.ts similarity index 100% rename from sdks/full/typescript/src/serialization/resources/cloud/resources/games/resources/builds/index.ts rename to sdks/full/typescript/src/serialization/resources/cloud/resources/games/resources/docker/resources/builds/index.ts diff --git a/sdks/full/typescript/src/serialization/resources/cloud/resources/games/resources/docker/resources/index.ts b/sdks/full/typescript/src/serialization/resources/cloud/resources/games/resources/docker/resources/index.ts new file mode 100644 index 0000000000..89eacb89a7 --- /dev/null +++ b/sdks/full/typescript/src/serialization/resources/cloud/resources/games/resources/docker/resources/index.ts @@ -0,0 +1,2 @@ +export * as builds from "./builds"; +export * from "./builds/types"; diff --git a/sdks/full/typescript/src/serialization/resources/cloud/resources/games/resources/index.ts b/sdks/full/typescript/src/serialization/resources/cloud/resources/games/resources/index.ts index 7e512c03dd..3aab0e9914 100644 --- a/sdks/full/typescript/src/serialization/resources/cloud/resources/games/resources/index.ts +++ b/sdks/full/typescript/src/serialization/resources/cloud/resources/games/resources/index.ts @@ -1,10 +1,9 @@ export * as namespaces from "./namespaces"; export * as avatars from "./avatars"; export * from "./avatars/types"; -export * as builds from "./builds"; -export * from "./builds/types"; export * as cdn from "./cdn"; export * from "./cdn/types"; +export * as docker from "./docker"; export * as games from "./games"; export * from "./games/types"; export * as matchmaker from "./matchmaker"; diff --git a/svc/api/cloud/src/route/games/builds.rs b/svc/api/cloud/src/route/games/builds.rs index 0796b99e5b..e370c1b87d 100644 --- a/svc/api/cloud/src/route/games/builds.rs +++ b/svc/api/cloud/src/route/games/builds.rs @@ -11,7 +11,7 @@ pub async fn get_builds( ctx: Ctx, game_id: Uuid, _watch_index: WatchIndexQuery, -) -> GlobalResult { +) -> GlobalResult { ctx.auth() .check_game_read_or_admin(ctx.op_ctx(), game_id) .await?; @@ -68,7 +68,7 @@ pub async fn get_builds( builds.sort_by_key(|(create_ts, _)| *create_ts); builds.reverse(); - Ok(models::CloudGamesListGameBuildsResponse { + Ok(models::CloudGamesDockerListGameBuildsResponse { builds: builds.into_iter().map(|(_, x)| x).collect::>(), }) } @@ -77,8 +77,8 @@ pub async fn get_builds( pub async fn create_build( ctx: Ctx, game_id: Uuid, - body: models::CloudGamesCreateGameBuildRequest, -) -> GlobalResult { + body: models::CloudGamesDockerCreateGameBuildRequest, +) -> GlobalResult { ctx.auth() .check_game_write_or_admin(ctx.op_ctx(), game_id) .await?; @@ -88,17 +88,17 @@ pub async fn create_build( let multipart_upload = body.multipart_upload.unwrap_or(false); let kind = match body.kind { - None | Some(models::CloudGamesBuildKind::DockerImage) => { + None | Some(models::CloudGamesDockerBuildKind::DockerImage) => { backend::build::BuildKind::DockerImage } - Some(models::CloudGamesBuildKind::OciBundle) => backend::build::BuildKind::OciBundle, + Some(models::CloudGamesDockerBuildKind::OciBundle) => backend::build::BuildKind::OciBundle, }; let compression = match body.compression { - None | Some(models::CloudGamesBuildCompression::None) => { + None | Some(models::CloudGamesDockerBuildCompression::None) => { backend::build::BuildCompression::None } - Some(models::CloudGamesBuildCompression::Lz4) => backend::build::BuildCompression::Lz4, + Some(models::CloudGamesDockerBuildCompression::Lz4) => backend::build::BuildCompression::Lz4, }; let create_res = op!([ctx] build_create { @@ -136,7 +136,7 @@ pub async fn create_build( None }; - Ok(models::CloudGamesCreateGameBuildResponse { + Ok(models::CloudGamesDockerCreateGameBuildResponse { build_id: unwrap_ref!(create_res.build_id).as_uuid(), upload_id: unwrap_ref!(create_res.upload_id).as_uuid(), image_presigned_request, diff --git a/svc/api/cloud/src/route/mod.rs b/svc/api/cloud/src/route/mod.rs index 5883f57778..5d4fa790ed 100644 --- a/svc/api/cloud/src/route/mod.rs +++ b/svc/api/cloud/src/route/mod.rs @@ -131,9 +131,9 @@ define_router! { GET: games::cdn::get_sites(), POST: games::cdn::create_site(body: models::CloudGamesCreateGameCdnSiteRequest), }, - "games" / Uuid / "builds": { + "games" / Uuid / "docker" / "builds": { GET: games::builds::get_builds(), - POST: games::builds::create_build(body: models::CloudGamesCreateGameBuildRequest), + POST: games::builds::create_build(body: models::CloudGamesDockerCreateGameBuildRequest), }, "games" / Uuid / "avatars": { GET: games::avatars::get_custom_avatars(), From d27fc7dc2a31650739c65eadd428092283baf1b6 Mon Sep 17 00:00:00 2001 From: Forest Anderson Date: Wed, 24 Apr 2024 17:33:10 -0400 Subject: [PATCH 7/8] feat(svc): add servers create endpoint --- fern/definition/servers/__package__.yml | 5 + fern/definition/servers/common.yml | 49 +++ .../servers/datacenters/__package__.yml | 11 + .../definition/servers/images/__package__.yml | 20 ++ .../servers/servers/__package__.yml | 52 ++++ sdks/full/go/client/client.go | 3 + sdks/full/go/servers/client/client.go | 33 ++ sdks/full/go/servers/images/client/client.go | 110 +++++++ sdks/full/go/servers/images/images.go | 38 +++ sdks/full/go/servers/servers/client/client.go | 193 ++++++++++++ sdks/full/go/servers/servers/servers.go | 103 +++++++ sdks/full/go/servers/types.go | 271 ++++++++++++++++ sdks/full/openapi/openapi.yml | 288 ++++++++++++++++++ sdks/full/openapi_compat/openapi.yml | 288 ++++++++++++++++++ sdks/full/rust-cli/.openapi-generator/FILES | 30 ++ sdks/full/rust-cli/README.md | 16 + .../rust-cli/docs/ServersDockerHostRouting.md | 11 + .../rust-cli/docs/ServersDockerNetwork.md | 12 + .../rust-cli/docs/ServersDockerNetworkMode.md | 10 + sdks/full/rust-cli/docs/ServersDockerPort.md | 12 + .../rust-cli/docs/ServersDockerPortRouting.md | 12 + .../rust-cli/docs/ServersDockerRuntime.md | 14 + .../rust-cli/docs/ServersGameGuardProtocol.md | 10 + sdks/full/rust-cli/docs/ServersImagesApi.md | 39 +++ .../docs/ServersImagesCreateRequest.md | 11 + sdks/full/rust-cli/docs/ServersRuntime.md | 11 + sdks/full/rust-cli/docs/ServersServer.md | 11 + sdks/full/rust-cli/docs/ServersServersApi.md | 71 +++++ .../docs/ServersServersCreateRequest.md | 15 + .../docs/ServersServersCreateResponse.md | 11 + .../docs/ServersServersDestroyRequest.md | 11 + sdks/full/rust-cli/src/apis/mod.rs | 2 + .../rust-cli/src/apis/servers_images_api.rs | 63 ++++ .../rust-cli/src/apis/servers_servers_api.rs | 108 +++++++ sdks/full/rust-cli/src/models/mod.rs | 26 ++ .../src/models/servers_docker_host_routing.rs | 28 ++ .../src/models/servers_docker_network.rs | 31 ++ .../src/models/servers_docker_network_mode.rs | 39 +++ .../src/models/servers_docker_port.rs | 31 ++ .../src/models/servers_docker_port_routing.rs | 31 ++ .../src/models/servers_docker_runtime.rs | 37 +++ .../src/models/servers_game_guard_protocol.rs | 48 +++ .../models/servers_images_create_request.rs | 28 ++ .../rust-cli/src/models/servers_runtime.rs | 28 ++ .../rust-cli/src/models/servers_server.rs | 28 ++ .../models/servers_servers_create_request.rs | 42 +++ .../models/servers_servers_create_response.rs | 28 ++ .../models/servers_servers_destroy_request.rs | 28 ++ sdks/full/rust/.openapi-generator/FILES | 30 ++ sdks/full/rust/README.md | 16 + .../rust/docs/ServersDockerHostRouting.md | 11 + sdks/full/rust/docs/ServersDockerNetwork.md | 12 + .../rust/docs/ServersDockerNetworkMode.md | 10 + sdks/full/rust/docs/ServersDockerPort.md | 12 + .../rust/docs/ServersDockerPortRouting.md | 12 + sdks/full/rust/docs/ServersDockerRuntime.md | 14 + .../rust/docs/ServersGameGuardProtocol.md | 10 + sdks/full/rust/docs/ServersImagesApi.md | 39 +++ .../rust/docs/ServersImagesCreateRequest.md | 11 + sdks/full/rust/docs/ServersRuntime.md | 11 + sdks/full/rust/docs/ServersServer.md | 11 + sdks/full/rust/docs/ServersServersApi.md | 71 +++++ .../rust/docs/ServersServersCreateRequest.md | 15 + .../rust/docs/ServersServersCreateResponse.md | 11 + .../rust/docs/ServersServersDestroyRequest.md | 11 + sdks/full/rust/src/apis/mod.rs | 2 + sdks/full/rust/src/apis/servers_images_api.rs | 63 ++++ .../full/rust/src/apis/servers_servers_api.rs | 108 +++++++ sdks/full/rust/src/models/mod.rs | 26 ++ .../src/models/servers_docker_host_routing.rs | 28 ++ .../rust/src/models/servers_docker_network.rs | 31 ++ .../src/models/servers_docker_network_mode.rs | 39 +++ .../rust/src/models/servers_docker_port.rs | 31 ++ .../src/models/servers_docker_port_routing.rs | 31 ++ .../rust/src/models/servers_docker_runtime.rs | 37 +++ .../src/models/servers_game_guard_protocol.rs | 48 +++ .../models/servers_images_create_request.rs | 28 ++ sdks/full/rust/src/models/servers_runtime.rs | 28 ++ sdks/full/rust/src/models/servers_server.rs | 28 ++ .../models/servers_servers_create_request.rs | 42 +++ .../models/servers_servers_create_response.rs | 28 ++ .../models/servers_servers_destroy_request.rs | 28 ++ sdks/full/typescript/archive.tgz | 4 +- sdks/full/typescript/src/Client.ts | 7 + .../typescript/src/api/resources/index.ts | 1 + .../api/resources/servers/client/Client.ts | 37 +++ .../src/api/resources/servers/client/index.ts | 1 + .../src/api/resources/servers/index.ts | 2 + .../servers/resources/common/index.ts | 1 + .../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 | 4 + .../resources/servers/client/Client.ts | 279 +++++++++++++++++ .../servers/resources/servers/client/index.ts | 1 + .../servers/resources/servers/index.ts | 2 + .../src/serialization/resources/index.ts | 1 + .../serialization/resources/servers/index.ts | 1 + .../servers/resources/common/index.ts | 1 + .../servers/resources/images/index.ts | 1 + .../resources/servers/resources/index.ts | 4 + .../servers/resources/servers/index.ts | 1 + 102 files changed, 3833 insertions(+), 2 deletions(-) create mode 100644 fern/definition/servers/__package__.yml create mode 100644 fern/definition/servers/common.yml create mode 100644 fern/definition/servers/datacenters/__package__.yml create mode 100644 fern/definition/servers/images/__package__.yml create mode 100644 fern/definition/servers/servers/__package__.yml create mode 100644 sdks/full/go/servers/client/client.go create mode 100644 sdks/full/go/servers/images/client/client.go create mode 100644 sdks/full/go/servers/images/images.go create mode 100644 sdks/full/go/servers/servers/client/client.go create mode 100644 sdks/full/go/servers/servers/servers.go create mode 100644 sdks/full/go/servers/types.go create mode 100644 sdks/full/rust-cli/docs/ServersDockerHostRouting.md create mode 100644 sdks/full/rust-cli/docs/ServersDockerNetwork.md create mode 100644 sdks/full/rust-cli/docs/ServersDockerNetworkMode.md create mode 100644 sdks/full/rust-cli/docs/ServersDockerPort.md create mode 100644 sdks/full/rust-cli/docs/ServersDockerPortRouting.md create mode 100644 sdks/full/rust-cli/docs/ServersDockerRuntime.md create mode 100644 sdks/full/rust-cli/docs/ServersGameGuardProtocol.md create mode 100644 sdks/full/rust-cli/docs/ServersImagesApi.md create mode 100644 sdks/full/rust-cli/docs/ServersImagesCreateRequest.md create mode 100644 sdks/full/rust-cli/docs/ServersRuntime.md create mode 100644 sdks/full/rust-cli/docs/ServersServer.md create mode 100644 sdks/full/rust-cli/docs/ServersServersApi.md create mode 100644 sdks/full/rust-cli/docs/ServersServersCreateRequest.md create mode 100644 sdks/full/rust-cli/docs/ServersServersCreateResponse.md create mode 100644 sdks/full/rust-cli/docs/ServersServersDestroyRequest.md create mode 100644 sdks/full/rust-cli/src/apis/servers_images_api.rs create mode 100644 sdks/full/rust-cli/src/apis/servers_servers_api.rs create mode 100644 sdks/full/rust-cli/src/models/servers_docker_host_routing.rs create mode 100644 sdks/full/rust-cli/src/models/servers_docker_network.rs create mode 100644 sdks/full/rust-cli/src/models/servers_docker_network_mode.rs create mode 100644 sdks/full/rust-cli/src/models/servers_docker_port.rs create mode 100644 sdks/full/rust-cli/src/models/servers_docker_port_routing.rs create mode 100644 sdks/full/rust-cli/src/models/servers_docker_runtime.rs create mode 100644 sdks/full/rust-cli/src/models/servers_game_guard_protocol.rs create mode 100644 sdks/full/rust-cli/src/models/servers_images_create_request.rs create mode 100644 sdks/full/rust-cli/src/models/servers_runtime.rs create mode 100644 sdks/full/rust-cli/src/models/servers_server.rs create mode 100644 sdks/full/rust-cli/src/models/servers_servers_create_request.rs create mode 100644 sdks/full/rust-cli/src/models/servers_servers_create_response.rs create mode 100644 sdks/full/rust-cli/src/models/servers_servers_destroy_request.rs create mode 100644 sdks/full/rust/docs/ServersDockerHostRouting.md create mode 100644 sdks/full/rust/docs/ServersDockerNetwork.md create mode 100644 sdks/full/rust/docs/ServersDockerNetworkMode.md create mode 100644 sdks/full/rust/docs/ServersDockerPort.md create mode 100644 sdks/full/rust/docs/ServersDockerPortRouting.md create mode 100644 sdks/full/rust/docs/ServersDockerRuntime.md create mode 100644 sdks/full/rust/docs/ServersGameGuardProtocol.md create mode 100644 sdks/full/rust/docs/ServersImagesApi.md create mode 100644 sdks/full/rust/docs/ServersImagesCreateRequest.md create mode 100644 sdks/full/rust/docs/ServersRuntime.md create mode 100644 sdks/full/rust/docs/ServersServer.md create mode 100644 sdks/full/rust/docs/ServersServersApi.md create mode 100644 sdks/full/rust/docs/ServersServersCreateRequest.md create mode 100644 sdks/full/rust/docs/ServersServersCreateResponse.md create mode 100644 sdks/full/rust/docs/ServersServersDestroyRequest.md create mode 100644 sdks/full/rust/src/apis/servers_images_api.rs create mode 100644 sdks/full/rust/src/apis/servers_servers_api.rs create mode 100644 sdks/full/rust/src/models/servers_docker_host_routing.rs create mode 100644 sdks/full/rust/src/models/servers_docker_network.rs create mode 100644 sdks/full/rust/src/models/servers_docker_network_mode.rs create mode 100644 sdks/full/rust/src/models/servers_docker_port.rs create mode 100644 sdks/full/rust/src/models/servers_docker_port_routing.rs create mode 100644 sdks/full/rust/src/models/servers_docker_runtime.rs create mode 100644 sdks/full/rust/src/models/servers_game_guard_protocol.rs create mode 100644 sdks/full/rust/src/models/servers_images_create_request.rs create mode 100644 sdks/full/rust/src/models/servers_runtime.rs create mode 100644 sdks/full/rust/src/models/servers_server.rs create mode 100644 sdks/full/rust/src/models/servers_servers_create_request.rs create mode 100644 sdks/full/rust/src/models/servers_servers_create_response.rs create mode 100644 sdks/full/rust/src/models/servers_servers_destroy_request.rs create mode 100644 sdks/full/typescript/src/api/resources/servers/client/Client.ts create mode 100644 sdks/full/typescript/src/api/resources/servers/client/index.ts create mode 100644 sdks/full/typescript/src/api/resources/servers/index.ts create mode 100644 sdks/full/typescript/src/api/resources/servers/resources/common/index.ts create mode 100644 sdks/full/typescript/src/api/resources/servers/resources/images/client/Client.ts create mode 100644 sdks/full/typescript/src/api/resources/servers/resources/images/client/index.ts create mode 100644 sdks/full/typescript/src/api/resources/servers/resources/images/index.ts create mode 100644 sdks/full/typescript/src/api/resources/servers/resources/index.ts create mode 100644 sdks/full/typescript/src/api/resources/servers/resources/servers/client/Client.ts create mode 100644 sdks/full/typescript/src/api/resources/servers/resources/servers/client/index.ts create mode 100644 sdks/full/typescript/src/api/resources/servers/resources/servers/index.ts create mode 100644 sdks/full/typescript/src/serialization/resources/servers/index.ts create mode 100644 sdks/full/typescript/src/serialization/resources/servers/resources/common/index.ts create mode 100644 sdks/full/typescript/src/serialization/resources/servers/resources/images/index.ts create mode 100644 sdks/full/typescript/src/serialization/resources/servers/resources/index.ts create mode 100644 sdks/full/typescript/src/serialization/resources/servers/resources/servers/index.ts diff --git a/fern/definition/servers/__package__.yml b/fern/definition/servers/__package__.yml new file mode 100644 index 0000000000..f060327b50 --- /dev/null +++ b/fern/definition/servers/__package__.yml @@ -0,0 +1,5 @@ +# 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 new file mode 100644 index 0000000000..0e973f6a20 --- /dev/null +++ b/fern/definition/servers/common.yml @@ -0,0 +1,49 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/fern-api/fern/main/fern.schema.json + +types: + Runtime: + properties: + docker: optional + + DockerRuntime: + properties: + image_id: string + args: list + environment: map + network: DockerNetwork + + DockerNetwork: + properties: + mode: DockerNetworkMode + ports: map + + DockerNetworkMode: + enum: + - host + - bridge + + GameGuardProtocol: + enum: + - http + - https + - tcp + - tcp_tls + - udp + + DockerPort: + properties: + port: optional + routing: DockerPortRouting + + DockerPortRouting: + properties: + game_guard: optional + host: optional + + DockerHostRouting: + properties: + null: unknown + + Server: + properties: + null: unknown diff --git a/fern/definition/servers/datacenters/__package__.yml b/fern/definition/servers/datacenters/__package__.yml new file mode 100644 index 0000000000..582433e48b --- /dev/null +++ b/fern/definition/servers/datacenters/__package__.yml @@ -0,0 +1,11 @@ +# 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 new file mode 100644 index 0000000000..c7b4f177d9 --- /dev/null +++ b/fern/definition/servers/images/__package__.yml @@ -0,0 +1,20 @@ +# 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/__package__.yml b/fern/definition/servers/servers/__package__.yml new file mode 100644 index 0000000000..4b4712253c --- /dev/null +++ b/fern/definition/servers/servers/__package__.yml @@ -0,0 +1,52 @@ +# 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/sdks/full/go/client/client.go b/sdks/full/go/client/client.go index eea007717b..dadefcc092 100644 --- a/sdks/full/go/client/client.go +++ b/sdks/full/go/client/client.go @@ -16,6 +16,7 @@ import ( moduleclient "sdk/module/client" portalclient "sdk/portal/client" provisionclient "sdk/provision/client" + serversclient "sdk/servers/client" ) type Client struct { @@ -30,6 +31,7 @@ type Client struct { Kv *kvclient.Client Module *moduleclient.Client Provision *provisionclient.Client + Servers *serversclient.Client Auth *authclient.Client Job *jobclient.Client Matchmaker *matchmakerclient.Client @@ -52,6 +54,7 @@ func NewClient(opts ...core.ClientOption) *Client { Kv: kvclient.NewClient(opts...), Module: moduleclient.NewClient(opts...), Provision: provisionclient.NewClient(opts...), + Servers: serversclient.NewClient(opts...), Auth: authclient.NewClient(opts...), Job: jobclient.NewClient(opts...), Matchmaker: matchmakerclient.NewClient(opts...), diff --git a/sdks/full/go/servers/client/client.go b/sdks/full/go/servers/client/client.go new file mode 100644 index 0000000000..bbd62b77b8 --- /dev/null +++ b/sdks/full/go/servers/client/client.go @@ -0,0 +1,33 @@ +// This file was auto-generated by Fern from our API Definition. + +package client + +import ( + http "net/http" + core "sdk/core" + imagesclient "sdk/servers/images/client" + serversclient "sdk/servers/servers/client" +) + +type Client struct { + baseURL string + caller *core.Caller + header http.Header + + Images *imagesclient.Client + Servers *serversclient.Client +} + +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(), + Images: imagesclient.NewClient(opts...), + Servers: serversclient.NewClient(opts...), + } +} diff --git a/sdks/full/go/servers/images/client/client.go b/sdks/full/go/servers/images/client/client.go new file mode 100644 index 0000000000..bfc8f1a59e --- /dev/null +++ b/sdks/full/go/servers/images/client/client.go @@ -0,0 +1,110 @@ +// 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 new file mode 100644 index 0000000000..4e7b7dae6f --- /dev/null +++ b/sdks/full/go/servers/images/images.go @@ -0,0 +1,38 @@ +// 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/client/client.go b/sdks/full/go/servers/servers/client/client.go new file mode 100644 index 0000000000..8fb7cb22a1 --- /dev/null +++ b/sdks/full/go/servers/servers/client/client.go @@ -0,0 +1,193 @@ +// This file was auto-generated by Fern from our API Definition. + +package client + +import ( + bytes "bytes" + context "context" + json "encoding/json" + errors "errors" + fmt "fmt" + uuid "github.com/google/uuid" + io "io" + http "net/http" + sdk "sdk" + core "sdk/core" + servers "sdk/servers/servers" +) + +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 dynamic server. +func (c *Client) Create(ctx context.Context, request *servers.CreateRequest) (*servers.CreateResponse, error) { + baseURL := "https://api.rivet.gg" + if c.baseURL != "" { + baseURL = c.baseURL + } + endpointURL := baseURL + "/" + "servers/servers" + + 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 *servers.CreateResponse + if err := c.caller.Call( + ctx, + &core.CallParams{ + URL: endpointURL, + Method: http.MethodPost, + Headers: c.header, + Request: request, + Response: &response, + ErrorDecoder: errorDecoder, + }, + ); err != nil { + return nil, err + } + return response, nil +} + +// 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 { + baseURL := "https://api.rivet.gg" + if c.baseURL != "" { + baseURL = c.baseURL + } + endpointURL := fmt.Sprintf(baseURL+"/"+"servers/servers/%v", serverId) + + 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.MethodDelete, + Headers: c.header, + Request: request, + ErrorDecoder: errorDecoder, + }, + ); err != nil { + return err + } + return nil +} diff --git a/sdks/full/go/servers/servers/servers.go b/sdks/full/go/servers/servers/servers.go new file mode 100644 index 0000000000..ca5e412c81 --- /dev/null +++ b/sdks/full/go/servers/servers/servers.go @@ -0,0 +1,103 @@ +// 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 new file mode 100644 index 0000000000..c1b1b40866 --- /dev/null +++ b/sdks/full/go/servers/types.go @@ -0,0 +1,271 @@ +// This file was auto-generated by Fern from our API Definition. + +package servers + +import ( + json "encoding/json" + fmt "fmt" + core "sdk/core" +) + +type DockerHostRouting struct { + Null interface{} `json:"null,omitempty"` + + _rawJSON json.RawMessage +} + +func (d *DockerHostRouting) UnmarshalJSON(data []byte) error { + type unmarshaler DockerHostRouting + var value unmarshaler + if err := json.Unmarshal(data, &value); err != nil { + return err + } + *d = DockerHostRouting(value) + d._rawJSON = json.RawMessage(data) + return nil +} + +func (d *DockerHostRouting) 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 DockerNetwork struct { + Mode DockerNetworkMode `json:"mode,omitempty"` + Ports map[string]*DockerPort `json:"ports,omitempty"` + + _rawJSON json.RawMessage +} + +func (d *DockerNetwork) UnmarshalJSON(data []byte) error { + type unmarshaler DockerNetwork + var value unmarshaler + if err := json.Unmarshal(data, &value); err != nil { + return err + } + *d = DockerNetwork(value) + d._rawJSON = json.RawMessage(data) + return nil +} + +func (d *DockerNetwork) 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 DockerNetworkMode string + +const ( + DockerNetworkModeHost DockerNetworkMode = "host" + DockerNetworkModeBridge DockerNetworkMode = "bridge" +) + +func NewDockerNetworkModeFromString(s string) (DockerNetworkMode, error) { + switch s { + case "host": + return DockerNetworkModeHost, nil + case "bridge": + return DockerNetworkModeBridge, nil + } + var t DockerNetworkMode + return "", fmt.Errorf("%s is not a valid %T", s, t) +} + +func (d DockerNetworkMode) Ptr() *DockerNetworkMode { + return &d +} + +type DockerPort struct { + Port *int `json:"port,omitempty"` + Routing *DockerPortRouting `json:"routing,omitempty"` + + _rawJSON json.RawMessage +} + +func (d *DockerPort) UnmarshalJSON(data []byte) error { + type unmarshaler DockerPort + var value unmarshaler + if err := json.Unmarshal(data, &value); err != nil { + return err + } + *d = DockerPort(value) + d._rawJSON = json.RawMessage(data) + return nil +} + +func (d *DockerPort) 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 DockerPortRouting struct { + GameGuard *GameGuardProtocol `json:"game_guard,omitempty"` + Host *DockerHostRouting `json:"host,omitempty"` + + _rawJSON json.RawMessage +} + +func (d *DockerPortRouting) UnmarshalJSON(data []byte) error { + type unmarshaler DockerPortRouting + var value unmarshaler + if err := json.Unmarshal(data, &value); err != nil { + return err + } + *d = DockerPortRouting(value) + d._rawJSON = json.RawMessage(data) + return nil +} + +func (d *DockerPortRouting) 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 DockerRuntime struct { + ImageId string `json:"image_id"` + Args []string `json:"args,omitempty"` + Environment map[string]string `json:"environment,omitempty"` + Network *DockerNetwork `json:"network,omitempty"` + + _rawJSON json.RawMessage +} + +func (d *DockerRuntime) UnmarshalJSON(data []byte) error { + type unmarshaler DockerRuntime + var value unmarshaler + if err := json.Unmarshal(data, &value); err != nil { + return err + } + *d = DockerRuntime(value) + d._rawJSON = json.RawMessage(data) + return nil +} + +func (d *DockerRuntime) 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 GameGuardProtocol string + +const ( + GameGuardProtocolHttp GameGuardProtocol = "http" + GameGuardProtocolHttps GameGuardProtocol = "https" + GameGuardProtocolTcp GameGuardProtocol = "tcp" + GameGuardProtocolTcpTls GameGuardProtocol = "tcp_tls" + GameGuardProtocolUdp GameGuardProtocol = "udp" +) + +func NewGameGuardProtocolFromString(s string) (GameGuardProtocol, error) { + switch s { + case "http": + return GameGuardProtocolHttp, nil + case "https": + return GameGuardProtocolHttps, nil + case "tcp": + return GameGuardProtocolTcp, nil + case "tcp_tls": + return GameGuardProtocolTcpTls, nil + case "udp": + return GameGuardProtocolUdp, nil + } + var t GameGuardProtocol + return "", fmt.Errorf("%s is not a valid %T", s, t) +} + +func (g GameGuardProtocol) Ptr() *GameGuardProtocol { + return &g +} + +type Runtime struct { + Docker *DockerRuntime `json:"docker,omitempty"` + + _rawJSON json.RawMessage +} + +func (r *Runtime) UnmarshalJSON(data []byte) error { + type unmarshaler Runtime + var value unmarshaler + if err := json.Unmarshal(data, &value); err != nil { + return err + } + *r = Runtime(value) + r._rawJSON = json.RawMessage(data) + return nil +} + +func (r *Runtime) 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 Server struct { + Null interface{} `json:"null,omitempty"` + + _rawJSON json.RawMessage +} + +func (s *Server) UnmarshalJSON(data []byte) error { + type unmarshaler Server + var value unmarshaler + if err := json.Unmarshal(data, &value); err != nil { + return err + } + *s = Server(value) + s._rawJSON = json.RawMessage(data) + return nil +} + +func (s *Server) String() string { + if len(s._rawJSON) > 0 { + if value, err := core.StringifyJSON(s._rawJSON); err == nil { + return value + } + } + if value, err := core.StringifyJSON(s); err == nil { + return value + } + return fmt.Sprintf("%#v", s) +} diff --git a/sdks/full/openapi/openapi.yml b/sdks/full/openapi/openapi.yml index f9ec1edbb8..6028e1f8da 100644 --- a/sdks/full/openapi/openapi.yml +++ b/sdks/full/openapi/openapi.yml @@ -4770,6 +4770,176 @@ 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' /auth/identity/access-token/complete-verification: post: description: Completes the access token verification process. @@ -10017,6 +10187,46 @@ 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 AdminPoolType: type: string enum: @@ -13473,6 +13683,84 @@ components: $ref: '#/components/schemas/PortalNotificationRegisterService' required: - service + ServersRuntime: + type: object + properties: + docker: + $ref: '#/components/schemas/ServersDockerRuntime' + ServersDockerRuntime: + type: object + properties: + image_id: + type: string + args: + type: array + items: + type: string + environment: + type: object + additionalProperties: + type: string + network: + $ref: '#/components/schemas/ServersDockerNetwork' + required: + - image_id + - args + - environment + - network + ServersDockerNetwork: + type: object + properties: + mode: + $ref: '#/components/schemas/ServersDockerNetworkMode' + ports: + type: object + additionalProperties: + $ref: '#/components/schemas/ServersDockerPort' + required: + - mode + - ports + ServersDockerNetworkMode: + type: string + enum: + - host + - bridge + ServersGameGuardProtocol: + type: string + enum: + - http + - https + - tcp + - tcp_tls + - udp + ServersDockerPort: + type: object + properties: + port: + type: integer + routing: + $ref: '#/components/schemas/ServersDockerPortRouting' + required: + - routing + ServersDockerPortRouting: + type: object + properties: + game_guard: + $ref: '#/components/schemas/ServersGameGuardProtocol' + host: + $ref: '#/components/schemas/ServersDockerHostRouting' + ServersDockerHostRouting: + type: object + properties: + 'null': {} + required: + - 'null' + ServersServer: + type: object + properties: + 'null': {} + required: + - 'null' UploadPresignedRequest: type: object description: >- diff --git a/sdks/full/openapi_compat/openapi.yml b/sdks/full/openapi_compat/openapi.yml index 8e169f3c4a..f6757ba08f 100644 --- a/sdks/full/openapi_compat/openapi.yml +++ b/sdks/full/openapi_compat/openapi.yml @@ -4414,6 +4414,124 @@ components: - cluster_id - vlan_ip type: object + ServersDockerHostRouting: + properties: + 'null': {} + required: + - 'null' + type: object + ServersDockerNetwork: + properties: + mode: + $ref: '#/components/schemas/ServersDockerNetworkMode' + ports: + additionalProperties: + $ref: '#/components/schemas/ServersDockerPort' + type: object + required: + - mode + - ports + type: object + ServersDockerNetworkMode: + enum: + - host + - bridge + type: string + ServersDockerPort: + properties: + port: + type: integer + routing: + $ref: '#/components/schemas/ServersDockerPortRouting' + required: + - routing + type: object + ServersDockerPortRouting: + properties: + game_guard: + $ref: '#/components/schemas/ServersGameGuardProtocol' + host: + $ref: '#/components/schemas/ServersDockerHostRouting' + type: object + ServersDockerRuntime: + properties: + args: + items: + type: string + type: array + environment: + additionalProperties: + type: string + type: object + image_id: + type: string + network: + $ref: '#/components/schemas/ServersDockerNetwork' + required: + - image_id + - args + - environment + - network + type: object + ServersGameGuardProtocol: + enum: + - http + - https + - tcp + - tcp_tls + - udp + type: string + ServersImagesCreateRequest: + properties: + 'null': {} + required: + - 'null' + type: object + ServersRuntime: + properties: + docker: + $ref: '#/components/schemas/ServersDockerRuntime' + type: object + ServersServer: + properties: + 'null': {} + required: + - 'null' + type: object + ServersServersCreateRequest: + properties: + cluster: + description: The name id of the cluster + type: string + datacenter: + description: The name id of the datacenter + type: string + kill_timeout: + type: integer + metadata: + additionalProperties: {} + type: object + runtime: + $ref: '#/components/schemas/ServersRuntime' + required: + - metadata + - cluster + - datacenter + - kill_timeout + - runtime + type: object + ServersServersCreateResponse: + properties: + server: + $ref: '#/components/schemas/ServersServer' + required: + - server + type: object + ServersServersDestroyRequest: + properties: + kill_timeout: + type: integer + type: object Timestamp: description: RFC3339 timestamp type: string @@ -13266,6 +13384,176 @@ paths: security: *id001 tags: - PortalNotifications + /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. + operationId: servers_servers_create + parameters: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ServersServersCreateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ServersServersCreateResponse' + 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: + - ServersServers + /servers/servers/{server_id}: + delete: + description: Destroy a dynamic server. + operationId: servers_servers_destroy + parameters: + - description: The id of the server to destroy + in: path + name: server_id + required: true + schema: + format: uuid + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ServersServersDestroyRequest' + 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: + - ServersServers /servers/{ip}: get: operationId: provision_servers_getInfo diff --git a/sdks/full/rust-cli/.openapi-generator/FILES b/sdks/full/rust-cli/.openapi-generator/FILES index 8becf9eef3..4a5a2894a7 100644 --- a/sdks/full/rust-cli/.openapi-generator/FILES +++ b/sdks/full/rust-cli/.openapi-generator/FILES @@ -346,6 +346,21 @@ docs/ProvisionDatacentersApi.md docs/ProvisionDatacentersGetTlsResponse.md docs/ProvisionServersApi.md docs/ProvisionServersGetInfoResponse.md +docs/ServersDockerHostRouting.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/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 @@ -393,6 +408,8 @@ src/apis/portal_games_api.rs src/apis/portal_notifications_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_build_delivery_method.rs src/models/admin_cluster.rs @@ -698,6 +715,19 @@ src/models/portal_notification_unregister_service.rs src/models/portal_register_notifications_request.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_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_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 1dddbffd7e..23fb2f8ca2 100644 --- a/sdks/full/rust-cli/README.md +++ b/sdks/full/rust-cli/README.md @@ -168,6 +168,9 @@ Class | Method | HTTP request | Description *PortalNotificationsApi* | [**portal_notifications_unregister_notifications**](docs/PortalNotificationsApi.md#portal_notifications_unregister_notifications) | **DELETE** /portal/notifications/register | *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} | ## Documentation For Models @@ -475,6 +478,19 @@ Class | Method | HTTP request | Description - [PortalRegisterNotificationsRequest](docs/PortalRegisterNotificationsRequest.md) - [ProvisionDatacentersGetTlsResponse](docs/ProvisionDatacentersGetTlsResponse.md) - [ProvisionServersGetInfoResponse](docs/ProvisionServersGetInfoResponse.md) + - [ServersDockerHostRouting](docs/ServersDockerHostRouting.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) + - [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/ServersDockerHostRouting.md new file mode 100644 index 0000000000..54c03a90a7 --- /dev/null +++ b/sdks/full/rust-cli/docs/ServersDockerHostRouting.md @@ -0,0 +1,11 @@ +# ServersDockerHostRouting + +## 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-cli/docs/ServersDockerNetwork.md b/sdks/full/rust-cli/docs/ServersDockerNetwork.md new file mode 100644 index 0000000000..d49da51247 --- /dev/null +++ b/sdks/full/rust-cli/docs/ServersDockerNetwork.md @@ -0,0 +1,12 @@ +# ServersDockerNetwork + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**mode** | [**crate::models::ServersDockerNetworkMode**](ServersDockerNetworkMode.md) | | +**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/ServersDockerNetworkMode.md b/sdks/full/rust-cli/docs/ServersDockerNetworkMode.md new file mode 100644 index 0000000000..c12894cff8 --- /dev/null +++ b/sdks/full/rust-cli/docs/ServersDockerNetworkMode.md @@ -0,0 +1,10 @@ +# ServersDockerNetworkMode + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + +[[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/ServersDockerPort.md b/sdks/full/rust-cli/docs/ServersDockerPort.md new file mode 100644 index 0000000000..6787aac643 --- /dev/null +++ b/sdks/full/rust-cli/docs/ServersDockerPort.md @@ -0,0 +1,12 @@ +# ServersDockerPort + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**port** | Option<**i32**> | | [optional] +**routing** | [**crate::models::ServersDockerPortRouting**](ServersDockerPortRouting.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 new file mode 100644 index 0000000000..c9573a2dcb --- /dev/null +++ b/sdks/full/rust-cli/docs/ServersDockerPortRouting.md @@ -0,0 +1,12 @@ +# ServersDockerPortRouting + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**game_guard** | Option<[**crate::models::ServersGameGuardProtocol**](ServersGameGuardProtocol.md)> | | [optional] +**host** | Option<[**crate::models::ServersDockerHostRouting**](ServersDockerHostRouting.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 new file mode 100644 index 0000000000..2d416c64cc --- /dev/null +++ b/sdks/full/rust-cli/docs/ServersDockerRuntime.md @@ -0,0 +1,14 @@ +# ServersDockerRuntime + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**args** | **Vec** | | +**environment** | **::std::collections::HashMap** | | +**image_id** | **String** | | +**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/ServersGameGuardProtocol.md b/sdks/full/rust-cli/docs/ServersGameGuardProtocol.md new file mode 100644 index 0000000000..f66ad42885 --- /dev/null +++ b/sdks/full/rust-cli/docs/ServersGameGuardProtocol.md @@ -0,0 +1,10 @@ +# ServersGameGuardProtocol + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + +[[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 new file mode 100644 index 0000000000..48e368a0be --- /dev/null +++ b/sdks/full/rust-cli/docs/ServersImagesApi.md @@ -0,0 +1,39 @@ +# \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/ServersImagesCreateRequest.md b/sdks/full/rust-cli/docs/ServersImagesCreateRequest.md new file mode 100644 index 0000000000..e7b5744e24 --- /dev/null +++ b/sdks/full/rust-cli/docs/ServersImagesCreateRequest.md @@ -0,0 +1,11 @@ +# 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-cli/docs/ServersRuntime.md b/sdks/full/rust-cli/docs/ServersRuntime.md new file mode 100644 index 0000000000..cc349c6071 --- /dev/null +++ b/sdks/full/rust-cli/docs/ServersRuntime.md @@ -0,0 +1,11 @@ +# ServersRuntime + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**docker** | Option<[**crate::models::ServersDockerRuntime**](ServersDockerRuntime.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/ServersServer.md b/sdks/full/rust-cli/docs/ServersServer.md new file mode 100644 index 0000000000..81a703dd87 --- /dev/null +++ b/sdks/full/rust-cli/docs/ServersServer.md @@ -0,0 +1,11 @@ +# ServersServer + +## 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-cli/docs/ServersServersApi.md b/sdks/full/rust-cli/docs/ServersServersApi.md new file mode 100644 index 0000000000..37d90ce7f7 --- /dev/null +++ b/sdks/full/rust-cli/docs/ServersServersApi.md @@ -0,0 +1,71 @@ +# \ServersServersApi + +All URIs are relative to *https://api.rivet.gg* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**servers_servers_create**](ServersServersApi.md#servers_servers_create) | **POST** /servers/servers | +[**servers_servers_destroy**](ServersServersApi.md#servers_servers_destroy) | **DELETE** /servers/servers/{server_id} | + + + +## servers_servers_create + +> crate::models::ServersServersCreateResponse servers_servers_create(servers_servers_create_request) + + +Create a new dynamic server. + +### Parameters + + +Name | Type | Description | Required | Notes +------------- | ------------- | ------------- | ------------- | ------------- +**servers_servers_create_request** | [**ServersServersCreateRequest**](ServersServersCreateRequest.md) | | [required] | + +### Return type + +[**crate::models::ServersServersCreateResponse**](ServersServersCreateResponse.md) + +### 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) + + +## servers_servers_destroy + +> servers_servers_destroy(server_id, servers_servers_destroy_request) + + +Destroy a dynamic server. + +### Parameters + + +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] | + +### 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/ServersServersCreateRequest.md b/sdks/full/rust-cli/docs/ServersServersCreateRequest.md new file mode 100644 index 0000000000..784335374f --- /dev/null +++ b/sdks/full/rust-cli/docs/ServersServersCreateRequest.md @@ -0,0 +1,15 @@ +# 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/docs/ServersServersCreateResponse.md b/sdks/full/rust-cli/docs/ServersServersCreateResponse.md new file mode 100644 index 0000000000..9d7ecbe337 --- /dev/null +++ b/sdks/full/rust-cli/docs/ServersServersCreateResponse.md @@ -0,0 +1,11 @@ +# ServersServersCreateResponse + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**server** | [**crate::models::ServersServer**](ServersServer.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/ServersServersDestroyRequest.md b/sdks/full/rust-cli/docs/ServersServersDestroyRequest.md new file mode 100644 index 0000000000..b56a028cbb --- /dev/null +++ b/sdks/full/rust-cli/docs/ServersServersDestroyRequest.md @@ -0,0 +1,11 @@ +# 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-cli/src/apis/mod.rs b/sdks/full/rust-cli/src/apis/mod.rs index 919658fa98..c9c1de9f4c 100644 --- a/sdks/full/rust-cli/src/apis/mod.rs +++ b/sdks/full/rust-cli/src/apis/mod.rs @@ -130,5 +130,7 @@ pub mod portal_games_api; pub mod portal_notifications_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 new file mode 100644 index 0000000000..fad00d9a22 --- /dev/null +++ b/sdks/full/rust-cli/src/apis/servers_images_api.rs @@ -0,0 +1,63 @@ +/* + * 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 new file mode 100644 index 0000000000..e6f9abd501 --- /dev/null +++ b/sdks/full/rust-cli/src/apis/servers_servers_api.rs @@ -0,0 +1,108 @@ +/* + * 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_servers_create`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum ServersServersCreateError { + 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), +} + +/// struct for typed errors of method [`servers_servers_destroy`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum ServersServersDestroyError { + 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 dynamic server. +pub async fn servers_servers_create(configuration: &configuration::Configuration, servers_servers_create_request: crate::models::ServersServersCreateRequest) -> Result> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!("{}/servers/servers", 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_servers_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() { + 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)) + } +} + +/// 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> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + 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_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?; + + 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/models/mod.rs b/sdks/full/rust-cli/src/models/mod.rs index a5ef02f3c0..23c471282b 100644 --- a/sdks/full/rust-cli/src/models/mod.rs +++ b/sdks/full/rust-cli/src/models/mod.rs @@ -604,6 +604,32 @@ 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_docker_network; +pub use self::servers_docker_network::ServersDockerNetwork; +pub mod servers_docker_network_mode; +pub use self::servers_docker_network_mode::ServersDockerNetworkMode; +pub mod servers_docker_port; +pub use self::servers_docker_port::ServersDockerPort; +pub mod servers_docker_port_routing; +pub use self::servers_docker_port_routing::ServersDockerPortRouting; +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_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_docker_host_routing.rs b/sdks/full/rust-cli/src/models/servers_docker_host_routing.rs new file mode 100644 index 0000000000..2fc814f8f8 --- /dev/null +++ b/sdks/full/rust-cli/src/models/servers_docker_host_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 ServersDockerHostRouting { + #[serde(rename = "null", deserialize_with = "Option::deserialize")] + pub null: Option, +} + +impl ServersDockerHostRouting { + pub fn new(null: Option) -> ServersDockerHostRouting { + ServersDockerHostRouting { + null, + } + } +} + + diff --git a/sdks/full/rust-cli/src/models/servers_docker_network.rs b/sdks/full/rust-cli/src/models/servers_docker_network.rs new file mode 100644 index 0000000000..ff7270d596 --- /dev/null +++ b/sdks/full/rust-cli/src/models/servers_docker_network.rs @@ -0,0 +1,31 @@ +/* + * 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 ServersDockerNetwork { + #[serde(rename = "mode")] + pub mode: crate::models::ServersDockerNetworkMode, + #[serde(rename = "ports")] + pub ports: ::std::collections::HashMap, +} + +impl ServersDockerNetwork { + pub fn new(mode: crate::models::ServersDockerNetworkMode, ports: ::std::collections::HashMap) -> ServersDockerNetwork { + ServersDockerNetwork { + mode, + 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 new file mode 100644 index 0000000000..8ff224904c --- /dev/null +++ b/sdks/full/rust-cli/src/models/servers_docker_network_mode.rs @@ -0,0 +1,39 @@ +/* + * 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, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum ServersDockerNetworkMode { + #[serde(rename = "host")] + Host, + #[serde(rename = "bridge")] + Bridge, + +} + +impl ToString for ServersDockerNetworkMode { + fn to_string(&self) -> String { + match self { + Self::Host => String::from("host"), + Self::Bridge => String::from("bridge"), + } + } +} + +impl Default for ServersDockerNetworkMode { + fn default() -> ServersDockerNetworkMode { + Self::Host + } +} + + + + diff --git a/sdks/full/rust-cli/src/models/servers_docker_port.rs b/sdks/full/rust-cli/src/models/servers_docker_port.rs new file mode 100644 index 0000000000..ca9b36a260 --- /dev/null +++ b/sdks/full/rust-cli/src/models/servers_docker_port.rs @@ -0,0 +1,31 @@ +/* + * 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 ServersDockerPort { + #[serde(rename = "port", skip_serializing_if = "Option::is_none")] + pub port: Option, + #[serde(rename = "routing")] + pub routing: Box, +} + +impl ServersDockerPort { + pub fn new(routing: crate::models::ServersDockerPortRouting) -> ServersDockerPort { + ServersDockerPort { + port: None, + routing: Box::new(routing), + } + } +} + + 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 new file mode 100644 index 0000000000..73b15a0fe3 --- /dev/null +++ b/sdks/full/rust-cli/src/models/servers_docker_port_routing.rs @@ -0,0 +1,31 @@ +/* + * 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 ServersDockerPortRouting { + #[serde(rename = "game_guard", skip_serializing_if = "Option::is_none")] + pub game_guard: Option, + #[serde(rename = "host", skip_serializing_if = "Option::is_none")] + pub host: Option>, +} + +impl ServersDockerPortRouting { + pub fn new() -> ServersDockerPortRouting { + ServersDockerPortRouting { + game_guard: None, + host: None, + } + } +} + + diff --git a/sdks/full/rust-cli/src/models/servers_docker_runtime.rs b/sdks/full/rust-cli/src/models/servers_docker_runtime.rs new file mode 100644 index 0000000000..7c6f2ed797 --- /dev/null +++ b/sdks/full/rust-cli/src/models/servers_docker_runtime.rs @@ -0,0 +1,37 @@ +/* + * 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 ServersDockerRuntime { + #[serde(rename = "args")] + pub args: Vec, + #[serde(rename = "environment")] + pub environment: ::std::collections::HashMap, + #[serde(rename = "image_id")] + pub image_id: String, + #[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 { + ServersDockerRuntime { + args, + environment, + image_id, + network: Box::new(network), + } + } +} + + diff --git a/sdks/full/rust-cli/src/models/servers_game_guard_protocol.rs b/sdks/full/rust-cli/src/models/servers_game_guard_protocol.rs new file mode 100644 index 0000000000..da7b37cc6a --- /dev/null +++ b/sdks/full/rust-cli/src/models/servers_game_guard_protocol.rs @@ -0,0 +1,48 @@ +/* + * 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, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum ServersGameGuardProtocol { + #[serde(rename = "http")] + Http, + #[serde(rename = "https")] + Https, + #[serde(rename = "tcp")] + Tcp, + #[serde(rename = "tcp_tls")] + TcpTls, + #[serde(rename = "udp")] + Udp, + +} + +impl ToString for ServersGameGuardProtocol { + fn to_string(&self) -> String { + match self { + Self::Http => String::from("http"), + Self::Https => String::from("https"), + Self::Tcp => String::from("tcp"), + Self::TcpTls => String::from("tcp_tls"), + Self::Udp => String::from("udp"), + } + } +} + +impl Default for ServersGameGuardProtocol { + fn default() -> ServersGameGuardProtocol { + Self::Http + } +} + + + + 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 new file mode 100644 index 0000000000..2156f98316 --- /dev/null +++ b/sdks/full/rust-cli/src/models/servers_images_create_request.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 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_runtime.rs b/sdks/full/rust-cli/src/models/servers_runtime.rs new file mode 100644 index 0000000000..2176e8993d --- /dev/null +++ b/sdks/full/rust-cli/src/models/servers_runtime.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 ServersRuntime { + #[serde(rename = "docker", skip_serializing_if = "Option::is_none")] + pub docker: Option>, +} + +impl ServersRuntime { + pub fn new() -> ServersRuntime { + ServersRuntime { + docker: None, + } + } +} + + diff --git a/sdks/full/rust-cli/src/models/servers_server.rs b/sdks/full/rust-cli/src/models/servers_server.rs new file mode 100644 index 0000000000..30db9313ee --- /dev/null +++ b/sdks/full/rust-cli/src/models/servers_server.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 ServersServer { + #[serde(rename = "null", deserialize_with = "Option::deserialize")] + pub null: Option, +} + +impl ServersServer { + pub fn new(null: Option) -> ServersServer { + ServersServer { + null, + } + } +} + + 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 new file mode 100644 index 0000000000..6912a5a1ea --- /dev/null +++ b/sdks/full/rust-cli/src/models/servers_servers_create_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 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-cli/src/models/servers_servers_create_response.rs b/sdks/full/rust-cli/src/models/servers_servers_create_response.rs new file mode 100644 index 0000000000..8058d1add3 --- /dev/null +++ b/sdks/full/rust-cli/src/models/servers_servers_create_response.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 ServersServersCreateResponse { + #[serde(rename = "server")] + pub server: Box, +} + +impl ServersServersCreateResponse { + pub fn new(server: crate::models::ServersServer) -> ServersServersCreateResponse { + ServersServersCreateResponse { + 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_servers_destroy_request.rs new file mode 100644 index 0000000000..701ddcbe15 --- /dev/null +++ b/sdks/full/rust-cli/src/models/servers_servers_destroy_request.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 ServersServersDestroyRequest { + #[serde(rename = "kill_timeout", skip_serializing_if = "Option::is_none")] + pub kill_timeout: Option, +} + +impl ServersServersDestroyRequest { + pub fn new() -> ServersServersDestroyRequest { + ServersServersDestroyRequest { + kill_timeout: None, + } + } +} + + diff --git a/sdks/full/rust/.openapi-generator/FILES b/sdks/full/rust/.openapi-generator/FILES index 8becf9eef3..4a5a2894a7 100644 --- a/sdks/full/rust/.openapi-generator/FILES +++ b/sdks/full/rust/.openapi-generator/FILES @@ -346,6 +346,21 @@ docs/ProvisionDatacentersApi.md docs/ProvisionDatacentersGetTlsResponse.md docs/ProvisionServersApi.md docs/ProvisionServersGetInfoResponse.md +docs/ServersDockerHostRouting.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/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 @@ -393,6 +408,8 @@ src/apis/portal_games_api.rs src/apis/portal_notifications_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_build_delivery_method.rs src/models/admin_cluster.rs @@ -698,6 +715,19 @@ src/models/portal_notification_unregister_service.rs src/models/portal_register_notifications_request.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_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_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 1dddbffd7e..23fb2f8ca2 100644 --- a/sdks/full/rust/README.md +++ b/sdks/full/rust/README.md @@ -168,6 +168,9 @@ Class | Method | HTTP request | Description *PortalNotificationsApi* | [**portal_notifications_unregister_notifications**](docs/PortalNotificationsApi.md#portal_notifications_unregister_notifications) | **DELETE** /portal/notifications/register | *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} | ## Documentation For Models @@ -475,6 +478,19 @@ Class | Method | HTTP request | Description - [PortalRegisterNotificationsRequest](docs/PortalRegisterNotificationsRequest.md) - [ProvisionDatacentersGetTlsResponse](docs/ProvisionDatacentersGetTlsResponse.md) - [ProvisionServersGetInfoResponse](docs/ProvisionServersGetInfoResponse.md) + - [ServersDockerHostRouting](docs/ServersDockerHostRouting.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) + - [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/docs/ServersDockerHostRouting.md b/sdks/full/rust/docs/ServersDockerHostRouting.md new file mode 100644 index 0000000000..54c03a90a7 --- /dev/null +++ b/sdks/full/rust/docs/ServersDockerHostRouting.md @@ -0,0 +1,11 @@ +# ServersDockerHostRouting + +## 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/ServersDockerNetwork.md b/sdks/full/rust/docs/ServersDockerNetwork.md new file mode 100644 index 0000000000..d49da51247 --- /dev/null +++ b/sdks/full/rust/docs/ServersDockerNetwork.md @@ -0,0 +1,12 @@ +# ServersDockerNetwork + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**mode** | [**crate::models::ServersDockerNetworkMode**](ServersDockerNetworkMode.md) | | +**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/ServersDockerNetworkMode.md b/sdks/full/rust/docs/ServersDockerNetworkMode.md new file mode 100644 index 0000000000..c12894cff8 --- /dev/null +++ b/sdks/full/rust/docs/ServersDockerNetworkMode.md @@ -0,0 +1,10 @@ +# ServersDockerNetworkMode + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + +[[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/ServersDockerPort.md b/sdks/full/rust/docs/ServersDockerPort.md new file mode 100644 index 0000000000..6787aac643 --- /dev/null +++ b/sdks/full/rust/docs/ServersDockerPort.md @@ -0,0 +1,12 @@ +# ServersDockerPort + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**port** | Option<**i32**> | | [optional] +**routing** | [**crate::models::ServersDockerPortRouting**](ServersDockerPortRouting.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 new file mode 100644 index 0000000000..c9573a2dcb --- /dev/null +++ b/sdks/full/rust/docs/ServersDockerPortRouting.md @@ -0,0 +1,12 @@ +# ServersDockerPortRouting + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**game_guard** | Option<[**crate::models::ServersGameGuardProtocol**](ServersGameGuardProtocol.md)> | | [optional] +**host** | Option<[**crate::models::ServersDockerHostRouting**](ServersDockerHostRouting.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 new file mode 100644 index 0000000000..2d416c64cc --- /dev/null +++ b/sdks/full/rust/docs/ServersDockerRuntime.md @@ -0,0 +1,14 @@ +# ServersDockerRuntime + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**args** | **Vec** | | +**environment** | **::std::collections::HashMap** | | +**image_id** | **String** | | +**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/ServersGameGuardProtocol.md b/sdks/full/rust/docs/ServersGameGuardProtocol.md new file mode 100644 index 0000000000..f66ad42885 --- /dev/null +++ b/sdks/full/rust/docs/ServersGameGuardProtocol.md @@ -0,0 +1,10 @@ +# ServersGameGuardProtocol + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + +[[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 new file mode 100644 index 0000000000..48e368a0be --- /dev/null +++ b/sdks/full/rust/docs/ServersImagesApi.md @@ -0,0 +1,39 @@ +# \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 new file mode 100644 index 0000000000..e7b5744e24 --- /dev/null +++ b/sdks/full/rust/docs/ServersImagesCreateRequest.md @@ -0,0 +1,11 @@ +# 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/ServersRuntime.md b/sdks/full/rust/docs/ServersRuntime.md new file mode 100644 index 0000000000..cc349c6071 --- /dev/null +++ b/sdks/full/rust/docs/ServersRuntime.md @@ -0,0 +1,11 @@ +# ServersRuntime + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**docker** | Option<[**crate::models::ServersDockerRuntime**](ServersDockerRuntime.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/ServersServer.md b/sdks/full/rust/docs/ServersServer.md new file mode 100644 index 0000000000..81a703dd87 --- /dev/null +++ b/sdks/full/rust/docs/ServersServer.md @@ -0,0 +1,11 @@ +# ServersServer + +## 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/ServersServersApi.md b/sdks/full/rust/docs/ServersServersApi.md new file mode 100644 index 0000000000..37d90ce7f7 --- /dev/null +++ b/sdks/full/rust/docs/ServersServersApi.md @@ -0,0 +1,71 @@ +# \ServersServersApi + +All URIs are relative to *https://api.rivet.gg* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**servers_servers_create**](ServersServersApi.md#servers_servers_create) | **POST** /servers/servers | +[**servers_servers_destroy**](ServersServersApi.md#servers_servers_destroy) | **DELETE** /servers/servers/{server_id} | + + + +## servers_servers_create + +> crate::models::ServersServersCreateResponse servers_servers_create(servers_servers_create_request) + + +Create a new dynamic server. + +### Parameters + + +Name | Type | Description | Required | Notes +------------- | ------------- | ------------- | ------------- | ------------- +**servers_servers_create_request** | [**ServersServersCreateRequest**](ServersServersCreateRequest.md) | | [required] | + +### Return type + +[**crate::models::ServersServersCreateResponse**](ServersServersCreateResponse.md) + +### 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) + + +## servers_servers_destroy + +> servers_servers_destroy(server_id, servers_servers_destroy_request) + + +Destroy a dynamic server. + +### Parameters + + +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] | + +### 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/ServersServersCreateRequest.md b/sdks/full/rust/docs/ServersServersCreateRequest.md new file mode 100644 index 0000000000..784335374f --- /dev/null +++ b/sdks/full/rust/docs/ServersServersCreateRequest.md @@ -0,0 +1,15 @@ +# 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/ServersServersCreateResponse.md b/sdks/full/rust/docs/ServersServersCreateResponse.md new file mode 100644 index 0000000000..9d7ecbe337 --- /dev/null +++ b/sdks/full/rust/docs/ServersServersCreateResponse.md @@ -0,0 +1,11 @@ +# ServersServersCreateResponse + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**server** | [**crate::models::ServersServer**](ServersServer.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 new file mode 100644 index 0000000000..b56a028cbb --- /dev/null +++ b/sdks/full/rust/docs/ServersServersDestroyRequest.md @@ -0,0 +1,11 @@ +# 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/mod.rs b/sdks/full/rust/src/apis/mod.rs index 919658fa98..c9c1de9f4c 100644 --- a/sdks/full/rust/src/apis/mod.rs +++ b/sdks/full/rust/src/apis/mod.rs @@ -130,5 +130,7 @@ pub mod portal_games_api; pub mod portal_notifications_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 new file mode 100644 index 0000000000..fad00d9a22 --- /dev/null +++ b/sdks/full/rust/src/apis/servers_images_api.rs @@ -0,0 +1,63 @@ +/* + * 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 new file mode 100644 index 0000000000..e6f9abd501 --- /dev/null +++ b/sdks/full/rust/src/apis/servers_servers_api.rs @@ -0,0 +1,108 @@ +/* + * 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_servers_create`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum ServersServersCreateError { + 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), +} + +/// struct for typed errors of method [`servers_servers_destroy`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum ServersServersDestroyError { + 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 dynamic server. +pub async fn servers_servers_create(configuration: &configuration::Configuration, servers_servers_create_request: crate::models::ServersServersCreateRequest) -> Result> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!("{}/servers/servers", 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_servers_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() { + 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)) + } +} + +/// 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> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + 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_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?; + + 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/models/mod.rs b/sdks/full/rust/src/models/mod.rs index a5ef02f3c0..23c471282b 100644 --- a/sdks/full/rust/src/models/mod.rs +++ b/sdks/full/rust/src/models/mod.rs @@ -604,6 +604,32 @@ 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_docker_network; +pub use self::servers_docker_network::ServersDockerNetwork; +pub mod servers_docker_network_mode; +pub use self::servers_docker_network_mode::ServersDockerNetworkMode; +pub mod servers_docker_port; +pub use self::servers_docker_port::ServersDockerPort; +pub mod servers_docker_port_routing; +pub use self::servers_docker_port_routing::ServersDockerPortRouting; +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_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_docker_host_routing.rs b/sdks/full/rust/src/models/servers_docker_host_routing.rs new file mode 100644 index 0000000000..2fc814f8f8 --- /dev/null +++ b/sdks/full/rust/src/models/servers_docker_host_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 ServersDockerHostRouting { + #[serde(rename = "null", deserialize_with = "Option::deserialize")] + pub null: Option, +} + +impl ServersDockerHostRouting { + pub fn new(null: Option) -> ServersDockerHostRouting { + ServersDockerHostRouting { + null, + } + } +} + + diff --git a/sdks/full/rust/src/models/servers_docker_network.rs b/sdks/full/rust/src/models/servers_docker_network.rs new file mode 100644 index 0000000000..ff7270d596 --- /dev/null +++ b/sdks/full/rust/src/models/servers_docker_network.rs @@ -0,0 +1,31 @@ +/* + * 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 ServersDockerNetwork { + #[serde(rename = "mode")] + pub mode: crate::models::ServersDockerNetworkMode, + #[serde(rename = "ports")] + pub ports: ::std::collections::HashMap, +} + +impl ServersDockerNetwork { + pub fn new(mode: crate::models::ServersDockerNetworkMode, ports: ::std::collections::HashMap) -> ServersDockerNetwork { + ServersDockerNetwork { + mode, + 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 new file mode 100644 index 0000000000..8ff224904c --- /dev/null +++ b/sdks/full/rust/src/models/servers_docker_network_mode.rs @@ -0,0 +1,39 @@ +/* + * 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, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum ServersDockerNetworkMode { + #[serde(rename = "host")] + Host, + #[serde(rename = "bridge")] + Bridge, + +} + +impl ToString for ServersDockerNetworkMode { + fn to_string(&self) -> String { + match self { + Self::Host => String::from("host"), + Self::Bridge => String::from("bridge"), + } + } +} + +impl Default for ServersDockerNetworkMode { + fn default() -> ServersDockerNetworkMode { + Self::Host + } +} + + + + diff --git a/sdks/full/rust/src/models/servers_docker_port.rs b/sdks/full/rust/src/models/servers_docker_port.rs new file mode 100644 index 0000000000..ca9b36a260 --- /dev/null +++ b/sdks/full/rust/src/models/servers_docker_port.rs @@ -0,0 +1,31 @@ +/* + * 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 ServersDockerPort { + #[serde(rename = "port", skip_serializing_if = "Option::is_none")] + pub port: Option, + #[serde(rename = "routing")] + pub routing: Box, +} + +impl ServersDockerPort { + pub fn new(routing: crate::models::ServersDockerPortRouting) -> ServersDockerPort { + ServersDockerPort { + port: None, + routing: Box::new(routing), + } + } +} + + diff --git a/sdks/full/rust/src/models/servers_docker_port_routing.rs b/sdks/full/rust/src/models/servers_docker_port_routing.rs new file mode 100644 index 0000000000..73b15a0fe3 --- /dev/null +++ b/sdks/full/rust/src/models/servers_docker_port_routing.rs @@ -0,0 +1,31 @@ +/* + * 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 ServersDockerPortRouting { + #[serde(rename = "game_guard", skip_serializing_if = "Option::is_none")] + pub game_guard: Option, + #[serde(rename = "host", skip_serializing_if = "Option::is_none")] + pub host: Option>, +} + +impl ServersDockerPortRouting { + pub fn new() -> ServersDockerPortRouting { + ServersDockerPortRouting { + game_guard: None, + host: None, + } + } +} + + diff --git a/sdks/full/rust/src/models/servers_docker_runtime.rs b/sdks/full/rust/src/models/servers_docker_runtime.rs new file mode 100644 index 0000000000..7c6f2ed797 --- /dev/null +++ b/sdks/full/rust/src/models/servers_docker_runtime.rs @@ -0,0 +1,37 @@ +/* + * 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 ServersDockerRuntime { + #[serde(rename = "args")] + pub args: Vec, + #[serde(rename = "environment")] + pub environment: ::std::collections::HashMap, + #[serde(rename = "image_id")] + pub image_id: String, + #[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 { + ServersDockerRuntime { + args, + environment, + image_id, + network: Box::new(network), + } + } +} + + diff --git a/sdks/full/rust/src/models/servers_game_guard_protocol.rs b/sdks/full/rust/src/models/servers_game_guard_protocol.rs new file mode 100644 index 0000000000..da7b37cc6a --- /dev/null +++ b/sdks/full/rust/src/models/servers_game_guard_protocol.rs @@ -0,0 +1,48 @@ +/* + * 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, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum ServersGameGuardProtocol { + #[serde(rename = "http")] + Http, + #[serde(rename = "https")] + Https, + #[serde(rename = "tcp")] + Tcp, + #[serde(rename = "tcp_tls")] + TcpTls, + #[serde(rename = "udp")] + Udp, + +} + +impl ToString for ServersGameGuardProtocol { + fn to_string(&self) -> String { + match self { + Self::Http => String::from("http"), + Self::Https => String::from("https"), + Self::Tcp => String::from("tcp"), + Self::TcpTls => String::from("tcp_tls"), + Self::Udp => String::from("udp"), + } + } +} + +impl Default for ServersGameGuardProtocol { + fn default() -> ServersGameGuardProtocol { + Self::Http + } +} + + + + diff --git a/sdks/full/rust/src/models/servers_images_create_request.rs b/sdks/full/rust/src/models/servers_images_create_request.rs new file mode 100644 index 0000000000..2156f98316 --- /dev/null +++ b/sdks/full/rust/src/models/servers_images_create_request.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 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_runtime.rs b/sdks/full/rust/src/models/servers_runtime.rs new file mode 100644 index 0000000000..2176e8993d --- /dev/null +++ b/sdks/full/rust/src/models/servers_runtime.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 ServersRuntime { + #[serde(rename = "docker", skip_serializing_if = "Option::is_none")] + pub docker: Option>, +} + +impl ServersRuntime { + pub fn new() -> ServersRuntime { + ServersRuntime { + docker: None, + } + } +} + + diff --git a/sdks/full/rust/src/models/servers_server.rs b/sdks/full/rust/src/models/servers_server.rs new file mode 100644 index 0000000000..30db9313ee --- /dev/null +++ b/sdks/full/rust/src/models/servers_server.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 ServersServer { + #[serde(rename = "null", deserialize_with = "Option::deserialize")] + pub null: Option, +} + +impl ServersServer { + pub fn new(null: Option) -> ServersServer { + ServersServer { + null, + } + } +} + + diff --git a/sdks/full/rust/src/models/servers_servers_create_request.rs b/sdks/full/rust/src/models/servers_servers_create_request.rs new file mode 100644 index 0000000000..6912a5a1ea --- /dev/null +++ b/sdks/full/rust/src/models/servers_servers_create_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 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/src/models/servers_servers_create_response.rs b/sdks/full/rust/src/models/servers_servers_create_response.rs new file mode 100644 index 0000000000..8058d1add3 --- /dev/null +++ b/sdks/full/rust/src/models/servers_servers_create_response.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 ServersServersCreateResponse { + #[serde(rename = "server")] + pub server: Box, +} + +impl ServersServersCreateResponse { + pub fn new(server: crate::models::ServersServer) -> ServersServersCreateResponse { + ServersServersCreateResponse { + server: Box::new(server), + } + } +} + + diff --git a/sdks/full/rust/src/models/servers_servers_destroy_request.rs b/sdks/full/rust/src/models/servers_servers_destroy_request.rs new file mode 100644 index 0000000000..701ddcbe15 --- /dev/null +++ b/sdks/full/rust/src/models/servers_servers_destroy_request.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 ServersServersDestroyRequest { + #[serde(rename = "kill_timeout", skip_serializing_if = "Option::is_none")] + pub kill_timeout: Option, +} + +impl ServersServersDestroyRequest { + pub fn new() -> ServersServersDestroyRequest { + ServersServersDestroyRequest { + kill_timeout: None, + } + } +} + + diff --git a/sdks/full/typescript/archive.tgz b/sdks/full/typescript/archive.tgz index 23435917c5..ce995236df 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:4152096d289549a96afe2c3239ee5f2c06f4004eb491528926f359f412d6de2c -size 638887 +oid sha256:f4470b5110427a57b6d59b884b839c2603cae2eee6600f608e20bc1301686319 +size 646164 diff --git a/sdks/full/typescript/src/Client.ts b/sdks/full/typescript/src/Client.ts index 25e0f83e73..44f99bcbc9 100644 --- a/sdks/full/typescript/src/Client.ts +++ b/sdks/full/typescript/src/Client.ts @@ -11,6 +11,7 @@ import { Identity } from "./api/resources/identity/client/Client"; import { Kv } from "./api/resources/kv/client/Client"; import { Module } from "./api/resources/module/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"; @@ -74,6 +75,12 @@ 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 { diff --git a/sdks/full/typescript/src/api/resources/index.ts b/sdks/full/typescript/src/api/resources/index.ts index fa48c0f4ac..869287d73b 100644 --- a/sdks/full/typescript/src/api/resources/index.ts +++ b/sdks/full/typescript/src/api/resources/index.ts @@ -5,6 +5,7 @@ export * as identity from "./identity"; export * as kv from "./kv"; export * as module_ from "./module"; 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"; diff --git a/sdks/full/typescript/src/api/resources/servers/client/Client.ts b/sdks/full/typescript/src/api/resources/servers/client/Client.ts new file mode 100644 index 0000000000..afd38ea5f0 --- /dev/null +++ b/sdks/full/typescript/src/api/resources/servers/client/Client.ts @@ -0,0 +1,37 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ + +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 { + interface Options { + environment?: core.Supplier; + token?: core.Supplier; + fetcher?: core.FetchFunction; + } + + interface RequestOptions { + timeoutInSeconds?: number; + maxRetries?: number; + } +} + +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_ { + return (this._servers ??= new Servers_(this._options)); + } +} diff --git a/sdks/full/typescript/src/api/resources/servers/client/index.ts b/sdks/full/typescript/src/api/resources/servers/client/index.ts new file mode 100644 index 0000000000..cb0ff5c3b5 --- /dev/null +++ b/sdks/full/typescript/src/api/resources/servers/client/index.ts @@ -0,0 +1 @@ +export {}; diff --git a/sdks/full/typescript/src/api/resources/servers/index.ts b/sdks/full/typescript/src/api/resources/servers/index.ts new file mode 100644 index 0000000000..4ce0f39077 --- /dev/null +++ b/sdks/full/typescript/src/api/resources/servers/index.ts @@ -0,0 +1,2 @@ +export * from "./resources"; +export * from "./client"; diff --git a/sdks/full/typescript/src/api/resources/servers/resources/common/index.ts b/sdks/full/typescript/src/api/resources/servers/resources/common/index.ts new file mode 100644 index 0000000000..eea524d655 --- /dev/null +++ b/sdks/full/typescript/src/api/resources/servers/resources/common/index.ts @@ -0,0 +1 @@ +export * from "./types"; 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 new file mode 100644 index 0000000000..4c0c98e346 --- /dev/null +++ b/sdks/full/typescript/src/api/resources/servers/resources/images/client/Client.ts @@ -0,0 +1,154 @@ +/** + * 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 new file mode 100644 index 0000000000..cb0ff5c3b5 --- /dev/null +++ b/sdks/full/typescript/src/api/resources/servers/resources/images/client/index.ts @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000..c9240f83b4 --- /dev/null +++ b/sdks/full/typescript/src/api/resources/servers/resources/images/index.ts @@ -0,0 +1,2 @@ +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 new file mode 100644 index 0000000000..49399b6587 --- /dev/null +++ b/sdks/full/typescript/src/api/resources/servers/resources/index.ts @@ -0,0 +1,4 @@ +export * as images from "./images"; +export * as servers from "./servers"; +export * as common from "./common"; +export * from "./common/types"; 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 new file mode 100644 index 0000000000..5ccc607577 --- /dev/null +++ b/sdks/full/typescript/src/api/resources/servers/resources/servers/client/Client.ts @@ -0,0 +1,279 @@ +/** + * 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 Servers { + interface Options { + environment?: core.Supplier; + token?: core.Supplier; + fetcher?: core.FetchFunction; + } + + interface RequestOptions { + timeoutInSeconds?: number; + maxRetries?: number; + } +} + +export class Servers { + constructor(protected readonly _options: Servers.Options = {}) {} + + /** + * Create a new dynamic server. + * @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.servers.CreateRequest, + requestOptions?: Servers.RequestOptions + ): Promise { + const _response = await (this._options.fetcher ?? core.fetcher)({ + url: urlJoin( + (await core.Supplier.get(this._options.environment)) ?? environments.RivetEnvironment.Production, + "/servers/servers" + ), + method: "POST", + headers: { + Authorization: await this._getAuthorizationHeader(), + }, + contentType: "application/json", + body: await serializers.servers.servers.CreateRequest.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, { + 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, + }); + } + } + + /** + * Destroy a dynamic server. + * @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 destroy( + serverId: string, + request: Rivet.servers.servers.DestroyRequest, + requestOptions?: Servers.RequestOptions + ): Promise { + const _response = await (this._options.fetcher ?? core.fetcher)({ + url: urlJoin( + (await core.Supplier.get(this._options.environment)) ?? environments.RivetEnvironment.Production, + `/servers/servers/${serverId}` + ), + method: "DELETE", + headers: { + Authorization: await this._getAuthorizationHeader(), + }, + contentType: "application/json", + body: await serializers.servers.servers.DestroyRequest.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/servers/client/index.ts b/sdks/full/typescript/src/api/resources/servers/resources/servers/client/index.ts new file mode 100644 index 0000000000..cb0ff5c3b5 --- /dev/null +++ b/sdks/full/typescript/src/api/resources/servers/resources/servers/client/index.ts @@ -0,0 +1 @@ +export {}; diff --git a/sdks/full/typescript/src/api/resources/servers/resources/servers/index.ts b/sdks/full/typescript/src/api/resources/servers/resources/servers/index.ts new file mode 100644 index 0000000000..c9240f83b4 --- /dev/null +++ b/sdks/full/typescript/src/api/resources/servers/resources/servers/index.ts @@ -0,0 +1,2 @@ +export * from "./types"; +export * from "./client"; diff --git a/sdks/full/typescript/src/serialization/resources/index.ts b/sdks/full/typescript/src/serialization/resources/index.ts index 8b81230cbb..b170103d1d 100644 --- a/sdks/full/typescript/src/serialization/resources/index.ts +++ b/sdks/full/typescript/src/serialization/resources/index.ts @@ -5,6 +5,7 @@ export * as identity from "./identity"; export * as kv from "./kv"; export * as module_ from "./module"; 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"; diff --git a/sdks/full/typescript/src/serialization/resources/servers/index.ts b/sdks/full/typescript/src/serialization/resources/servers/index.ts new file mode 100644 index 0000000000..3e5335fe42 --- /dev/null +++ b/sdks/full/typescript/src/serialization/resources/servers/index.ts @@ -0,0 +1 @@ +export * from "./resources"; diff --git a/sdks/full/typescript/src/serialization/resources/servers/resources/common/index.ts b/sdks/full/typescript/src/serialization/resources/servers/resources/common/index.ts new file mode 100644 index 0000000000..eea524d655 --- /dev/null +++ b/sdks/full/typescript/src/serialization/resources/servers/resources/common/index.ts @@ -0,0 +1 @@ +export * from "./types"; 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 new file mode 100644 index 0000000000..eea524d655 --- /dev/null +++ b/sdks/full/typescript/src/serialization/resources/servers/resources/images/index.ts @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000..49399b6587 --- /dev/null +++ b/sdks/full/typescript/src/serialization/resources/servers/resources/index.ts @@ -0,0 +1,4 @@ +export * as images from "./images"; +export * as servers from "./servers"; +export * as common from "./common"; +export * from "./common/types"; diff --git a/sdks/full/typescript/src/serialization/resources/servers/resources/servers/index.ts b/sdks/full/typescript/src/serialization/resources/servers/resources/servers/index.ts new file mode 100644 index 0000000000..eea524d655 --- /dev/null +++ b/sdks/full/typescript/src/serialization/resources/servers/resources/servers/index.ts @@ -0,0 +1 @@ +export * from "./types"; From 1cc027db4767205370f149891d94eed729c097e4 Mon Sep 17 00:00:00 2001 From: Forest Anderson Date: Fri, 26 Apr 2024 15:01:59 -0400 Subject: [PATCH 8/8] feat(api): dynamic servers endpoint handlers --- svc/Cargo.lock | 33 ++++++++++++++ svc/Cargo.toml | 1 + svc/api/servers/Cargo.toml | 38 ++++++++++++++++ svc/api/servers/Service.toml | 7 +++ svc/api/servers/src/auth.rs | 25 ++++++++++ svc/api/servers/src/lib.rs | 2 + svc/api/servers/src/main.rs | 5 ++ svc/api/servers/src/route/images.rs | 17 +++++++ svc/api/servers/src/route/mod.rs | 40 ++++++++++++++++ svc/api/servers/src/route/servers.rs | 68 ++++++++++++++++++++++++++++ svc/api/servers/tests/basic.rs | 60 ++++++++++++++++++++++++ 11 files changed, 296 insertions(+) create mode 100644 svc/api/servers/Cargo.toml create mode 100644 svc/api/servers/Service.toml create mode 100644 svc/api/servers/src/auth.rs create mode 100644 svc/api/servers/src/lib.rs create mode 100644 svc/api/servers/src/main.rs create mode 100644 svc/api/servers/src/route/images.rs create mode 100644 svc/api/servers/src/route/mod.rs create mode 100644 svc/api/servers/src/route/servers.rs create mode 100644 svc/api/servers/tests/basic.rs diff --git a/svc/Cargo.lock b/svc/Cargo.lock index 94684421dd..8440222b05 100644 --- a/svc/Cargo.lock +++ b/svc/Cargo.lock @@ -857,6 +857,39 @@ dependencies = [ "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-list", + "cluster-resolve-for-name-id", + "http 0.2.12", + "hyper", + "rivet-api", + "rivet-cache", + "rivet-claims", + "rivet-connection", + "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" diff --git a/svc/Cargo.toml b/svc/Cargo.toml index 5c2ce3a6e1..e9b4f9f550 100644 --- a/svc/Cargo.toml +++ b/svc/Cargo.toml @@ -17,6 +17,7 @@ members = [ "api/monolith", "api/portal", "api/provision", + "api/servers", "api/status", "api/traefik-provider", "pkg/build/ops/create", diff --git a/svc/api/servers/Cargo.toml b/svc/api/servers/Cargo.toml new file mode 100644 index 0000000000..ae2e9f06c4 --- /dev/null +++ b/svc/api/servers/Cargo.toml @@ -0,0 +1,38 @@ +[package] +name = "api-servers" +version = "0.0.1" +authors = ["Rivet Gaming, LLC "] +edition = "2021" +license = "Apache-2.0" + +[dependencies] +api-helper = { path = "../../../lib/api-helper/build" } +chirp-client = { path = "../../../lib/chirp/client" } +rivet-operation = { path = "../../../lib/operation/core" } +chrono = "0.4" +http = "0.2" +hyper = { version = "0.14", features = ["server", "http1", "stream", "tcp"] } +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-pools = { path = "../../../lib/pools" } +s3-util = { path = "../../../lib/s3-util" } +serde = { version = "1.0", features = ["derive"] } +serde_json = "1.0" +tokio = { version = "1.29" } +tracing = "0.1" +tracing-futures = "0.2" +tracing-subscriber = { version = "0.3", default-features = false, features = ["fmt", "json", "ansi"] } +url = "2.2.2" +uuid = { version = "1", features = ["v4"] } + +cluster-get = { path = "../../pkg/cluster/ops/get" } +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" } + +[dev-dependencies] +rivet-connection = { path = "../../../lib/connection" } diff --git a/svc/api/servers/Service.toml b/svc/api/servers/Service.toml new file mode 100644 index 0000000000..c11f709ca4 --- /dev/null +++ b/svc/api/servers/Service.toml @@ -0,0 +1,7 @@ +[service] +name = "api-servers" + +[runtime] +kind = "rust" + +[api-routes] diff --git a/svc/api/servers/src/auth.rs b/svc/api/servers/src/auth.rs new file mode 100644 index 0000000000..9421b0cee4 --- /dev/null +++ b/svc/api/servers/src/auth.rs @@ -0,0 +1,25 @@ +use api_helper::auth::{ApiAuth, AuthRateLimitCtx}; +use proto::claims::Claims; +use rivet_operation::prelude::*; + +pub struct Auth { + _claims: Option, +} + +#[async_trait] +impl ApiAuth for Auth { + async fn new( + api_token: Option, + rate_limit_ctx: AuthRateLimitCtx<'_>, + ) -> GlobalResult { + Self::rate_limit(rate_limit_ctx).await?; + + todo!(); + + Ok(Auth { _claims: None }) + } + + async fn rate_limit(_rate_limit_ctx: AuthRateLimitCtx<'_>) -> GlobalResult<()> { + Ok(()) + } +} diff --git a/svc/api/servers/src/lib.rs b/svc/api/servers/src/lib.rs new file mode 100644 index 0000000000..eeaeaaafb7 --- /dev/null +++ b/svc/api/servers/src/lib.rs @@ -0,0 +1,2 @@ +pub mod auth; +pub mod route; diff --git a/svc/api/servers/src/main.rs b/svc/api/servers/src/main.rs new file mode 100644 index 0000000000..26c0bd45b7 --- /dev/null +++ b/svc/api/servers/src/main.rs @@ -0,0 +1,5 @@ +use api_helper::start; + +fn main() { + start(api_servers::route::handle); +} diff --git a/svc/api/servers/src/route/images.rs b/svc/api/servers/src/route/images.rs new file mode 100644 index 0000000000..3ff46b58c2 --- /dev/null +++ b/svc/api/servers/src/route/images.rs @@ -0,0 +1,17 @@ +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 new file mode 100644 index 0000000000..e6a6a75876 --- /dev/null +++ b/svc/api/servers/src/route/mod.rs @@ -0,0 +1,40 @@ +use api_helper::define_router; +use hyper::{Body, Request, Response}; +use rivet_api::models; +use uuid::Uuid; + +pub mod images; +pub mod servers; + +pub async fn handle( + shared_client: chirp_client::SharedClientHandle, + pools: rivet_pools::Pools, + cache: rivet_cache::Cache, + ray_id: uuid::Uuid, + request: Request, +) -> Result, http::Error> { + let response = Response::builder(); + + // Handle route + Router::handle(shared_client, pools, cache, ray_id, request, response).await +} + +define_router! { + routes: { + "servers" : { + POST: servers::create( + body: models::ServersServersCreateRequest, + ), + }, + + "servers" / Uuid : { + DELETE: servers::delete(), + }, + + "images" : { + POST: images::create( + body: models::ServersImagesCreateRequest, + ), + }, + }, +} diff --git a/svc/api/servers/src/route/servers.rs b/svc/api/servers/src/route/servers.rs new file mode 100644 index 0000000000..7a5b0eb5ef --- /dev/null +++ b/svc/api/servers/src/route/servers.rs @@ -0,0 +1,68 @@ +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 /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()] + }) + .await? + .clusters; + + 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 datacenters = op!([ctx] cluster_datacenter_resolve_for_name_id { + name_ids: vec![body.datacenter.clone()] + }) + .await? + .datacenters; + + if datacenters.is_empty() { + bail_with!(CLUSTER_DATACENTER_NOT_FOUND); + } + + let datacenter_id = unwrap!(unwrap!(datacenters.first()).datacenter_id); + + let datacenters = op!([ctx] cluster_datacenter_get { + datacenter_ids: vec![datacenter_id] + }) + .await? + .datacenters; + + let datacenter = match datacenters.first() { + Some(d) => d, + None => bail_with!(CLUSTER_DATACENTER_NOT_FOUND), + }; + + Ok(models::ServersServersCreateResponse { server: todo!() }) +} + +// MARK: DELETE /servers/{server_id} +pub async fn delete(ctx: Ctx, server_id: Uuid) -> GlobalResult { + todo!(); + + Ok(json!({})) +} diff --git a/svc/api/servers/tests/basic.rs b/svc/api/servers/tests/basic.rs new file mode 100644 index 0000000000..b14567e0ef --- /dev/null +++ b/svc/api/servers/tests/basic.rs @@ -0,0 +1,60 @@ +use std::sync::Once; + +use rivet_operation::prelude::*; + +static GLOBAL_INIT: Once = Once::new(); + +struct Ctx { + op_ctx: OperationContext<()>, +} + +impl Ctx { + async fn init() -> Ctx { + GLOBAL_INIT.call_once(|| { + tracing_subscriber::fmt() + .pretty() + .with_max_level(tracing::Level::INFO) + .with_target(false) + .init(); + }); + + let pools = rivet_pools::from_env("api-servers-test").await.unwrap(); + let cache = rivet_cache::CacheInner::new( + "api-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"); + let conn = rivet_connection::Connection::new(client, pools, cache); + let op_ctx = OperationContext::new( + "api-servers-test".to_string(), + std::time::Duration::from_secs(60), + conn, + Uuid::new_v4(), + Uuid::new_v4(), + util::timestamp::now(), + util::timestamp::now(), + (), + Vec::new(), + ); + + Ctx { op_ctx } + } + + fn chirp(&self) -> &chirp_client::Client { + self.op_ctx.chirp() + } + + fn op_ctx(&self) -> &OperationContext<()> { + &self.op_ctx + } +} + +#[tokio::test(flavor = "multi_thread")] +async fn basic() { + let ctx = Ctx::init().await; + + todo!() +}