From 809bf06630044264e7f6211092470fe77108177f Mon Sep 17 00:00:00 2001 From: Nathan Flurry Date: Sun, 17 Nov 2024 18:01:25 -0800 Subject: [PATCH] chore: auto-publish docker images --- .dockerignore | 1 + .github/actions/docker-setup/action.yaml | 32 + .github/workflows/bolt-check.yaml | 46 - .github/workflows/bolt-test.yaml | 50 - .github/workflows/detect-secrets.yaml | 17 - .github/workflows/docker-publish.yaml | 89 - .github/workflows/docker.yaml | 214 +++ .github/workflows/fern.yaml | 24 +- .github/workflows/format-check.yaml | 19 - ...release-please.yml => release-please.yaml} | 2 +- .github/workflows/rust.yaml | 68 +- .../workflows/service-containers-publish.yaml | 39 - .gitmodules | 24 + Cargo.lock | 74 +- Cargo.toml | 18 +- deny.toml | 9 +- docker/README.md | 23 +- docker/client/Dockerfile | 36 + docker/client/Dockerfile.dockerignore | 11 + docker/dev-full/README.md | 104 ++ docker/dev-full/client.Dockerfile | 7 +- .../dev-full/client.Dockerfile.dockerignore | 1 - docker/dev-full/docker-compose.yml | 8 +- docker/dev-full/rivet-server/config.yaml | 20 +- docker/dev-full/server.Dockerfile | 6 +- docker/dev-monolith/Dockerfile.dockerignore | 17 - docker/{dev-monolith => monolith}/Dockerfile | 44 +- docker/monolith/Dockerfile.dockerignore | 17 + docker/{dev-monolith => monolith}/README.md | 4 +- .../clickhouse/config.xml | 0 .../clickhouse/users.xml | 0 .../rivet-client/config.yaml | 0 .../rivet-server/config.yaml | 0 .../scripts/deno.jsonc | 0 .../scripts/setup_s6.ts | 0 .../seaweedfs/s3.json | 0 .../vector-client/vector.yaml | 0 .../vector-server/vector.yaml | 0 docker/server/Dockerfile | 72 + .../infrastructure/rust/GIT_DEPENDENCIES.md | 13 + docs-internal/processes/GITHUB_ACTIONS.md | 22 + docs/scripts/buildcf.sh | 11 +- docs/src/app/(v2)/docs/[...slug]/layout.tsx | 4 +- docs/src/authors/forest-anderson/avatar.jpeg | Bin 271018 -> 28749 bytes docs/src/authors/nathan-flurry/avatar.jpeg | Bin 258056 -> 29562 bytes docs/src/authors/nicholas-kissel/avatar.jpeg | Bin 1052636 -> 16781 bytes docs/src/sitemap/mod.ts | 2 +- externals/cloudflare-rs | 1 + externals/deno | 1 + externals/nomad-client | 1 + externals/posthog-rs | 1 + externals/redis-rs | 1 + externals/rivet-term | 1 + externals/serde_array_query | 1 + externals/sqlx | 1 + packages/api/traefik-provider/Cargo.toml | 3 +- packages/common/api-helper/build/Cargo.toml | 3 +- packages/common/cache/build/Cargo.toml | 3 +- .../common/chirp-workflow/core/Cargo.toml | 3 +- packages/common/chirp/perf/Cargo.toml | 3 +- packages/common/chirp/worker/Cargo.toml | 3 +- packages/common/nomad-util/Cargo.toml | 3 +- packages/common/pools/Cargo.toml | 6 +- packages/common/redis-util/Cargo.toml | 3 +- packages/common/util/core/Cargo.toml | 3 +- packages/infra/client/Cargo.lock | 332 ++-- packages/infra/client/deny.toml | 41 + .../infra/client/isolate-v8-runner/Cargo.toml | 5 +- packages/infra/client/manager/Cargo.toml | 3 +- packages/infra/server/Cargo.toml | 5 +- packages/services/build/Cargo.toml | 5 +- packages/services/build/ops/create/Cargo.toml | 3 +- packages/services/build/ops/get/Cargo.toml | 3 +- .../build/ops/list-for-env/Cargo.toml | 3 +- .../build/ops/list-for-game/Cargo.toml | 3 +- .../standalone/default-create/Cargo.toml | 3 +- .../services/captcha/ops/request/Cargo.toml | 3 +- .../ops/namespace-auth-user-remove/Cargo.toml | 3 +- .../ops/namespace-auth-user-update/Cargo.toml | 3 +- .../cdn/ops/namespace-create/Cargo.toml | 3 +- .../ops/namespace-domain-create/Cargo.toml | 3 +- .../ops/namespace-domain-remove/Cargo.toml | 3 +- .../services/cdn/ops/namespace-get/Cargo.toml | 3 +- .../ops/namespace-resolve-domain/Cargo.toml | 3 +- .../cdn/ops/ns-auth-type-set/Cargo.toml | 3 +- .../Cargo.toml | 3 +- .../services/cdn/ops/site-create/Cargo.toml | 3 +- packages/services/cdn/ops/site-get/Cargo.toml | 3 +- .../cdn/ops/site-list-for-game/Cargo.toml | 3 +- .../services/cdn/ops/version-get/Cargo.toml | 3 +- .../cdn/ops/version-publish/Cargo.toml | 3 +- .../cf-custom-hostname/ops/get/Cargo.toml | 3 +- .../ops/list-for-namespace-id/Cargo.toml | 3 +- .../ops/resolve-hostname/Cargo.toml | 3 +- .../cloud/ops/game-config-create/Cargo.toml | 3 +- .../cloud/ops/game-config-get/Cargo.toml | 3 +- .../cloud/ops/game-token-create/Cargo.toml | 3 +- .../cloud/ops/namespace-create/Cargo.toml | 3 +- .../cloud/ops/namespace-get/Cargo.toml | 3 +- .../Cargo.toml | 3 +- .../namespace-token-public-create/Cargo.toml | 3 +- .../services/cloud/ops/version-get/Cargo.toml | 3 +- .../cloud/ops/version-publish/Cargo.toml | 3 +- packages/services/cluster/Cargo.toml | 8 +- .../datacenter-tls-renew/Cargo.toml | 3 +- .../services/cluster/standalone/gc/Cargo.toml | 3 +- .../standalone/metrics-publish/Cargo.toml | 3 +- .../ops/list-for-game/Cargo.toml | 3 +- .../ops/upload-complete/Cargo.toml | 3 +- .../services/debug/ops/email-res/Cargo.toml | 3 +- .../services/ds-log/ops/export/Cargo.toml | 3 +- packages/services/ds/Cargo.toml | 6 +- .../ops/complete/Cargo.toml | 3 +- .../email-verification/ops/create/Cargo.toml | 3 +- .../external/ops/request-validate/Cargo.toml | 3 +- packages/services/faker/ops/region/Cargo.toml | 3 +- .../ops/banner-upload-complete/Cargo.toml | 3 +- packages/services/game/ops/create/Cargo.toml | 3 +- packages/services/game/ops/get/Cargo.toml | 3 +- .../services/game/ops/list-all/Cargo.toml | 3 +- .../game/ops/list-for-team/Cargo.toml | 3 +- .../game/ops/logo-upload-complete/Cargo.toml | 3 +- .../game/ops/namespace-create/Cargo.toml | 3 +- .../game/ops/namespace-get/Cargo.toml | 3 +- .../game/ops/namespace-list/Cargo.toml | 3 +- .../ops/namespace-resolve-name-id/Cargo.toml | 3 +- .../namespace-version-history-list/Cargo.toml | 3 +- .../game/ops/namespace-version-set/Cargo.toml | 3 +- .../services/game/ops/recommend/Cargo.toml | 3 +- .../game/ops/resolve-name-id/Cargo.toml | 3 +- .../game/ops/resolve-namespace-id/Cargo.toml | 3 +- .../game/ops/version-create/Cargo.toml | 3 +- .../services/game/ops/version-get/Cargo.toml | 3 +- .../services/game/ops/version-list/Cargo.toml | 3 +- packages/services/ip/ops/info/Cargo.toml | 3 +- packages/services/job-run/Cargo.toml | 8 +- .../services/job/standalone/gc/Cargo.toml | 3 +- packages/services/linode/Cargo.toml | 3 +- .../services/linode/standalone/gc/Cargo.toml | 3 +- .../load-test/standalone/sqlx/Cargo.toml | 3 +- .../mm-config/ops/game-get/Cargo.toml | 3 +- .../mm-config/ops/game-upsert/Cargo.toml | 3 +- .../mm-config/ops/lobby-group-get/Cargo.toml | 3 +- .../lobby-group-resolve-name-id/Cargo.toml | 3 +- .../lobby-group-resolve-version/Cargo.toml | 3 +- .../ops/namespace-config-set/Cargo.toml | 3 +- .../mm-config/ops/namespace-create/Cargo.toml | 3 +- .../mm-config/ops/namespace-get/Cargo.toml | 3 +- .../mm-config/ops/version-get/Cargo.toml | 3 +- .../mm-config/ops/version-prepare/Cargo.toml | 3 +- .../mm-config/ops/version-publish/Cargo.toml | 3 +- .../mm/ops/lobby-for-run-id/Cargo.toml | 3 +- packages/services/mm/ops/lobby-get/Cargo.toml | 3 +- .../services/mm/ops/lobby-history/Cargo.toml | 3 +- .../mm/ops/lobby-idle-update/Cargo.toml | 3 +- .../ops/lobby-list-for-namespace/Cargo.toml | 3 +- .../mm/ops/lobby-list-for-user-id/Cargo.toml | 3 +- .../mm/ops/lobby-player-count/Cargo.toml | 3 +- .../mm/ops/lobby-runtime-aggregate/Cargo.toml | 3 +- .../mm/ops/lobby-state-get/Cargo.toml | 3 +- .../ops/player-count-for-namespace/Cargo.toml | 3 +- .../services/mm/ops/player-get/Cargo.toml | 3 +- packages/services/mm/standalone/gc/Cargo.toml | 3 +- packages/services/mm/worker/Cargo.toml | 3 +- .../nomad/standalone/monitor/Cargo.toml | 3 +- packages/services/pegboard/Cargo.toml | 3 +- .../pegboard/standalone/gc/Cargo.toml | 3 +- packages/services/region/ops/get/Cargo.toml | 3 +- .../region/ops/list-for-game/Cargo.toml | 3 +- packages/services/region/ops/list/Cargo.toml | 3 +- .../services/region/ops/recommend/Cargo.toml | 3 +- .../region/ops/resolve-for-game/Cargo.toml | 3 +- .../services/region/ops/resolve/Cargo.toml | 3 +- .../services/team-invite/ops/get/Cargo.toml | 3 +- .../services/team-invite/worker/Cargo.toml | 3 +- .../ops/avatar-upload-complete/Cargo.toml | 3 +- packages/services/team/ops/get/Cargo.toml | 3 +- .../team/ops/join-request-list/Cargo.toml | 3 +- .../services/team/ops/member-count/Cargo.toml | 3 +- .../services/team/ops/member-get/Cargo.toml | 3 +- .../services/team/ops/member-list/Cargo.toml | 3 +- .../ops/member-relationship-get/Cargo.toml | 3 +- .../team/ops/profile-validate/Cargo.toml | 3 +- .../services/team/ops/recommend/Cargo.toml | 3 +- .../team/ops/resolve-display-name/Cargo.toml | 3 +- .../services/team/ops/user-ban-get/Cargo.toml | 3 +- .../team/ops/user-ban-list/Cargo.toml | 3 +- .../telemetry/standalone/beacon/Cargo.toml | 5 +- packages/services/token/ops/create/Cargo.toml | 3 +- .../services/token/ops/exchange/Cargo.toml | 3 +- packages/services/token/ops/get/Cargo.toml | 3 +- packages/services/token/ops/revoke/Cargo.toml | 3 +- .../services/upload/ops/complete/Cargo.toml | 3 +- .../services/upload/ops/file-list/Cargo.toml | 3 +- packages/services/upload/ops/get/Cargo.toml | 3 +- .../upload/ops/list-for-user/Cargo.toml | 3 +- .../services/upload/ops/prepare/Cargo.toml | 3 +- packages/services/upload/worker/Cargo.toml | 3 +- .../user-identity/ops/delete/Cargo.toml | 3 +- .../services/user-identity/ops/get/Cargo.toml | 3 +- .../ops/avatar-upload-complete/Cargo.toml | 3 +- packages/services/user/ops/get/Cargo.toml | 3 +- .../user/ops/pending-delete-toggle/Cargo.toml | 3 +- .../user/ops/profile-validate/Cargo.toml | 3 +- .../user/ops/resolve-email/Cargo.toml | 3 +- .../services/user/ops/team-list/Cargo.toml | 3 +- .../services/user/ops/token-create/Cargo.toml | 3 +- .../standalone/metrics-publish/Cargo.toml | 3 +- scripts/fern/check.sh | 2 +- scripts/fern/gen_inner.sh | 2 +- scripts/openapi/gen_rust.sh | 4 + sdks/full/rust/src/apis/actor_api.rs | 416 +++-- sdks/full/rust/src/apis/actor_builds_api.rs | 520 +++--- sdks/full/rust/src/apis/actor_logs_api.rs | 107 +- sdks/full/rust/src/apis/actor_regions_api.rs | 91 +- .../rust/src/apis/auth_identity_email_api.rs | 186 ++- sdks/full/rust/src/apis/auth_tokens_api.rs | 93 +- sdks/full/rust/src/apis/cloud_api.rs | 87 +- sdks/full/rust/src/apis/cloud_auth_api.rs | 87 +- .../rust/src/apis/cloud_devices_links_api.rs | 248 +-- sdks/full/rust/src/apis/cloud_games_api.rs | 705 ++++---- .../rust/src/apis/cloud_games_avatars_api.rs | 272 +-- .../rust/src/apis/cloud_games_builds_api.rs | 185 ++- .../full/rust/src/apis/cloud_games_cdn_api.rs | 185 ++- .../src/apis/cloud_games_matchmaker_api.rs | 380 +++-- .../cloud_games_namespaces_analytics_api.rs | 97 +- .../src/apis/cloud_games_namespaces_api.rs | 1470 ++++++++++------- .../apis/cloud_games_namespaces_logs_api.rs | 196 ++- .../rust/src/apis/cloud_games_tokens_api.rs | 95 +- .../rust/src/apis/cloud_games_versions_api.rs | 364 ++-- sdks/full/rust/src/apis/cloud_groups_api.rs | 93 +- sdks/full/rust/src/apis/cloud_logs_api.rs | 92 +- sdks/full/rust/src/apis/cloud_tiers_api.rs | 87 +- sdks/full/rust/src/apis/cloud_uploads_api.rs | 92 +- sdks/full/rust/src/apis/configuration.rs | 54 +- .../src/apis/games_environments_tokens_api.rs | 97 +- sdks/full/rust/src/apis/group_api.rs | 1457 +++++++++------- sdks/full/rust/src/apis/group_invites_api.rs | 263 +-- .../rust/src/apis/group_join_requests_api.rs | 181 +- .../rust/src/apis/identity_activities_api.rs | 83 +- sdks/full/rust/src/apis/identity_api.rs | 1287 +++++++++------ .../full/rust/src/apis/identity_events_api.rs | 83 +- sdks/full/rust/src/apis/job_run_api.rs | 75 +- .../rust/src/apis/matchmaker_lobbies_api.rs | 697 ++++---- .../rust/src/apis/matchmaker_players_api.rs | 263 +-- .../rust/src/apis/matchmaker_regions_api.rs | 87 +- sdks/full/rust/src/apis/mod.rs | 130 +- sdks/full/rust/src/apis/portal_games_api.rs | 88 +- .../src/apis/provision_datacenters_api.rs | 81 +- .../rust/src/apis/provision_servers_api.rs | 80 +- sdks/full/rust/src/apis/servers_api.rs | 391 +++-- sdks/full/rust/src/apis/servers_builds_api.rs | 466 +++--- .../rust/src/apis/servers_datacenters_api.rs | 82 +- sdks/full/rust/src/apis/servers_logs_api.rs | 95 +- sdks/full/rust/src/lib.rs | 2 +- sdks/full/rust/src/models/actor_actor.rs | 84 +- sdks/full/rust/src/models/actor_build.rs | 57 +- .../src/models/actor_build_compression.rs | 36 +- sdks/full/rust/src/models/actor_build_kind.rs | 42 +- .../actor_create_actor_network_request.rs | 26 +- .../models/actor_create_actor_port_request.rs | 33 +- .../src/models/actor_create_actor_request.rs | 57 +- .../src/models/actor_create_actor_response.rs | 21 +- .../actor_create_actor_runtime_request.rs | 33 +- .../src/models/actor_game_guard_routing.rs | 21 +- .../models/actor_get_actor_logs_response.rs | 41 +- .../src/models/actor_get_actor_response.rs | 21 +- .../src/models/actor_get_build_response.rs | 21 +- sdks/full/rust/src/models/actor_lifecycle.rs | 21 +- .../src/models/actor_list_actors_response.rs | 21 +- .../src/models/actor_list_builds_response.rs | 21 +- .../src/models/actor_list_regions_response.rs | 19 +- sdks/full/rust/src/models/actor_log_stream.rs | 36 +- sdks/full/rust/src/models/actor_network.rs | 26 +- .../rust/src/models/actor_network_mode.rs | 36 +- .../models/actor_patch_build_tags_request.rs | 29 +- sdks/full/rust/src/models/actor_port.rs | 48 +- .../src/models/actor_port_authorization.rs | 27 +- .../rust/src/models/actor_port_protocol.rs | 54 +- .../models/actor_port_query_authorization.rs | 24 +- .../rust/src/models/actor_port_routing.rs | 27 +- .../src/models/actor_prepare_build_request.rs | 63 +- .../models/actor_prepare_build_response.rs | 39 +- sdks/full/rust/src/models/actor_region.rs | 24 +- sdks/full/rust/src/models/actor_resources.rs | 28 +- sdks/full/rust/src/models/actor_runtime.rs | 33 +- .../rust/src/models/auth_complete_status.rs | 57 +- ...ity_complete_email_verification_request.rs | 32 +- ...ty_complete_email_verification_response.rs | 21 +- ...entity_start_email_verification_request.rs | 33 +- ...ntity_start_email_verification_response.rs | 19 +- .../auth_refresh_identity_token_request.rs | 21 +- .../auth_refresh_identity_token_response.rs | 41 +- sdks/full/rust/src/models/captcha_config.rs | 28 +- .../src/models/captcha_config_hcaptcha.rs | 20 +- .../src/models/captcha_config_turnstile.rs | 20 +- sdks/full/rust/src/models/cloud_auth_agent.rs | 28 +- .../src/models/cloud_auth_agent_game_cloud.rs | 20 +- .../src/models/cloud_auth_agent_identity.rs | 20 +- .../rust/src/models/cloud_bootstrap_access.rs | 42 +- .../src/models/cloud_bootstrap_captcha.rs | 19 +- .../cloud_bootstrap_captcha_turnstile.rs | 19 +- .../src/models/cloud_bootstrap_cluster.rs | 33 +- .../src/models/cloud_bootstrap_domains.rs | 34 +- .../models/cloud_bootstrap_login_methods.rs | 19 +- .../src/models/cloud_bootstrap_origins.rs | 20 +- .../src/models/cloud_bootstrap_response.rs | 65 +- .../rust/src/models/cloud_build_summary.rs | 76 +- .../rust/src/models/cloud_cdn_auth_type.rs | 33 +- .../models/cloud_cdn_namespace_auth_user.rs | 22 +- .../src/models/cloud_cdn_namespace_config.rs | 51 +- .../src/models/cloud_cdn_namespace_domain.rs | 56 +- ...dn_namespace_domain_verification_method.rs | 28 +- ...mespace_domain_verification_method_http.rs | 19 +- ...dn_namespace_domain_verification_status.rs | 39 +- .../rust/src/models/cloud_cdn_site_summary.rs | 67 +- .../src/models/cloud_custom_avatar_summary.rs | 68 +- ...ud_devices_complete_device_link_request.rs | 32 +- .../cloud_devices_get_device_link_response.rs | 27 +- ...ud_devices_prepare_device_link_response.rs | 37 +- sdks/full/rust/src/models/cloud_game_full.rs | 110 +- .../src/models/cloud_game_lobby_expenses.rs | 42 +- .../models/cloud_games_build_compression.rs | 36 +- .../rust/src/models/cloud_games_build_kind.rs | 36 +- ...cloud_games_create_cloud_token_response.rs | 21 +- .../cloud_games_create_game_build_request.rs | 59 +- .../cloud_games_create_game_build_response.rs | 45 +- ...loud_games_create_game_cdn_site_request.rs | 34 +- ...oud_games_create_game_cdn_site_response.rs | 37 +- .../models/cloud_games_create_game_request.rs | 40 +- .../cloud_games_create_game_response.rs | 19 +- ...cloud_games_create_game_version_request.rs | 32 +- ...loud_games_create_game_version_response.rs | 19 +- ..._games_delete_matchmaker_lobby_response.rs | 21 +- .../cloud_games_export_lobby_logs_request.rs | 19 +- .../cloud_games_export_lobby_logs_response.rs | 21 +- ...export_matchmaker_lobby_history_request.rs | 31 +- ...xport_matchmaker_lobby_history_response.rs | 21 +- ...ames_game_banner_upload_prepare_request.rs | 39 +- ...mes_game_banner_upload_prepare_response.rs | 30 +- ..._games_game_logo_upload_prepare_request.rs | 39 +- ...games_game_logo_upload_prepare_response.rs | 30 +- .../cloud_games_get_game_by_id_response.rs | 30 +- ...d_games_get_game_version_by_id_response.rs | 21 +- .../models/cloud_games_get_games_response.rs | 41 +- .../cloud_games_get_lobby_logs_response.rs | 41 +- .../cloud_games_list_game_builds_response.rs | 21 +- ...loud_games_list_game_cdn_sites_response.rs | 23 +- ...games_list_game_custom_avatars_response.rs | 23 +- .../rust/src/models/cloud_games_log_stream.rs | 36 +- ...namespaces_add_namespace_domain_request.rs | 21 +- ...amespaces_create_game_namespace_request.rs | 41 +- ...mespaces_create_game_namespace_response.rs | 19 +- ...ame_namespace_token_development_request.rs | 38 +- ...me_namespace_token_development_response.rs | 21 +- ...te_game_namespace_token_public_response.rs | 21 +- ..._get_analytics_matchmaker_live_response.rs | 23 +- ...paces_get_game_namespace_by_id_response.rs | 23 +- ...game_namespace_version_history_response.rs | 23 +- ...namespaces_get_namespace_lobby_response.rs | 56 +- ...cloud_games_namespaces_inspect_response.rs | 21 +- ...espaces_list_namespace_lobbies_response.rs | 23 +- ...ces_set_namespace_cdn_auth_type_request.rs | 21 +- ...le_namespace_domain_public_auth_request.rs | 21 +- ...ame_namespace_matchmaker_config_request.rs | 34 +- ...s_update_game_namespace_version_request.rs | 19 +- ..._update_namespace_cdn_auth_user_request.rs | 31 +- ...ame_namespace_matchmaker_config_request.rs | 34 +- ...me_namespace_matchmaker_config_response.rs | 23 +- ...espaces_validate_game_namespace_request.rs | 34 +- ...spaces_validate_game_namespace_response.rs | 23 +- ...ame_namespace_token_development_request.rs | 32 +- ...me_namespace_token_development_response.rs | 23 +- ...es_prepare_custom_avatar_upload_request.rs | 39 +- ...s_prepare_custom_avatar_upload_response.rs | 30 +- ...oud_games_reserve_version_name_response.rs | 23 +- .../cloud_games_validate_game_request.rs | 31 +- .../cloud_games_validate_game_response.rs | 21 +- ...oud_games_validate_game_version_request.rs | 32 +- ...ud_games_validate_game_version_response.rs | 23 +- .../cloud_get_ray_perf_logs_response.rs | 21 +- .../models/cloud_get_region_tiers_response.rs | 21 +- .../src/models/cloud_group_bank_source.rs | 31 +- .../rust/src/models/cloud_inspect_response.rs | 21 +- .../models/cloud_lobby_summary_analytics.rs | 137 +- .../src/models/cloud_logs_lobby_status.rs | 28 +- .../models/cloud_logs_lobby_status_stopped.rs | 40 +- .../src/models/cloud_logs_lobby_summary.rs | 79 +- .../rust/src/models/cloud_logs_perf_mark.rs | 44 +- .../rust/src/models/cloud_logs_perf_span.rs | 46 +- .../cloud_matchmaker_development_port.rs | 36 +- .../cloud_matchmaker_namespace_config.rs | 71 +- .../rust/src/models/cloud_namespace_config.rs | 49 +- .../rust/src/models/cloud_namespace_full.rs | 65 +- .../src/models/cloud_namespace_summary.rs | 58 +- .../src/models/cloud_namespace_version.rs | 44 +- .../rust/src/models/cloud_region_summary.rs | 67 +- .../full/rust/src/models/cloud_region_tier.rs | 89 +- .../src/models/cloud_region_tier_expenses.rs | 67 +- .../full/rust/src/models/cloud_svc_metrics.rs | 48 +- sdks/full/rust/src/models/cloud_svc_perf.rs | 68 +- .../rust/src/models/cloud_universal_region.rs | 189 ++- .../models/cloud_validate_group_request.rs | 21 +- .../models/cloud_validate_group_response.rs | 21 +- .../src/models/cloud_version_cdn_config.rs | 54 +- ...d_version_cdn_custom_headers_middleware.rs | 21 +- .../src/models/cloud_version_cdn_header.rs | 24 +- .../models/cloud_version_cdn_middleware.rs | 21 +- .../cloud_version_cdn_middleware_kind.rs | 21 +- .../src/models/cloud_version_cdn_route.rs | 41 +- .../rust/src/models/cloud_version_config.rs | 54 +- .../src/models/cloud_version_engine_config.rs | 45 +- .../cloud_version_engine_unreal_config.rs | 21 +- .../rust/src/models/cloud_version_full.rs | 49 +- .../models/cloud_version_identity_config.rs | 51 +- .../cloud_version_identity_custom_avatar.rs | 19 +- ...ud_version_identity_custom_display_name.rs | 21 +- .../cloud_version_matchmaker_captcha.rs | 47 +- ...oud_version_matchmaker_captcha_hcaptcha.rs | 38 +- ...rsion_matchmaker_captcha_hcaptcha_level.rs | 45 +- ...ud_version_matchmaker_captcha_turnstile.rs | 28 +- .../models/cloud_version_matchmaker_config.rs | 91 +- .../cloud_version_matchmaker_game_mode.rs | 87 +- ...ud_version_matchmaker_game_mode_actions.rs | 34 +- ...sion_matchmaker_game_mode_create_config.rs | 67 +- ...ersion_matchmaker_game_mode_find_config.rs | 40 +- ...tchmaker_game_mode_identity_requirement.rs | 39 +- ...atchmaker_game_mode_idle_lobbies_config.rs | 25 +- ...ersion_matchmaker_game_mode_join_config.rs | 40 +- ...oud_version_matchmaker_game_mode_region.rs | 28 +- ...ion_matchmaker_game_mode_runtime_docker.rs | 75 +- ...atchmaker_game_mode_runtime_docker_port.rs | 62 +- ...atchmaker_game_mode_verification_config.rs | 28 +- .../cloud_version_matchmaker_lobby_group.rs | 69 +- ...chmaker_lobby_group_idle_lobbies_config.rs | 35 +- ...d_version_matchmaker_lobby_group_region.rs | 39 +- ..._version_matchmaker_lobby_group_runtime.rs | 20 +- ...n_matchmaker_lobby_group_runtime_docker.rs | 50 +- ...aker_lobby_group_runtime_docker_env_var.rs | 25 +- ...chmaker_lobby_group_runtime_docker_port.rs | 47 +- .../cloud_version_matchmaker_network_mode.rs | 33 +- .../cloud_version_matchmaker_port_protocol.rs | 51 +- .../cloud_version_matchmaker_port_range.rs | 29 +- .../cloud_version_matchmaker_proxy_kind.rs | 33 +- .../rust/src/models/cloud_version_summary.rs | 42 +- sdks/full/rust/src/models/error_body.rs | 52 +- sdks/full/rust/src/models/game_handle.rs | 53 +- .../src/models/game_leaderboard_category.rs | 22 +- .../rust/src/models/game_platform_link.rs | 29 +- sdks/full/rust/src/models/game_profile.rs | 128 +- sdks/full/rust/src/models/game_stat.rs | 30 +- .../models/game_stat_aggregation_method.rs | 45 +- sdks/full/rust/src/models/game_stat_config.rs | 100 +- .../src/models/game_stat_format_method.rs | 63 +- .../src/models/game_stat_sorting_method.rs | 33 +- .../full/rust/src/models/game_stat_summary.rs | 31 +- sdks/full/rust/src/models/game_summary.rs | 80 +- ...ironments_create_service_token_response.rs | 21 +- sdks/full/rust/src/models/geo_coord.rs | 28 +- sdks/full/rust/src/models/geo_distance.rs | 25 +- .../src/models/global_event_notification.rs | 44 +- .../rust/src/models/group_banned_identity.rs | 30 +- .../models/group_consume_invite_response.rs | 19 +- .../src/models/group_create_invite_request.rs | 31 +- .../models/group_create_invite_response.rs | 21 +- .../rust/src/models/group_create_request.rs | 21 +- .../rust/src/models/group_create_response.rs | 19 +- .../rust/src/models/group_external_links.rs | 22 +- .../src/models/group_get_bans_response.rs | 40 +- .../src/models/group_get_invite_response.rs | 21 +- .../group_get_join_requests_response.rs | 40 +- .../src/models/group_get_members_response.rs | 40 +- .../src/models/group_get_profile_response.rs | 30 +- .../src/models/group_get_summary_response.rs | 21 +- sdks/full/rust/src/models/group_handle.rs | 56 +- .../rust/src/models/group_join_request.rs | 30 +- .../models/group_list_suggested_response.rs | 32 +- sdks/full/rust/src/models/group_member.rs | 22 +- .../group_prepare_avatar_upload_request.rs | 39 +- .../group_prepare_avatar_upload_response.rs | 30 +- sdks/full/rust/src/models/group_profile.rs | 127 +- sdks/full/rust/src/models/group_publicity.rs | 33 +- .../group_resolve_join_request_request.rs | 19 +- sdks/full/rust/src/models/group_summary.rs | 95 +- .../group_transfer_ownership_request.rs | 23 +- .../models/group_update_profile_request.rs | 37 +- .../models/group_validate_profile_request.rs | 37 +- .../models/group_validate_profile_response.rs | 21 +- .../rust/src/models/identity_dev_state.rs | 39 +- .../models/identity_email_linked_account.rs | 22 +- .../src/models/identity_external_links.rs | 32 +- .../rust/src/models/identity_game_activity.rs | 56 +- .../src/models/identity_game_link_status.rs | 42 +- .../models/identity_get_handles_response.rs | 30 +- .../models/identity_get_profile_response.rs | 30 +- .../models/identity_get_summaries_response.rs | 30 +- .../rust/src/models/identity_global_event.rs | 36 +- .../identity_global_event_identity_update.rs | 21 +- .../src/models/identity_global_event_kind.rs | 21 +- .../identity_global_event_notification.rs | 49 +- sdks/full/rust/src/models/identity_group.rs | 22 +- sdks/full/rust/src/models/identity_handle.rs | 65 +- .../src/models/identity_linked_account.rs | 28 +- .../identity_list_activities_response.rs | 51 +- .../identity_prepare_avatar_upload_request.rs | 39 +- ...identity_prepare_avatar_upload_response.rs | 30 +- sdks/full/rust/src/models/identity_profile.rs | 174 +- .../identity_set_game_activity_request.rs | 23 +- .../rust/src/models/identity_setup_request.rs | 26 +- .../src/models/identity_setup_response.rs | 48 +- .../identity_signup_for_beta_request.rs | 50 +- sdks/full/rust/src/models/identity_status.rs | 39 +- sdks/full/rust/src/models/identity_summary.rs | 90 +- .../models/identity_update_game_activity.rs | 50 +- .../models/identity_update_profile_request.rs | 37 +- .../models/identity_update_status_request.rs | 19 +- .../identity_validate_profile_response.rs | 19 +- .../models/identity_watch_events_response.rs | 30 +- .../matchmaker_create_lobby_response.rs | 37 +- .../matchmaker_custom_lobby_publicity.rs | 36 +- .../models/matchmaker_find_lobby_response.rs | 37 +- .../src/models/matchmaker_game_mode_info.rs | 22 +- .../models/matchmaker_game_mode_statistics.rs | 30 +- .../matchmaker_get_statistics_response.rs | 34 +- .../rust/src/models/matchmaker_join_lobby.rs | 47 +- .../models/matchmaker_join_lobby_response.rs | 37 +- .../rust/src/models/matchmaker_join_player.rs | 22 +- .../rust/src/models/matchmaker_join_port.rs | 51 +- .../src/models/matchmaker_join_port_range.rs | 29 +- .../rust/src/models/matchmaker_join_region.rs | 32 +- .../matchmaker_list_lobbies_response.rs | 37 +- .../matchmaker_list_regions_response.rs | 19 +- .../matchmaker_lobbies_create_request.rs | 73 +- .../models/matchmaker_lobbies_find_request.rs | 65 +- .../models/matchmaker_lobbies_join_request.rs | 38 +- .../matchmaker_lobbies_set_closed_request.rs | 19 +- .../rust/src/models/matchmaker_lobby_info.rs | 77 +- .../matchmaker_players_connected_request.rs | 19 +- .../rust/src/models/matchmaker_region_info.rs | 58 +- .../models/matchmaker_region_statistics.rs | 19 +- .../portal_get_game_profile_response.rs | 30 +- .../portal_get_suggested_games_response.rs | 32 +- ..._notification_register_firebase_service.rs | 19 +- .../portal_notification_register_service.rs | 19 +- .../portal_notification_unregister_service.rs | 30 +- .../provision_datacenters_get_tls_response.rs | 30 +- .../provision_servers_get_info_response.rs | 58 +- sdks/full/rust/src/models/servers_build.rs | 57 +- .../src/models/servers_build_compression.rs | 36 +- .../rust/src/models/servers_build_kind.rs | 36 +- .../models/servers_create_build_request.rs | 66 +- .../models/servers_create_build_response.rs | 39 +- .../servers_create_server_network_request.rs | 26 +- .../servers_create_server_port_request.rs | 33 +- .../models/servers_create_server_request.rs | 57 +- .../models/servers_create_server_response.rs | 21 +- .../servers_create_server_runtime_request.rs | 33 +- .../rust/src/models/servers_datacenter.rs | 29 +- .../src/models/servers_get_build_response.rs | 21 +- .../servers_get_server_logs_response.rs | 41 +- .../src/models/servers_get_server_response.rs | 21 +- .../full/rust/src/models/servers_lifecycle.rs | 21 +- .../models/servers_list_builds_response.rs | 21 +- .../servers_list_datacenters_response.rs | 21 +- .../models/servers_list_servers_response.rs | 21 +- .../rust/src/models/servers_log_stream.rs | 36 +- sdks/full/rust/src/models/servers_network.rs | 26 +- .../rust/src/models/servers_network_mode.rs | 36 +- .../servers_patch_build_tags_request.rs | 29 +- sdks/full/rust/src/models/servers_port.rs | 48 +- .../rust/src/models/servers_port_protocol.rs | 54 +- .../rust/src/models/servers_port_routing.rs | 27 +- .../full/rust/src/models/servers_resources.rs | 28 +- sdks/full/rust/src/models/servers_runtime.rs | 33 +- sdks/full/rust/src/models/servers_server.rs | 91 +- .../rust/src/models/upload_prepare_file.rs | 40 +- .../src/models/upload_presigned_request.rs | 53 +- sdks/full/rust/src/models/validation_error.rs | 22 +- sdks/full/rust/src/models/watch_response.rs | 22 +- 579 files changed, 13798 insertions(+), 12721 deletions(-) create mode 100644 .github/actions/docker-setup/action.yaml delete mode 100644 .github/workflows/bolt-check.yaml delete mode 100644 .github/workflows/bolt-test.yaml delete mode 100644 .github/workflows/detect-secrets.yaml delete mode 100644 .github/workflows/docker-publish.yaml create mode 100644 .github/workflows/docker.yaml delete mode 100644 .github/workflows/format-check.yaml rename .github/workflows/{release-please.yml => release-please.yaml} (92%) delete mode 100644 .github/workflows/service-containers-publish.yaml create mode 100644 .gitmodules create mode 100644 docker/client/Dockerfile create mode 100644 docker/client/Dockerfile.dockerignore delete mode 100644 docker/dev-monolith/Dockerfile.dockerignore rename docker/{dev-monolith => monolith}/Dockerfile (75%) create mode 100644 docker/monolith/Dockerfile.dockerignore rename docker/{dev-monolith => monolith}/README.md (86%) rename docker/{dev-monolith => monolith}/clickhouse/config.xml (100%) rename docker/{dev-monolith => monolith}/clickhouse/users.xml (100%) rename docker/{dev-monolith => monolith}/rivet-client/config.yaml (100%) rename docker/{dev-monolith => monolith}/rivet-server/config.yaml (100%) rename docker/{dev-monolith => monolith}/scripts/deno.jsonc (100%) rename docker/{dev-monolith => monolith}/scripts/setup_s6.ts (100%) rename docker/{dev-monolith => monolith}/seaweedfs/s3.json (100%) rename docker/{dev-monolith => monolith}/vector-client/vector.yaml (100%) rename docker/{dev-monolith => monolith}/vector-server/vector.yaml (100%) create mode 100644 docker/server/Dockerfile create mode 100644 docs-internal/infrastructure/rust/GIT_DEPENDENCIES.md create mode 100644 docs-internal/processes/GITHUB_ACTIONS.md create mode 160000 externals/cloudflare-rs create mode 160000 externals/deno create mode 160000 externals/nomad-client create mode 160000 externals/posthog-rs create mode 160000 externals/redis-rs create mode 160000 externals/rivet-term create mode 160000 externals/serde_array_query create mode 160000 externals/sqlx create mode 100644 packages/infra/client/deny.toml diff --git a/.dockerignore b/.dockerignore index 079814739b..caafd06a83 100644 --- a/.dockerignore +++ b/.dockerignore @@ -6,6 +6,7 @@ !sdks/full/rust/src !packages !resources/legacy/proto +!externals/ sdks/runtime svc/**/*.md diff --git a/.github/actions/docker-setup/action.yaml b/.github/actions/docker-setup/action.yaml new file mode 100644 index 0000000000..b9ba3a5d18 --- /dev/null +++ b/.github/actions/docker-setup/action.yaml @@ -0,0 +1,32 @@ +name: 'Docker Setup' +description: 'Set up Docker Buildx and log in to Docker Hub' +inputs: + docker_username: + description: 'Docker Hub username' + required: true + docker_password: + description: 'Docker Hub password' + required: true + github_token: + description: 'GitHub token' + required: true +runs: + using: 'composite' + steps: + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Log in to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ inputs.docker_username }} + password: ${{ inputs.docker_password }} + + # This will be used as a secret to authenticate with Git repo pulls + - name: Create .netrc file + run: | + echo "machine github.com" > ${{ runner.temp }}/netrc + echo "login x-access-token" >> ${{ runner.temp }}/netrc + echo "password ${{ inputs.github_token }}" >> ${{ runner.temp }}/netrc + shell: bash + diff --git a/.github/workflows/bolt-check.yaml b/.github/workflows/bolt-check.yaml deleted file mode 100644 index ca0f0e6858..0000000000 --- a/.github/workflows/bolt-check.yaml +++ /dev/null @@ -1,46 +0,0 @@ -name: bolt-check - -on: push - -concurrency: - group: check-${{ github.ref }} - cancel-in-progress: true - -defaults: - run: - # Enable fail-fast behavior - shell: bash -e {0} - -env: - store: /home/runner/nix - -jobs: - check: - runs-on: [self-hosted, linux, x64] - - steps: - # MARK: Git - - name: Checkout - uses: actions/checkout@v4 - with: - token: ${{ secrets.GITHUB_TOKEN }} - submodules: recursive - - - uses: ./.github/actions/pre-init - with: - SCCACHE_AWS_SECRET_ACCESS_KEY: ${{ secrets.SCCACHE_AWS_SECRET_ACCESS_KEY }} - SCCACHE_AWS_ACCESS_KEY_ID: ${{ secrets.SCCACHE_AWS_ACCESS_KEY_ID }} - OP_SERVICE_ACCOUNT_TOKEN: ${{ secrets.OP_SERVICE_ACCOUNT_TOKEN }} - - - name: Bolt Change Project - run: nix-shell --pure --run "bolt config set-namespace ci" - - - name: Bolt Generate Project - run: nix-shell --pure --run "bolt gen project" - - - name: Bolt Check - run: nix-shell --pure --run "bolt check -g --validate-format" - - - name: Force Parallel Failure - if: failure() - uses: andymckay/cancel-action@0.3 diff --git a/.github/workflows/bolt-test.yaml b/.github/workflows/bolt-test.yaml deleted file mode 100644 index 9d062807c2..0000000000 --- a/.github/workflows/bolt-test.yaml +++ /dev/null @@ -1,50 +0,0 @@ -name: bolt-test - -on: workflow_dispatch - -concurrency: - group: check-${{ github.ref }} - cancel-in-progress: true - -defaults: - run: - # Enable fail-fast behavior - shell: bash -e {0} - -env: - store: /home/runner/nix - -jobs: - test: - runs-on: [self-hosted, linux, x64] - - steps: - # MARK: Git - - name: Checkout - uses: actions/checkout@v4 - with: - token: ${{ secrets.GITHUB_TOKEN }} - submodules: recursive - - - name: LFS - run: git lfs pull - - - uses: ./.github/actions/pre-init - with: - SCCACHE_AWS_SECRET_ACCESS_KEY: ${{ secrets.SCCACHE_AWS_SECRET_ACCESS_KEY }} - SCCACHE_AWS_ACCESS_KEY_ID: ${{ secrets.SCCACHE_AWS_ACCESS_KEY_ID }} - OP_SERVICE_ACCOUNT_TOKEN: ${{ secrets.OP_SERVICE_ACCOUNT_TOKEN }} - - - name: Bolt Init - run: nix-shell --pure --run "bolt init --yes ci" - - - name: Bolt Test - run: nix-shell --pure --run "bolt test" - - - name: K3D Cleanup - if: always() - run: nix-shell --pure --run "k3d cluster delete rivet-ci" - - - name: Force Parallel Failure - if: failure() - uses: andymckay/cancel-action@0.3 diff --git a/.github/workflows/detect-secrets.yaml b/.github/workflows/detect-secrets.yaml deleted file mode 100644 index 074072fc2a..0000000000 --- a/.github/workflows/detect-secrets.yaml +++ /dev/null @@ -1,17 +0,0 @@ -name: detect-secrets - -on: push - -jobs: - detect-secrets-scan: - runs-on: ubuntu-20.04 - steps: - - name: Checkout repo - uses: actions/checkout@v4 - - - name: Install detect-secrets - run: pip install detect-secrets[gibberish]==1.4.0 - - - name: Check for new secrets - run: | - ./scripts/detect_secrets/check.sh diff --git a/.github/workflows/docker-publish.yaml b/.github/workflows/docker-publish.yaml deleted file mode 100644 index 97100ed9bc..0000000000 --- a/.github/workflows/docker-publish.yaml +++ /dev/null @@ -1,89 +0,0 @@ -name: docker-publish - -on: push - -defaults: - run: - # Enable fail-fast behavior - shell: bash -e {0} - -jobs: - rivet-local-binary-artifact-runner: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: docker/login-action@v2 - with: - registry: ghcr.io - username: ${{github.actor}} - password: ${{secrets.GITHUB_TOKEN}} - - name: Build rivet-local-binary-artifact-runner - run: | - GHCR_TAG="ghcr.io/rivet-gg/rivet-local-binary-artifact-runner:$(git rev-parse --short HEAD)" - docker build -t "$GHCR_TAG" -f infra/docker/rivet_local_binary_artifact_runner/Dockerfile . - docker push "$GHCR_TAG" - - golang-migrate: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: docker/login-action@v2 - with: - registry: ghcr.io - username: ${{github.actor}} - password: ${{secrets.GITHUB_TOKEN}} - - name: Build golang-migrate - run: | - GHCR_TAG="ghcr.io/rivet-gg/golang-migrate:$(git rev-parse --short HEAD)" - cd infra/docker/golang_migrate - docker build -t "$GHCR_TAG" . - docker push "$GHCR_TAG" - - redis: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: docker/login-action@v2 - with: - registry: ghcr.io - username: ${{github.actor}} - password: ${{secrets.GITHUB_TOKEN}} - - name: Build redis - run: | - GHCR_TAG="ghcr.io/rivet-gg/redis:$(git rev-parse --short HEAD)" - cd infra/docker/redis - docker build -t "$GHCR_TAG" . - docker push "$GHCR_TAG" - - # HACK: Disabled by default because of how long it takes to rebuild. - # apache-traffic-server: - # runs-on: ubuntu-latest - - # steps: - # - name: Install Nix - # run: | - # curl -L https://nixos.org/nix/install | sh - # . /home/runner/.nix-profile/etc/profile.d/nix.sh - - # - uses: actions/checkout@v2 - - # - name: Login to GitHub Container Registry - # uses: docker/login-action@v2 - # with: - # registry: ghcr.io - # username: ${{github.actor}} - # password: ${{secrets.GITHUB_TOKEN}} - - # - name: Build apache-traffic-server - # run: | - # # Build - # . /home/runner/.nix-profile/etc/profile.d/nix.sh - # cd infra/docker/traffic_server - # nix-build docker.nix --option system-features kvm - # docker load < result - - # # Push - # GHCR_TAG="ghcr.io/rivet-gg/apache-traffic-server:$(git rev-parse --short HEAD)" - # echo "Tagging: $GHCR_TAG" - # docker tag apache-traffic-server:latest "$GHCR_TAG" - # docker push "$GHCR_TAG" diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml new file mode 100644 index 0000000000..afee27ebd4 --- /dev/null +++ b/.github/workflows/docker.yaml @@ -0,0 +1,214 @@ +name: docker + +on: + push: + branches: + - main + tags: + - '*' + # For testing: + # pull_request: + +jobs: + build-and-push-server: + strategy: + matrix: + include: + - platform: linux/arm64 + runner: [self-hosted, Linux, ARM64] + - platform: linux/x86_64 + runner: [self-hosted, Linux, X64] + runs-on: ${{ matrix.runner }} + steps: + - name: Setup Docker on macOS + if: runner.os == 'macOS' + uses: douglascamata/setup-docker-macos-action@v1-alpha + + - uses: actions/checkout@v4 + with: + submodules: true + + - uses: ./.github/actions/docker-setup + with: + docker_username: ${{ secrets.DOCKER_CI_USERNAME }} + docker_password: ${{ secrets.DOCKER_CI_ACCESS_TOKEN }} + github_token: ${{ secrets.GITHUB_TOKEN}} + + - name: Metadata (rivetgg/server:full) + id: meta-full + uses: docker/metadata-action@v4 + with: + images: rivetgg/rivet-server + tags: | + type=sha,prefix=full- + type=ref,event=branch,prefix=full- + type=ref,event=tag,prefix=full- + + - name: Build & Push (rivetgg/server:full) + uses: docker/build-push-action@v4 + with: + context: . + push: true + tags: ${{ steps.meta-full.outputs.tags }} + file: docker/server/Dockerfile + target: full + platforms: ${{ matrix.platform }} + secret-files: | + netrc=${{ runner.temp }}/netrc + + - name: Metadata (rivetgg/server:slim) + id: meta-slim + uses: docker/metadata-action@v4 + with: + images: rivetgg/rivet-server + tags: | + type=sha,prefix=slim- + type=ref,event=branch,prefix=slim- + type=ref,event=tag,prefix=slim- + + - name: Build & Push (rivetgg/server:slim) + uses: docker/build-push-action@v4 + with: + context: . + push: true + tags: ${{ steps.meta-slim.outputs.tags }} + file: docker/server/Dockerfile + target: slim + platforms: ${{ matrix.platform }} + secret-files: | + netrc=${{ runner.temp }}/netrc + + build-and-push-client: + strategy: + matrix: + include: + - platform: linux/arm64 + runner: [self-hosted, Linux, ARM64] + - platform: linux/x86_64 + runner: [self-hosted, Linux, X64] + runs-on: ${{ matrix.runner }} + steps: + - name: Setup Docker on macOS + if: runner.os == 'macOS' + uses: douglascamata/setup-docker-macos-action@v1-alpha + + - uses: actions/checkout@v4 + with: + submodules: true + + - uses: ./.github/actions/docker-setup + with: + docker_username: ${{ secrets.DOCKER_CI_USERNAME }} + docker_password: ${{ secrets.DOCKER_CI_ACCESS_TOKEN }} + github_token: ${{ secrets.GITHUB_TOKEN}} + + - name: Metadata (rivetgg/client:full-runner) + id: meta-full-runner + uses: docker/metadata-action@v4 + with: + images: rivetgg/rivet-client + tags: | + type=sha,prefix=full-runner- + type=ref,event=branch,prefix=full-runner- + type=ref,event=tag,prefix=full-runner- + + - name: Build & Push (rivetgg/client:full-runner) + uses: docker/build-push-action@v4 + with: + context: . + push: true + tags: ${{ steps.meta-full-runner.outputs.tags }} + file: docker/client/Dockerfile + target: full-runner + platforms: ${{ matrix.platform }} + secret-files: | + netrc=${{ runner.temp }}/netrc + + - name: Metadata (rivetgg/client:isolate-v8-runner) + id: meta-isolate-v8-runner + uses: docker/metadata-action@v4 + with: + images: rivetgg/rivet-client + tags: | + type=sha,prefix=isolate-v8-runner- + type=ref,event=branch,prefix=isolate-v8-runner- + type=ref,event=tag,prefix=isolate-v8-runner- + + - name: Build & Push (rivetgg/client:isolate-v8-runner) + uses: docker/build-push-action@v4 + with: + context: . + push: true + tags: ${{ steps.meta-isolate-v8-runner.outputs.tags }} + file: docker/client/Dockerfile + target: isolate-v8-runner + platforms: ${{ matrix.platform }} + secret-files: | + netrc=${{ runner.temp }}/netrc + + - name: Metadata (rivetgg/client:container-runner) + id: meta-container-runner + uses: docker/metadata-action@v4 + with: + images: rivetgg/rivet-client + tags: | + type=sha,prefix=container-runner- + type=ref,event=branch,prefix=container-runner- + type=ref,event=tag,prefix=container-runner- + + - name: Build & Push (rivetgg/client:container-runner) + uses: docker/build-push-action@v4 + with: + context: . + push: true + tags: ${{ steps.meta-container-runner.outputs.tags }} + file: docker/client/Dockerfile + target: container-runner + platforms: ${{ matrix.platform }} + secret-files: | + netrc=${{ runner.temp }}/netrc + + build-and-push-monolith: + strategy: + matrix: + include: + - platform: linux/arm64 + runner: [self-hosted, Linux, ARM64] + - platform: linux/x86_64 + runner: [self-hosted, Linux, X64] + runs-on: ${{ matrix.runner }} + steps: + - name: Setup Docker on macOS + if: runner.os == 'macOS' + uses: douglascamata/setup-docker-macos-action@v1-alpha + + - uses: actions/checkout@v4 + with: + submodules: true + + - uses: ./.github/actions/docker-setup + with: + docker_username: ${{ secrets.DOCKER_CI_USERNAME }} + docker_password: ${{ secrets.DOCKER_CI_ACCESS_TOKEN }} + github_token: ${{ secrets.GITHUB_TOKEN}} + + - name: Metadata (rivetgg/rivet) + id: meta-monolith + uses: docker/metadata-action@v4 + with: + images: rivetgg/rivet + tags: | + type=sha,prefix=monolith- + type=ref,event=branch,prefix=monolith- + type=ref,event=tag,prefix=monolith- + + - name: Build & Push (rivetgg/rivet) + uses: docker/build-push-action@v4 + with: + context: . + push: true + tags: ${{ steps.meta-monolith.outputs.tags }} + file: docker/monolith/Dockerfile + platforms: ${{ matrix.platform }} + secret-files: | + netrc=${{ runner.temp }}/netrc diff --git a/.github/workflows/fern.yaml b/.github/workflows/fern.yaml index fa7de7f52d..90c1262448 100644 --- a/.github/workflows/fern.yaml +++ b/.github/workflows/fern.yaml @@ -11,22 +11,16 @@ jobs: fern-check: runs-on: ubuntu-20.04 steps: - - name: Checkout repo - uses: actions/checkout@v4 - - - name: Install Fern - run: npm install -g fern-api - + - uses: actions/checkout@v4 + - run: npm install -g fern-api - name: Check Fern API is valid - run: fern check - - # TODO: Re-enable once https://github.com/fern-api/fern/pull/2551 is resolved - # - name: Verify generated code is up to date - # env: - # FERN_TOKEN: ${{ secrets.FERN_TOKEN }} - # run: | - # ./scripts/fern/gen.sh - # git --no-pager diff --exit-code + run: ./scripts/fern/check.sh + - name: Verify generated code is up to date + env: + FERN_TOKEN: ${{ secrets.FERN_TOKEN }} + run: | + ./scripts/fern/gen.sh + git --no-pager diff --exit-code fern-publish: runs-on: ubuntu-20.04 diff --git a/.github/workflows/format-check.yaml b/.github/workflows/format-check.yaml deleted file mode 100644 index d396096185..0000000000 --- a/.github/workflows/format-check.yaml +++ /dev/null @@ -1,19 +0,0 @@ -name: format-check - -on: push - -jobs: - prettier: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v4 - - - name: Setup node - uses: actions/setup-node@v3 - - - name: Install dependencies - run: yarn install --frozen-lockfile - - - name: Validate Prettier config - run: npx prettier@3.0 --check . diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yaml similarity index 92% rename from .github/workflows/release-please.yml rename to .github/workflows/release-please.yaml index 2276820f67..b07829a2f6 100644 --- a/.github/workflows/release-please.yml +++ b/.github/workflows/release-please.yaml @@ -11,7 +11,7 @@ permissions: jobs: release-please: - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 steps: - uses: google-github-actions/release-please-action@v4 with: diff --git a/.github/workflows/rust.yaml b/.github/workflows/rust.yaml index d4a1af73a1..7679984d1d 100644 --- a/.github/workflows/rust.yaml +++ b/.github/workflows/rust.yaml @@ -1,26 +1,80 @@ name: rust -on: push +on: + pull_request: + push: + branches: + - main concurrency: group: rust-${{ github.ref }} cancel-in-progress: true +permissions: {} + defaults: run: # Enable fail-fast behavior shell: bash -e {0} +env: + # Disable incremental compilation for faster from-scratch builds + CARGO_INCREMENTAL: 0 + RUSTFLAGS: "--cfg tokio_unstable" + jobs: + cargo-fmt: + runs-on: ubuntu-20.04 + container: + image: rust:1.82.0 + steps: + - uses: actions/checkout@v4 + with: + submodules: true + - run: rustup component add rustfmt + - run: cargo fmt --check + - run: cd packages/infra/client && cargo fmt --check + + cargo-check-main: + runs-on: [self-hosted, Linux] + container: + image: rust:1.82.0 + steps: + - uses: actions/checkout@v4 + with: + submodules: true + - name: Install dependencies + run: | + apt-get update + apt-get install -y protobuf-compiler libpq-dev + - run: RUSTFLAGS="--cfg tokio_unstable" cargo check --release + + cargo-check-infra: + runs-on: [self-hosted, Linux] + container: + image: rust:1.82.0 + steps: + - uses: actions/checkout@v4 + with: + submodules: true + - name: Install dependencies + run: | + apt-get update + apt-get install -y protobuf-compiler libpq-dev + - run: cd packages/infra/client && RUSTFLAGS="--cfg tokio_unstable" cargo check --release + cargo-deny: - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 + container: + image: rust:1.82.0 steps: - uses: actions/checkout@v4 - - name: cargo deny (svc) - uses: EmbarkStudios/cargo-deny-action@v1 with: - manifest-path: svc/Cargo.toml - - name: cargo deny (lib/bolt) + submodules: true + - name: cargo deny + uses: EmbarkStudios/cargo-deny-action@v1 + - name: cargo deny (packages/infra/client) uses: EmbarkStudios/cargo-deny-action@v1 with: - manifest-path: lib/bolt/Cargo.toml + manifest-path: packages/infra/client/Cargo.toml + diff --git a/.github/workflows/service-containers-publish.yaml b/.github/workflows/service-containers-publish.yaml deleted file mode 100644 index 92072c0e60..0000000000 --- a/.github/workflows/service-containers-publish.yaml +++ /dev/null @@ -1,39 +0,0 @@ -name: service-containers-publish - -on: - push: - branches: - - main - -defaults: - run: - # Enable fail-fast behavior - shell: bash -e {0} - -env: - store: /home/runner/nix - -jobs: - service-containers-publish: - runs-on: [self-hosted, linux, x64] - - steps: - # MARK: Git - - name: Checkout - uses: actions/checkout@v4 - with: - token: ${{ secrets.GITHUB_TOKEN }} - submodules: recursive - - - uses: ./.github/actions/pre-init-distributed - with: - SCCACHE_AWS_SECRET_ACCESS_KEY: ${{ secrets.SCCACHE_AWS_SECRET_ACCESS_KEY }} - SCCACHE_AWS_ACCESS_KEY_ID: ${{ secrets.SCCACHE_AWS_ACCESS_KEY_ID }} - DOCKER_CI_ACCESS_TOKEN: ${{ secrets.DOCKER_CI_ACCESS_TOKEN }} - - - name: Bolt up and push containers - env: - AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} - AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - # Cannot use --pure `https://github.com/NixOS/nixpkgs/issues/66716` - run: nix-shell --run "bolt up --skip-deploy" diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000000..3661097646 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,24 @@ +[submodule "externals/sqlx"] + path = externals/sqlx + url = https://github.com/rivet-gg/sqlx +[submodule "externals/nomad-client"] + path = externals/nomad-client + url = https://github.com/rivet-gg/nomad-client +[submodule "externals/deno"] + path = externals/deno + url = https://github.com/rivet-gg/deno +[submodule "externals/posthog-rs"] + path = externals/posthog-rs + url = https://github.com/rivet-gg/posthog-rs +[submodule "externals/cloudflare-rs"] + path = externals/cloudflare-rs + url = https://github.com/cloudflare/cloudflare-rs +[submodule "externals/rivet-term"] + path = externals/rivet-term + url = https://github.com/rivet-gg/rivet-term +[submodule "externals/redis-rs"] + path = externals/redis-rs + url = https://github.com/rivet-gg/redis-rs +[submodule "externals/serde_array_query"] + path = externals/serde_array_query + url = https://github.com/rivet-gg/serde_array_query diff --git a/Cargo.lock b/Cargo.lock index bcbc17fdc2..3be14faeb7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1105,7 +1105,6 @@ dependencies = [ [[package]] name = "async-posthog" version = "0.2.3" -source = "git+https://github.com/rivet-gg/posthog-rs.git?rev=ef4e80e#ef4e80e57747ea7204794bce9a103bfeccefabf1" dependencies = [ "posthog-core", "reqwest 0.11.27", @@ -1202,9 +1201,9 @@ dependencies = [ [[package]] name = "aws-sdk-s3" -version = "1.60.0" +version = "1.61.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0506cc60e392e33712d47717d5ae5760a3b134bf8ee7aea7e43df3d7e2669ae0" +checksum = "0e531658a0397d22365dfe26c3e1c0c8448bf6a3a2d8a098ded802f2b1261615" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1705,9 +1704,9 @@ dependencies = [ [[package]] name = "bstr" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40723b8fb387abc38f4f4a37c09073622e41dd12327033091ef8950659e6dc0c" +checksum = "1a68f1f47cdf0ec8ee4b941b2eee2a80cb796db73118c0dd09ac63fbe405be22" dependencies = [ "memchr", ] @@ -1979,9 +1978,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.1.37" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40545c26d092346d8a8dab71ee48e7685a7a9cba76e634790c215b41a4a7b4cf" +checksum = "fd9de9f2205d5ef3fd67e685b0df337994ddd4495e2a28d185500d0e1edfea47" dependencies = [ "jobserver", "libc", @@ -2465,9 +2464,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.20" +version = "4.5.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97f376d85a664d5837dbae44bf546e6477a679ff6610010f17276f686d867e8" +checksum = "fb3b4b9e5a7c7514dfa52869339ee98b3156b0bfb4e8a77c4ff4babb64b1604f" dependencies = [ "clap_builder", "clap_derive", @@ -2475,9 +2474,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.20" +version = "4.5.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19bc80abd44e4bed93ca373a0704ccbd1b710dc5749406201bb018272808dc54" +checksum = "b17a95aa67cc7b5ebd32aa5370189aa0d79069ef1c64ce893bd30fb24bff20ec" dependencies = [ "anstream", "anstyle", @@ -2499,9 +2498,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" +checksum = "afb84c814227b90d6895e01398aee0d8033c00e7466aca416fb6a8e0eb19d8a7" [[package]] name = "clickhouse" @@ -2747,7 +2746,6 @@ dependencies = [ [[package]] name = "cloudflare" version = "0.12.0" -source = "git+https://github.com/cloudflare/cloudflare-rs.git?rev=f14720e42184ee176a97676e85ef2d2d85bc3aae#f14720e42184ee176a97676e85ef2d2d85bc3aae" dependencies = [ "chrono", "http 0.2.12", @@ -4096,9 +4094,9 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "flate2" -version = "1.0.34" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0" +checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" dependencies = [ "crc32fast", "miniz_oxide", @@ -5082,7 +5080,7 @@ dependencies = [ "http 1.1.0", "hyper 1.5.0", "hyper-util", - "rustls 0.23.16", + "rustls 0.23.17", "rustls-pki-types", "tokio", "tokio-rustls 0.26.0", @@ -5571,7 +5569,7 @@ dependencies = [ "rivet-runtime", "rivet-test", "rivet-util-job", - "rustls 0.20.9", + "rustls 0.21.12", "serde", "serde_json", "serde_urlencoded", @@ -5625,9 +5623,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.162" +version = "0.2.164" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18d287de67fe55fd7e1581fe933d965a5a9477b38e949cfa9f8574ef01506398" +checksum = "433bfe06b8c75da9b2e3fbea6e5329ff87748f0b144ef75306e674c3f6f7c13f" [[package]] name = "libgit2-sys" @@ -6698,7 +6696,6 @@ dependencies = [ [[package]] name = "nomad_client" version = "1.1.4" -source = "git+https://github.com/rivet-gg/nomad-client?rev=abb66bf0c30c7ff5b0c695dae952481c33e538b5#abb66bf0c30c7ff5b0c695dae952481c33e538b5" dependencies = [ "reqwest 0.11.27", "serde", @@ -7282,7 +7279,6 @@ checksum = "cc9c68a3f6da06753e9335d63e27f6b9754dd1920d941135b7ea8224f141adb2" [[package]] name = "posthog-core" version = "0.1.0" -source = "git+https://github.com/rivet-gg/posthog-rs.git?rev=ef4e80e#ef4e80e57747ea7204794bce9a103bfeccefabf1" dependencies = [ "chrono", "serde", @@ -7607,7 +7603,6 @@ dependencies = [ [[package]] name = "redis" version = "0.23.3" -source = "git+https://github.com/rivet-gg/redis-rs.git?rev=ac3e27fa1d133847db54354493f4d25957ad3466#ac3e27fa1d133847db54354493f4d25957ad3466" dependencies = [ "arc-swap", "async-trait", @@ -8571,7 +8566,6 @@ dependencies = [ [[package]] name = "rivet-term" version = "0.1.0" -source = "git+https://github.com/rivet-gg/rivet-term.git?rev=d539a07d2920d47b88410f20e6d106b497cff1f5#d539a07d2920d47b88410f20e6d106b497cff1f5" dependencies = [ "console", "derive_builder 0.12.0", @@ -8762,18 +8756,6 @@ dependencies = [ "webpki 0.21.4", ] -[[package]] -name = "rustls" -version = "0.20.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b80e3dec595989ea8510028f30c408a4630db12c9cbb8de34203b89d6577e99" -dependencies = [ - "log", - "ring 0.16.20", - "sct 0.7.1", - "webpki 0.22.4", -] - [[package]] name = "rustls" version = "0.21.12" @@ -8788,9 +8770,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.16" +version = "0.23.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eee87ff5d9b36712a58574e12e9f0ea80f915a5b0ac518d322b24a465617925e" +checksum = "7f1a745511c54ba6d4465e8d5dfbd81b45791756de28d4981af70d6dca128f1e" dependencies = [ "log", "once_cell", @@ -9025,7 +9007,6 @@ dependencies = [ [[package]] name = "serde_array_query" version = "0.2.0" -source = "git+https://github.com/rivet-gg/serde_array_query.git?rev=b9f8bfad77aea6f01dccc6cb77146b8c5daecaa3#b9f8bfad77aea6f01dccc6cb77146b8c5daecaa3" dependencies = [ "serde", "serde_urlencoded", @@ -9055,9 +9036,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.132" +version = "1.0.133" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03" +checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377" dependencies = [ "indexmap 2.6.0", "itoa 1.0.11", @@ -9357,7 +9338,6 @@ dependencies = [ [[package]] name = "sqlx" version = "0.8.2" -source = "git+https://github.com/rivet-gg/sqlx?rev=e7120f59b74fb6d83ac9b1d899b166bab31ba1d6#e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" dependencies = [ "sqlx-core", "sqlx-macros", @@ -9369,7 +9349,6 @@ dependencies = [ [[package]] name = "sqlx-core" version = "0.8.2" -source = "git+https://github.com/rivet-gg/sqlx?rev=e7120f59b74fb6d83ac9b1d899b166bab31ba1d6#e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" dependencies = [ "bit-vec", "bytes", @@ -9406,7 +9385,6 @@ dependencies = [ [[package]] name = "sqlx-macros" version = "0.8.2" -source = "git+https://github.com/rivet-gg/sqlx?rev=e7120f59b74fb6d83ac9b1d899b166bab31ba1d6#e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" dependencies = [ "proc-macro2", "quote", @@ -9418,7 +9396,6 @@ dependencies = [ [[package]] name = "sqlx-macros-core" version = "0.8.2" -source = "git+https://github.com/rivet-gg/sqlx?rev=e7120f59b74fb6d83ac9b1d899b166bab31ba1d6#e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" dependencies = [ "dotenvy", "either", @@ -9443,7 +9420,6 @@ dependencies = [ [[package]] name = "sqlx-mysql" version = "0.8.2" -source = "git+https://github.com/rivet-gg/sqlx?rev=e7120f59b74fb6d83ac9b1d899b166bab31ba1d6#e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" dependencies = [ "atoi", "base64 0.22.1", @@ -9485,7 +9461,6 @@ dependencies = [ [[package]] name = "sqlx-postgres" version = "0.8.2" -source = "git+https://github.com/rivet-gg/sqlx?rev=e7120f59b74fb6d83ac9b1d899b166bab31ba1d6#e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" dependencies = [ "atoi", "base64 0.22.1", @@ -9524,7 +9499,6 @@ dependencies = [ [[package]] name = "sqlx-sqlite" version = "0.8.2" -source = "git+https://github.com/rivet-gg/sqlx?rev=e7120f59b74fb6d83ac9b1d899b166bab31ba1d6#e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" dependencies = [ "atoi", "flume", @@ -10357,7 +10331,7 @@ version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" dependencies = [ - "rustls 0.23.16", + "rustls 0.23.17", "rustls-pki-types", "tokio", ] @@ -10933,7 +10907,7 @@ dependencies = [ "flate2", "log", "once_cell", - "rustls 0.23.16", + "rustls 0.23.17", "rustls-pki-types", "url", "webpki-roots 0.26.6", diff --git a/Cargo.toml b/Cargo.toml index 2ad6289003..b6cfb4dac3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [workspace] resolver = "2" -# Find all packages with: find . -name Cargo.toml | grep -v resources | grep -v "sdks/runtime" | grep -v "sdks/full/rust-cli" | grep -v "infra/client/" | grep -v "infra/legacy/job-runner" | sed -E 's|^./(.*)Cargo\.toml$|"\1",|' +# Find all packages with: find . -name Cargo.toml | grep -v resources | grep -v externals | grep -v "sdks/runtime" | grep -v "sdks/full/rust-cli" | grep -v "infra/client/" | grep -v "infra/legacy/job-runner" | sed -E 's|^./(.*)Cargo\.toml$|"\1",|' members = [ "sdks/full/rust/", "packages/infra/server/", @@ -281,8 +281,20 @@ members = [ "packages/services/custom-user-avatar/ops/list-for-game/", "packages/services/custom-user-avatar/ops/upload-complete/", "packages/services/debug/ops/email-res/", -"packages/services/tier/", "packages/services/cloud/standalone/default-create" -, "packages/services/user"] +"packages/services/tier/", +"packages/services/cloud/standalone/default-create", +"packages/services/user", +] +exclude = [ +"externals/cloudflare-rs", +"externals/deno", +"externals/nomad-client", +"externals/posthog-rs", +"externals/redis-rs", +"externals/rivet-term", +"externals/serde_array_query", +"externals/sqlx", +] # Speed up compilation [profile.dev] diff --git a/deny.toml b/deny.toml index b66354d71e..2acd2eafe0 100644 --- a/deny.toml +++ b/deny.toml @@ -5,6 +5,13 @@ ignore = [ # webpki 0.21.4 only used by aws-smithy-client 0.41.0 in our deprecated # generated clients. This is used only for type ser/de and old tests. "RUSTSEC-2023-0052", + # rustls 0.19.1 is only used by aws-smithy-client in our deprecated + # generated clients. This is used only for type ser/de and old tests. + "RUSTSEC-2024-0336", + # Unmaintained, low-impact crates + "RUSTSEC-2020-0163", + "RUSTSEC-2024-0370", + "RUSTSEC-2024-0384", ] [licenses] @@ -20,8 +27,6 @@ allow = [ "Zlib", "EPL-2.0", ] - -# We use the same config to scan multiple projects unused-allowed-license = "allow" [[licenses.exceptions]] diff --git a/docker/README.md b/docker/README.md index 3f1b66c1f0..1f3d6c34e2 100644 --- a/docker/README.md +++ b/docker/README.md @@ -1,5 +1,24 @@ # Docker Configurations -- [dev-monolith](./dev-monolith/) is intended running a Rivet server to develop your application with. It can be used in an external Docker Compose. -- [dev-full](./dev-full/) is intended for developing Rivet itself +- [server](./server/) is the production-ready Rivet server. +- [client](./client/) is the production-ready Rivet client. +- [monolith](./dev-monolith/) is for running a Rivet server & client to develop your application with in a single container. It can also be used in an external Docker Compose. +- [dev-full](./dev-full/) (Docker Compose) is for testing & developing Rivet itself. + +## netrc & GitHub + +Rivet depends on cloning a lot of repos. GitHub rate limits these pulls, so we +have to authenticate with a GitHub Token in order to successfully build these +images in GitHub Actions. + +To do this, we generate a `.netrc` file with `secrets.GITHUB_TOKEN` (see +`.github/actions/docker-setup`). This file gets mounted as a Docker secret in +the build stage. + +It's important that we don't use an `ARG` or `COPY` for the secert nor write it +to the file system, since this might expose the token in the released image. In +theory, all Docker images use a separate runner build stage from the builder +stage so we _could_ write the token to the builder filesystem to simplify +things, but this risk should be avoided in case the wrong image gets pushed or +the wrong artifact ends up in the final image. diff --git a/docker/client/Dockerfile b/docker/client/Dockerfile new file mode 100644 index 0000000000..5ee6547df8 --- /dev/null +++ b/docker/client/Dockerfile @@ -0,0 +1,36 @@ +# MARK: Builder +FROM rust:1.82.0-bullseye AS builder + +RUN apt-get update && apt-get install --yes protobuf-compiler pkg-config libssl-dev g++ git libpq-dev wget && \ + ln -s /bin/g++ /bin/musl-g++ && \ + ln -s /bin/gcc-ar /bin/musl-ar + +WORKDIR /app +COPY . . +RUN \ + --mount=type=secret,id=netrc,target=/root/.netrc,mode=0600 \ + --mount=type=cache,target=/usr/local/cargo/git,id=client-cargo-git \ + --mount=type=cache,target=/usr/local/cargo/registry,id=client-cargo-registry \ + --mount=type=cache,target=/app/packages/infra/client/target,id=client-target \ + cd packages/infra/client && \ + RUSTFLAGS="--cfg tokio_unstable" cargo build -vv --release --bin rivet-client --bin rivet-isolate-v8-runner --bin rivet-container-runner && \ + mkdir -p /app/dist && \ + mv target/release/rivet-client target/release/rivet-isolate-v8-runner target/release/rivet-container-runner /app/dist/ + +# MARK: Runner (Full) +FROM debian:12-slim AS full-runner +RUN DEBIAN_FRONTEND=noninteractive apt-get update -y && apt-get install -y --no-install-recommends ca-certificates +COPY --from=builder /app/dist/rivet-client /app/dist/rivet-isolate-v8-runner /app/dist/rivet-container-runner /usr/local/bin/ +ENTRYPOINT ["rivet-client"] + +# MARK: Runner (Isolate V8) +FROM debian:12-slim AS isolate-v8-runner +RUN DEBIAN_FRONTEND=noninteractive apt-get update -y && apt-get install -y --no-install-recommends ca-certificates +COPY --from=builder /app/dist/rivet-isolate-v8-runner /usr/local/bin/ +ENTRYPOINT ["rivet-client"] + +# MARK: Runner (Container) +FROM debian:12-slim AS container-runner +RUN DEBIAN_FRONTEND=noninteractive apt-get update -y && apt-get install -y --no-install-recommends ca-certificates +COPY --from=builder /app/dist/rivet-container-runner /usr/local/bin/ +ENTRYPOINT ["rivet-client"] diff --git a/docker/client/Dockerfile.dockerignore b/docker/client/Dockerfile.dockerignore new file mode 100644 index 0000000000..892c380b4e --- /dev/null +++ b/docker/client/Dockerfile.dockerignore @@ -0,0 +1,11 @@ +* + +!Cargo.lock +!Cargo.toml +!packages +!resources/legacy/proto +!sdks/full/rust/Cargo.toml +!sdks/full/rust/src +!externals/ + +sdks/runtime diff --git a/docker/dev-full/README.md b/docker/dev-full/README.md index 9c5ccbd99c..1e48b6ff43 100644 --- a/docker/dev-full/README.md +++ b/docker/dev-full/README.md @@ -2,3 +2,107 @@ This Docker Compose is intended for running a full development environment for Rivet. +## Required ports + +The following ports need to be open before running Rivet: + +- 8080-8082 (Rivet server) +- 9000 (S3) +- 20000-20100 (Rivet client host networking) + +## Operation + +### Start + +Start the cluster with: + +```bash +docker-compose -f docker/dev-full/docker-compose.yml up -d +``` + +This will start the cluster in detached mode. Once complete, visit the dashboard at [http://localhost:8080](http://localhost:8080). + +To test creating an actor end-to-end, run: + +```bash +./scripts/manual_tests/actors_e2e_js.ts +``` + +You should see an actor in the actor list in the dashboard. + +### Stop + +To shut down the Rivet cluster, run: + +```bash +docker-compose -f docker/dev-full/docker-compose.yml down +``` + +When you start the cluster again, your data will still be there. + +### Nuke from orbit + +To destroy all containers & volumes immediately, run: + +```bash +docker-compose -f docker/dev-full/docker-compose.yml down -v -t 0 +``` + +## Development + +### Rebuilding + +To rebuild all services, run: + +```bash +docker-compose -f docker/dev-full/docker-compose.yml up -d --build +``` + +To rebuild just the server, run: + +```bash +docker-compose -f docker/dev-full/docker-compose.yml up -d --build rivet-server +``` + +### Logs + +To fetch logs for a service, run: + +```bash +docker-compose -f docker/dev-full/docker-compose.yml logs {name} +``` + +#### Following + +To follow logs, run: + +```bash +docker-compose -f docker/dev-full/docker-compose.yml logs -f {name} +``` + +#### Grep + +It's common to use grep (or the more modern +[ripgrep](https://www.google.com/search?q=ripgrep&oq=ripgrep&sourceid=chrome&ie=UTF-8)) +to filter logs. + +For example, to find all errors in `rivet-server` with the 10 preceding lines, run: + +```bash +docker-compose -f docker/dev-full/docker-compose.yml logs rivet-server | grep -B 10 level=error +``` + +Logs for `rivet-server` and `rivet-client` can also be configured via the environment. See [here](TODO) for more information. + +## Troubleshooting + +### Have you tried turning it off and on again? + +If something gets _really_ screwed up, you can destroy the entire cluster with: + +```bash +docker-compose -f docker/dev-full/docker-compose.yml down -v -t 0 +``` + +This will destroy all containers & volumes immediately. + diff --git a/docker/dev-full/client.Dockerfile b/docker/dev-full/client.Dockerfile index 5d9147f42f..160e25ffac 100644 --- a/docker/dev-full/client.Dockerfile +++ b/docker/dev-full/client.Dockerfile @@ -8,9 +8,10 @@ RUN apt-get update && apt-get install --yes protobuf-compiler pkg-config libssl- WORKDIR /app COPY . . RUN \ - --mount=type=cache,target=/usr/local/cargo/git \ - --mount=type=cache,target=/usr/local/cargo/registry \ - --mount=type=cache,target=/app/packages/infra/client/target \ + --mount=type=secret,id=netrc,target=/root/.netrc,mode=0600 \ + --mount=type=cache,target=/usr/local/cargo/git,id=dev-full-client-cargo-git \ + --mount=type=cache,target=/usr/local/cargo/registry,id=dev-full-client-cargo-registry \ + --mount=type=cache,target=/app/packages/infra/client/target,id=dev-full-client-target \ cd packages/infra/client && \ RUSTFLAGS="--cfg tokio_unstable" cargo build --bin rivet-client --bin rivet-isolate-v8-runner --bin rivet-container-runner && \ mkdir -p /app/dist && \ diff --git a/docker/dev-full/client.Dockerfile.dockerignore b/docker/dev-full/client.Dockerfile.dockerignore index 35d1dabaa4..48005c319b 100644 --- a/docker/dev-full/client.Dockerfile.dockerignore +++ b/docker/dev-full/client.Dockerfile.dockerignore @@ -7,6 +7,5 @@ !resources/legacy/proto !sdks/full/rust/Cargo.toml !sdks/full/rust/src -!svc sdks/runtime diff --git a/docker/dev-full/docker-compose.yml b/docker/dev-full/docker-compose.yml index 66d262ef74..37d43a4ede 100644 --- a/docker/dev-full/docker-compose.yml +++ b/docker/dev-full/docker-compose.yml @@ -22,8 +22,8 @@ services: condition: service_healthy redis: condition: service_healthy - clickhouse: - condition: service_healthy + # clickhouse: + # condition: service_healthy nats: condition: service_healthy # seaweedfs: @@ -35,7 +35,7 @@ services: networks: - rivet-network healthcheck: - test: ["CMD", "curl", "-f", "http://127.0.0.1:8090/health"] + test: ["CMD", "curl", "-f", "http://127.0.0.1:8090/health/liveness"] interval: 2s timeout: 10s retries: 10 @@ -140,7 +140,7 @@ services: command: | server \ -dir /var/lib/seaweedfs \ - -master.raftHashicorp \ + -master.raftBootstrap -master.raftHashicorp \ -s3 -s3.config /etc/seaweedfs/s3.json -s3.port=9000 -s3.allowEmptyFolder=false -s3.allowDeleteBucketNotEmpty=false volumes: - ./seaweedfs:/etc/seaweedfs:ro diff --git a/docker/dev-full/rivet-server/config.yaml b/docker/dev-full/rivet-server/config.yaml index 4f9fc457a2..bd2053f019 100644 --- a/docker/dev-full/rivet-server/config.yaml +++ b/docker/dev-full/rivet-server/config.yaml @@ -15,16 +15,16 @@ server: persistent: url: redis://redis:6379 password: password - clickhouse: - http_url: http://clickhouse:8123 - native_url: clickhouse://clickhouse:9000 - username: default - password: default - provision_users: - vector: - username: vector - password: vector - role: write + # clickhouse: + # http_url: http://clickhouse:8123 + # native_url: clickhouse://clickhouse:9000 + # username: default + # password: default + # provision_users: + # vector: + # username: vector + # password: vector + # role: write s3: region: us-east-1 endpoint_internal: http://seaweedfs:9000 diff --git a/docker/dev-full/server.Dockerfile b/docker/dev-full/server.Dockerfile index 5463865b36..d2768e290a 100644 --- a/docker/dev-full/server.Dockerfile +++ b/docker/dev-full/server.Dockerfile @@ -34,9 +34,9 @@ COPY . . # Build and copy all binaries from target directory into an empty image (it is not # included in the output because of cache mount) RUN \ - --mount=type=cache,target=/usr/local/cargo/git \ - --mount=type=cache,target=/usr/local/cargo/registry \ - --mount=type=cache,target=/app/target \ + --mount=type=cache,target=/usr/local/cargo/git,id=dev-full-server-cargo-git \ + --mount=type=cache,target=/usr/local/cargo/registry,id=dev-full-server-cargo-registry \ + --mount=type=cache,target=/app/target,id=dev-full-server-target \ RUSTFLAGS="--cfg tokio_unstable" cargo build --bin rivet-server && \ mv target/debug/rivet-server /usr/bin/rivet-server && \ mkdir /etc/rivet-server diff --git a/docker/dev-monolith/Dockerfile.dockerignore b/docker/dev-monolith/Dockerfile.dockerignore deleted file mode 100644 index 62523a4da4..0000000000 --- a/docker/dev-monolith/Dockerfile.dockerignore +++ /dev/null @@ -1,17 +0,0 @@ -* - -!Cargo.lock -!Cargo.toml -!sdks/full/rust/Cargo.toml -!sdks/full/rust/src -!packages -!resources/legacy/proto - -!docker/dev-monolith -docker/dev-monolith/Dockerfile -docker/dev-monolith/Dockerfile.dockerignore -docker/dev-monolith/*.md - -sdks/runtime -svc/**/*.md - diff --git a/docker/dev-monolith/Dockerfile b/docker/monolith/Dockerfile similarity index 75% rename from docker/dev-monolith/Dockerfile rename to docker/monolith/Dockerfile index fb461aedde..2cf64232d2 100644 --- a/docker/dev-monolith/Dockerfile +++ b/docker/monolith/Dockerfile @@ -20,11 +20,12 @@ WORKDIR /app COPY . . RUN \ - --mount=type=cache,target=/usr/local/cargo/git \ - --mount=type=cache,target=/usr/local/cargo/registry \ - --mount=type=cache,target=/app/target \ - RUSTFLAGS="--cfg tokio_unstable" cargo build --bin rivet-server && \ - mv target/debug/rivet-server /usr/bin/rivet-server + --mount=type=secret,id=netrc,target=/root/.netrc,mode=0600 \ + --mount=type=cache,target=/usr/local/cargo/git,id=monolith-server-cargo-git \ + --mount=type=cache,target=/usr/local/cargo/registry,id=monolith-server-cargo-registry \ + --mount=type=cache,target=/app/target,id=monolith-server-target \ + RUSTFLAGS="--cfg tokio_unstable" cargo build -vv --release --bin rivet-server && \ + mv target/release/rivet-server /usr/bin/rivet-server # MARK: Rivet Client Builder FROM rust:1.82.0-bullseye AS client-builder @@ -36,13 +37,14 @@ RUN apt-get update && apt-get install --yes protobuf-compiler pkg-config libssl- WORKDIR /app COPY . . RUN \ - --mount=type=cache,target=/usr/local/cargo/git \ - --mount=type=cache,target=/usr/local/cargo/registry \ - --mount=type=cache,target=/app/packages/infra/client/target \ + --mount=type=secret,id=netrc,target=/root/.netrc,mode=0600 \ + --mount=type=cache,target=/usr/local/cargo/git,id=monolith-client-cargo-git \ + --mount=type=cache,target=/usr/local/cargo/registry,id=monolith-client-cargo-registry \ + --mount=type=cache,target=/app/packages/infra/client/target,id=monolith-client-target \ cd packages/infra/client && \ - RUSTFLAGS="--cfg tokio_unstable" cargo build --bin rivet-client --bin rivet-isolate-v8-runner --bin rivet-container-runner && \ + RUSTFLAGS="--cfg tokio_unstable" cargo build -vv --release --bin rivet-client --bin rivet-isolate-v8-runner --bin rivet-container-runner && \ mkdir -p /app/dist && \ - mv target/debug/rivet-client target/debug/rivet-isolate-v8-runner target/debug/rivet-container-runner /app/dist/ + mv target/release/rivet-client target/release/rivet-isolate-v8-runner target/release/rivet-container-runner /app/dist/ # MARK: Runner # @@ -92,8 +94,8 @@ RUN useradd -m -s /bin/bash clickhouse && \ echo "deb [signed-by=/usr/share/keyrings/clickhouse-keyring.gpg] https://packages.clickhouse.com/deb stable main" | tee /etc/apt/sources.list.d/clickhouse.list && \ apt-get update && \ DEBIAN_FRONTEND=noninteractive apt-get install -y clickhouse-client clickhouse-server -COPY ./docker/dev-monolith/clickhouse/config.xml /etc/clickhouse-server/config.d/config.xml -COPY ./docker/dev-monolith/clickhouse/users.xml /etc/clickhouse-server/users.d/users.xml +COPY ./docker/monolith/clickhouse/config.xml /etc/clickhouse-server/config.d/config.xml +COPY ./docker/monolith/clickhouse/users.xml /etc/clickhouse-server/users.d/users.xml # === NATS === RUN useradd -m -s /bin/bash nats && \ @@ -103,7 +105,7 @@ RUN useradd -m -s /bin/bash nats && \ # === SeaweedFS === RUN useradd -m -s /bin/bash seaweedfs && \ curl -sSLf https://github.com/seaweedfs/seaweedfs/releases/download/${SEAWEEDFS_VERSION}/linux_$(cat /tmp/arch).tar.gz | tar xz -C /usr/local/bin/ -COPY ./docker/dev-monolith/seaweedfs /etc/seaweedfs +COPY ./docker/monolith/seaweedfs /etc/seaweedfs # === Vector === RUN useradd -m -s /bin/bash vector-client && \ @@ -111,8 +113,8 @@ RUN useradd -m -s /bin/bash vector-client && \ curl -sSLf https://packages.timber.io/vector/${VECTOR_VERSION}/vector_${VECTOR_VERSION}-1_$(cat /tmp/arch).deb -o /tmp/vector.deb && \ dpkg -i /tmp/vector.deb && \ rm /tmp/vector.deb -COPY ./docker/dev-monolith/vector-client /etc/vector-client -COPY ./docker/dev-monolith/vector-server /etc/vector-server +COPY ./docker/monolith/vector-client /etc/vector-client +COPY ./docker/monolith/vector-server /etc/vector-server # === S6 Overlay === RUN curl -sSLf https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-noarch.tar.xz -o /tmp/s6-overlay-noarch.tar.xz && \ @@ -121,17 +123,17 @@ RUN curl -sSLf https://github.com/just-containers/s6-overlay/releases/download/v tar -C / -Jxpf /tmp/s6-overlay-$(uname -m).tar.xz # Setup S6 -COPY ./docker/dev-monolith/scripts /tmp/scripts +COPY ./docker/monolith/scripts /tmp/scripts RUN deno run --allow-read --allow-write /tmp/scripts/setup_s6.ts # === Rivet Server === RUN useradd -m -s /bin/bash rivet-server -COPY ./docker/dev-monolith/rivet-server /etc/rivet-server +COPY ./docker/monolith/rivet-server /etc/rivet-server # === Rivet Client === # # Rivet Client runs as root. -COPY ./docker/dev-monolith/rivet-client /etc/rivet-client +COPY ./docker/monolith/rivet-client /etc/rivet-client # === Copy Build Artifacts === COPY --from=server-builder /usr/bin/rivet-server /usr/local/bin/ @@ -139,12 +141,6 @@ COPY --from=client-builder /app/dist/rivet-client /usr/local/bin/ COPY --from=client-builder /app/dist/rivet-isolate-v8-runner /usr/local/bin/ COPY --from=client-builder /app/dist/rivet-container-runner /usr/local/bin/ -# Default environment variables -ENV RUST_BACKTRACE=1 \ - RUST_LOG=debug,hyper=info \ - RUST_LOG_TARGET=1 \ - RUST_LOG_SPAN_PATH=1 - # Expose ports VOLUME ["/data"] EXPOSE 8080 8081 8082 8080 20000-20100 diff --git a/docker/monolith/Dockerfile.dockerignore b/docker/monolith/Dockerfile.dockerignore new file mode 100644 index 0000000000..6efd3238e3 --- /dev/null +++ b/docker/monolith/Dockerfile.dockerignore @@ -0,0 +1,17 @@ +* + +!Cargo.lock +!Cargo.toml +!sdks/full/rust/Cargo.toml +!sdks/full/rust/src +!packages +!resources/legacy/proto +!externals/ + +!docker/monolith +docker/monolith/Dockerfile +docker/monolith/Dockerfile.dockerignore +docker/monolith/*.md + +sdks/runtime + diff --git a/docker/dev-monolith/README.md b/docker/monolith/README.md similarity index 86% rename from docker/dev-monolith/README.md rename to docker/monolith/README.md index 60700137e2..3e60b581e3 100644 --- a/docker/dev-monolith/README.md +++ b/docker/monolith/README.md @@ -9,7 +9,7 @@ This container is intended for quickly running Rivet with a single `docker run` Before running the image, it needs to be built: ```bash -docker build -f docker/dev-monolith/Dockerfile -t rivet . +docker build -f docker/monolith/Dockerfile -t rivet . ``` ### Run via `docker run` @@ -62,7 +62,7 @@ vector top --url http://0.0.0.0:9510/graphql ## Testing ```bash -docker build -f docker/dev-monolith/Dockerfile -t rivet . && docker run --name rivet --rm -v "/tmp/rivet-data:/data" -p 8080:8080 -p 9000:9000 -p 20000-20100:20000-20100 rivet +docker build -f docker/monolith/Dockerfile -t rivet . && docker run --name rivet --rm -v "/tmp/rivet-data:/data" -p 8080:8080 -p 9000:9000 -p 20000-20100:20000-20100 rivet ``` ## Port collisions diff --git a/docker/dev-monolith/clickhouse/config.xml b/docker/monolith/clickhouse/config.xml similarity index 100% rename from docker/dev-monolith/clickhouse/config.xml rename to docker/monolith/clickhouse/config.xml diff --git a/docker/dev-monolith/clickhouse/users.xml b/docker/monolith/clickhouse/users.xml similarity index 100% rename from docker/dev-monolith/clickhouse/users.xml rename to docker/monolith/clickhouse/users.xml diff --git a/docker/dev-monolith/rivet-client/config.yaml b/docker/monolith/rivet-client/config.yaml similarity index 100% rename from docker/dev-monolith/rivet-client/config.yaml rename to docker/monolith/rivet-client/config.yaml diff --git a/docker/dev-monolith/rivet-server/config.yaml b/docker/monolith/rivet-server/config.yaml similarity index 100% rename from docker/dev-monolith/rivet-server/config.yaml rename to docker/monolith/rivet-server/config.yaml diff --git a/docker/dev-monolith/scripts/deno.jsonc b/docker/monolith/scripts/deno.jsonc similarity index 100% rename from docker/dev-monolith/scripts/deno.jsonc rename to docker/monolith/scripts/deno.jsonc diff --git a/docker/dev-monolith/scripts/setup_s6.ts b/docker/monolith/scripts/setup_s6.ts similarity index 100% rename from docker/dev-monolith/scripts/setup_s6.ts rename to docker/monolith/scripts/setup_s6.ts diff --git a/docker/dev-monolith/seaweedfs/s3.json b/docker/monolith/seaweedfs/s3.json similarity index 100% rename from docker/dev-monolith/seaweedfs/s3.json rename to docker/monolith/seaweedfs/s3.json diff --git a/docker/dev-monolith/vector-client/vector.yaml b/docker/monolith/vector-client/vector.yaml similarity index 100% rename from docker/dev-monolith/vector-client/vector.yaml rename to docker/monolith/vector-client/vector.yaml diff --git a/docker/dev-monolith/vector-server/vector.yaml b/docker/monolith/vector-server/vector.yaml similarity index 100% rename from docker/dev-monolith/vector-server/vector.yaml rename to docker/monolith/vector-server/vector.yaml diff --git a/docker/server/Dockerfile b/docker/server/Dockerfile new file mode 100644 index 0000000000..9836f6966a --- /dev/null +++ b/docker/server/Dockerfile @@ -0,0 +1,72 @@ +# syntax=docker/dockerfile:1.2 + +# MARK: Builder +FROM rust:1.82.0-slim AS build + +RUN apt-get update && \ + DEBIAN_FRONTEND=noninteractive apt-get install -y \ + protobuf-compiler \ + pkg-config \ + libssl-dev \ + g++ \ + git \ + libpq-dev \ + wget \ + ca-certificates \ + openssl \ + curl \ + gpg + +WORKDIR /app + +COPY . . + +# Build and copy all binaries from target directory into an empty image (it is not +# included in the output because of cache mount) +RUN \ + --mount=type=secret,id=netrc,target=/root/.netrc,mode=0600 \ + --mount=type=cache,target=/usr/local/cargo/git,id=server-cargo-git \ + --mount=type=cache,target=/usr/local/cargo/registry,id=server-cargo-registry \ + --mount=type=cache,target=/app/target,id=server-target \ + RUSTFLAGS="--cfg tokio_unstable" cargo build -vv --bin rivet-server --release && \ + mv target/release/rivet-server /usr/bin/rivet-server && \ + mkdir /etc/rivet-server + +# MARK: Full +FROM debian:12.1-slim AS full + +# - Install curl for health checks +# - Install go-migrate for running migrations +# - Install database clients to be able to run `rivet db shell ...` (Redis, Postgres, ClickHouse) +RUN apt-get update && \ + DEBIAN_FRONTEND=noninteractive apt-get install -y \ + ca-certificates \ + openssl \ + curl \ + redis-tools \ + postgresql-client \ + gpg && \ + curl -fsSL 'https://packages.clickhouse.com/rpm/lts/repodata/repomd.xml.key' | gpg --dearmor -o /usr/share/keyrings/clickhouse-keyring.gpg && \ + echo "deb [signed-by=/usr/share/keyrings/clickhouse-keyring.gpg] https://packages.clickhouse.com/deb stable main" | tee /etc/apt/sources.list.d/clickhouse.list && \ + apt-get update && \ + DEBIAN_FRONTEND=noninteractive apt-get install -y clickhouse-client && \ + (curl -L https://github.com/golang-migrate/migrate/releases/download/v4.18.1/migrate.linux-amd64.tar.gz | tar xvz) && \ + mv migrate /usr/local/bin/migrate && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* + +COPY --from=build /usr/bin/rivet-server /usr/bin/rivet-server + +CMD ["/usr/bin/rivet-server"] + +# MARK: Slim +FROM debian:12.1-slim AS slim + +RUN DEBIAN_FRONTEND=noninteractive apt-get update -y && \ + apt-get install -y --no-install-recommends ca-certificates openssl && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* + +COPY --from=build /usr/bin/rivet-server /usr/bin/rivet-server + +CMD ["/usr/bin/rivet-server"] diff --git a/docs-internal/infrastructure/rust/GIT_DEPENDENCIES.md b/docs-internal/infrastructure/rust/GIT_DEPENDENCIES.md new file mode 100644 index 0000000000..d1c57cf46d --- /dev/null +++ b/docs-internal/infrastructure/rust/GIT_DEPENDENCIES.md @@ -0,0 +1,13 @@ +# Git Dependencies + +We opt to use submodules instead of Git dependencies because of complications with building: + +- Primariy, there are bugs with the Cargo git fetcher that cause it to not be + able to pull from GitHub Actions +- Development on externals is easier when developing in-place with a Git + submodule instead of having to push & update the ref every iteration +- Authenticating Git inside of a Docker build step is dangerous process that + can lead to accidentally leaking credentials + - Currently, we support mounting a netrc secret which is safe, but this + doesn't seem to solve the bugs with the Cargo git fetcher + diff --git a/docs-internal/processes/GITHUB_ACTIONS.md b/docs-internal/processes/GITHUB_ACTIONS.md new file mode 100644 index 0000000000..42b8c85a6d --- /dev/null +++ b/docs-internal/processes/GITHUB_ACTIONS.md @@ -0,0 +1,22 @@ +# GitHub Actions + +## When to use self hosted vs managed runners + +**Managed runners** + +Managed runners are good for running bursts of jobs in parallel, quickly. + +Use these for low-CPU intensive jobs, like formatting, linting, etc. Using +these for resource-hungry jobs will make those jobs take a long time and cost a +lot of money. + +**Self-hosted Runners** + +Self-hosted runners are good for running hardware intensive jobs quickly. +However, they have a fixed number of nodes that can run one job at a time each, +so we want to (a) always target 100% resource usage and (b) maintain as few of +these as possible in order to keep them cheap. + +Use these for CPU- & memory-intensive jobs. Using these for low-CPU intensive +jobs will cause jobs to queue up and take a long time to complete. + diff --git a/docs/scripts/buildcf.sh b/docs/scripts/buildcf.sh index df0712f5a3..1c6e866706 100755 --- a/docs/scripts/buildcf.sh +++ b/docs/scripts/buildcf.sh @@ -1,7 +1,10 @@ #!/bin/sh +set -euf + # Clone modules repository to parent directory -cd .. -git clone https://github.com/rivet-gg/modules.git --depth=1 --branch main -cd repo +( + cd .. && + git clone https://github.com/rivet-gg/modules.git --depth=1 --branch main +) yarn -next build && cp _redirects out/_redirects \ No newline at end of file +npx next build && cp _redirects out/_redirects diff --git a/docs/src/app/(v2)/docs/[...slug]/layout.tsx b/docs/src/app/(v2)/docs/[...slug]/layout.tsx index f591f4c67b..9a989fc618 100644 --- a/docs/src/app/(v2)/docs/[...slug]/layout.tsx +++ b/docs/src/app/(v2)/docs/[...slug]/layout.tsx @@ -8,8 +8,8 @@ function Subnav({ slug }) { const fullPath = `/docs/${slug.join('/')}`; return (
- {sitemap.map(({ title, href, sidebar }) => ( - {title} + {sitemap.map(({ title, href, sidebar }, i) => ( + {title} ))}
); diff --git a/docs/src/authors/forest-anderson/avatar.jpeg b/docs/src/authors/forest-anderson/avatar.jpeg index add0082dfa7977232a66d273a8e26c5ea08e0a1f..8bc4e62f794e2ebae0c10d8611efccd09e670dff 100644 GIT binary patch literal 28749 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 F`5#5zZ`%L> literal 271018 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

~U?2F}( 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

KG=(SZ8u|p+oK)%VUYD&~b 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�)eZ7Xx2KYZ5&k)i9#8?DBd7dBu8dGYZ1F}JFdOW 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%0DwGB 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 diff --git a/docs/src/authors/nathan-flurry/avatar.jpeg b/docs/src/authors/nathan-flurry/avatar.jpeg index 294284d5e95a175a5347b6dac6ebee6ffa0cb33f..521e661c18f67496a0a0412060b5e59697e65ee5 100644 GIT binary patch literal 29562 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 z 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

+eQ_L-NyPQ$2E&Lq+enpS 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 YEZNeMYywZO&Z-B%0Cn&H{yx9|*?p?p$p8QV diff --git a/docs/src/authors/nicholas-kissel/avatar.jpeg b/docs/src/authors/nicholas-kissel/avatar.jpeg index 748d1c839c5a4762dc985c6f0d1b3997affa11de..ce765264c0b7285ba12983daabe2bf67408ce37e 100644 GIT binary patch delta 15728 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 z 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�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

=+Wy0V&GD`|C+3wV?piqLM!&@Xf)6AE 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%0AP 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

auZ0UO_Qq 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%0DiP$JN=WH=YEsLJ$5QOW~ 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%0Aj_TUcPoG|XXO_=Cp`WU%X*GUV?9O0HW(HJC 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�g|ZYDGJ)aPGMxoH+Q15{}QOteXhNU`?3+!(=d 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%0DInS+``q_49EqP`Zo9>4Gs|cgQl>X~ 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�ETwB9adSKE9)+Z$sQdW+1o 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 Use Cases // - Curious about the technology -> Build with Rivet // - Just want to jump in -// - Poeple who want to run Open Source +// - People who want to run Open Source export const sitemap = [ { diff --git a/externals/cloudflare-rs b/externals/cloudflare-rs new file mode 160000 index 0000000000..f14720e421 --- /dev/null +++ b/externals/cloudflare-rs @@ -0,0 +1 @@ +Subproject commit f14720e42184ee176a97676e85ef2d2d85bc3aae diff --git a/externals/deno b/externals/deno new file mode 160000 index 0000000000..bd98563214 --- /dev/null +++ b/externals/deno @@ -0,0 +1 @@ +Subproject commit bd98563214c532c8dae97d918edb501fe1c72dbc diff --git a/externals/nomad-client b/externals/nomad-client new file mode 160000 index 0000000000..abb66bf0c3 --- /dev/null +++ b/externals/nomad-client @@ -0,0 +1 @@ +Subproject commit abb66bf0c30c7ff5b0c695dae952481c33e538b5 diff --git a/externals/posthog-rs b/externals/posthog-rs new file mode 160000 index 0000000000..ef4e80e577 --- /dev/null +++ b/externals/posthog-rs @@ -0,0 +1 @@ +Subproject commit ef4e80e57747ea7204794bce9a103bfeccefabf1 diff --git a/externals/redis-rs b/externals/redis-rs new file mode 160000 index 0000000000..ac3e27fa1d --- /dev/null +++ b/externals/redis-rs @@ -0,0 +1 @@ +Subproject commit ac3e27fa1d133847db54354493f4d25957ad3466 diff --git a/externals/rivet-term b/externals/rivet-term new file mode 160000 index 0000000000..d539a07d29 --- /dev/null +++ b/externals/rivet-term @@ -0,0 +1 @@ +Subproject commit d539a07d2920d47b88410f20e6d106b497cff1f5 diff --git a/externals/serde_array_query b/externals/serde_array_query new file mode 160000 index 0000000000..b9f8bfad77 --- /dev/null +++ b/externals/serde_array_query @@ -0,0 +1 @@ +Subproject commit b9f8bfad77aea6f01dccc6cb77146b8c5daecaa3 diff --git a/externals/sqlx b/externals/sqlx new file mode 160000 index 0000000000..e7120f59b7 --- /dev/null +++ b/externals/sqlx @@ -0,0 +1 @@ +Subproject commit e7120f59b74fb6d83ac9b1d899b166bab31ba1d6 diff --git a/packages/api/traefik-provider/Cargo.toml b/packages/api/traefik-provider/Cargo.toml index d6b6544a6c..304de1374d 100644 --- a/packages/api/traefik-provider/Cargo.toml +++ b/packages/api/traefik-provider/Cargo.toml @@ -43,8 +43,7 @@ rivet-config = { version = "0.1.0", path = "../../common/config" } rivet-env = { version = "0.1.0", path = "../../common/env" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../externals/sqlx" default-features = false features = ["json"] diff --git a/packages/common/api-helper/build/Cargo.toml b/packages/common/api-helper/build/Cargo.toml index 628d0964b8..a798393685 100644 --- a/packages/common/api-helper/build/Cargo.toml +++ b/packages/common/api-helper/build/Cargo.toml @@ -51,8 +51,7 @@ url = "2.2.2" uuid = { version = "1", features = ["v4"] } [dependencies.serde_array_query] -git = "https://github.com/rivet-gg/serde_array_query.git" -rev = "b9f8bfad77aea6f01dccc6cb77146b8c5daecaa3" # pragma: allowlist secret +path = "../../../../externals/serde_array_query" [dev-dependencies] chirp-worker = { path = "../../chirp/worker" } diff --git a/packages/common/cache/build/Cargo.toml b/packages/common/cache/build/Cargo.toml index 5b7eb61b82..651105becd 100644 --- a/packages/common/cache/build/Cargo.toml +++ b/packages/common/cache/build/Cargo.toml @@ -26,8 +26,7 @@ uuid = { version = "1", features = ["v4"] } [dependencies.redis] # TODO: https://github.com/rivet-gg/rivet/issues/508 -git = "https://github.com/rivet-gg/redis-rs.git" -rev = "ac3e27fa1d133847db54354493f4d25957ad3466" +path = "../../../../externals/redis-rs/redis" default-features = false features = [ "keep-alive", diff --git a/packages/common/chirp-workflow/core/Cargo.toml b/packages/common/chirp-workflow/core/Cargo.toml index 6dbd85f456..4a6e4a266b 100644 --- a/packages/common/chirp-workflow/core/Cargo.toml +++ b/packages/common/chirp-workflow/core/Cargo.toml @@ -38,8 +38,7 @@ tracing-subscriber = { version = "0.3.18", features = ["env-filter"] } uuid = { version = "1.8.0", features = ["v4", "serde"] } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../externals/sqlx" default-features = false features = [ "runtime-tokio", diff --git a/packages/common/chirp/perf/Cargo.toml b/packages/common/chirp/perf/Cargo.toml index db64d9266d..3b58865850 100644 --- a/packages/common/chirp/perf/Cargo.toml +++ b/packages/common/chirp/perf/Cargo.toml @@ -22,8 +22,7 @@ features = ["v4", "serde"] [dependencies.redis] # TODO: https://github.com/rivet-gg/rivet/issues/508 -git = "https://github.com/rivet-gg/redis-rs.git" -rev = "ac3e27fa1d133847db54354493f4d25957ad3466" +path = "../../../../externals/redis-rs/redis" default-features = false features = [ "keep-alive", diff --git a/packages/common/chirp/worker/Cargo.toml b/packages/common/chirp/worker/Cargo.toml index 73a96a5c52..4071f504bf 100644 --- a/packages/common/chirp/worker/Cargo.toml +++ b/packages/common/chirp/worker/Cargo.toml @@ -50,8 +50,7 @@ features = ["v4", "serde"] [dependencies.redis] # TODO: https://github.com/rivet-gg/rivet/issues/508 -git = "https://github.com/rivet-gg/redis-rs.git" -rev = "ac3e27fa1d133847db54354493f4d25957ad3466" +path = "../../../../externals/redis-rs/redis" default-features = false features = [ "keep-alive", diff --git a/packages/common/nomad-util/Cargo.toml b/packages/common/nomad-util/Cargo.toml index 4c821ca7e0..c969c89143 100644 --- a/packages/common/nomad-util/Cargo.toml +++ b/packages/common/nomad-util/Cargo.toml @@ -22,5 +22,4 @@ tracing = "0.1" [dependencies.nomad_client_new] package = "nomad_client" -git = "https://github.com/rivet-gg/nomad-client" -rev = "abb66bf0c30c7ff5b0c695dae952481c33e538b5" # pragma: allowlist secret +path = "../../../externals/nomad-client" diff --git a/packages/common/pools/Cargo.toml b/packages/common/pools/Cargo.toml index 9de05e669f..710fbf386c 100644 --- a/packages/common/pools/Cargo.toml +++ b/packages/common/pools/Cargo.toml @@ -24,8 +24,7 @@ url = "2.4" rivet-config = { version = "0.1.0", path = "../config" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../externals/sqlx" default-features = false features = [ "runtime-tokio", @@ -40,8 +39,7 @@ features = [ [dependencies.redis] # TODO: https://github.com/rivet-gg/rivet/issues/508 -git = "https://github.com/rivet-gg/redis-rs.git" -rev = "ac3e27fa1d133847db54354493f4d25957ad3466" +path = "../../../externals/redis-rs/redis" default-features = false features = [ "keep-alive", diff --git a/packages/common/redis-util/Cargo.toml b/packages/common/redis-util/Cargo.toml index 0b377b2f94..ae41becf99 100644 --- a/packages/common/redis-util/Cargo.toml +++ b/packages/common/redis-util/Cargo.toml @@ -11,7 +11,6 @@ regex = "1.5" [dependencies.redis] # TODO: https://github.com/rivet-gg/rivet/issues/508 -git = "https://github.com/rivet-gg/redis-rs.git" -rev = "ac3e27fa1d133847db54354493f4d25957ad3466" +path = "../../../externals/redis-rs/redis" default-features = false diff --git a/packages/common/util/core/Cargo.toml b/packages/common/util/core/Cargo.toml index 7f2e49e05e..1f45e9025c 100644 --- a/packages/common/util/core/Cargo.toml +++ b/packages/common/util/core/Cargo.toml @@ -39,8 +39,7 @@ types-proto = { path = "../../types-proto/core" } uuid = { version = "1", features = ["v4", "serde"] } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../externals/sqlx" default-features = false features = [ "runtime-tokio", diff --git a/packages/infra/client/Cargo.lock b/packages/infra/client/Cargo.lock index fd143561fc..665490925d 100644 --- a/packages/infra/client/Cargo.lock +++ b/packages/infra/client/Cargo.lock @@ -141,9 +141,9 @@ dependencies = [ [[package]] name = "allocator-api2" -version = "0.2.18" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" +checksum = "45862d1c77f2228b9e10bc609d5bc203d86ebc9b87ad8d5d5167a6c9abf739d9" [[package]] name = "android-tzdata" @@ -162,9 +162,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.91" +version = "1.0.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c042108f3ed77fd83760a5fd79b53be043192bb3b9dba91d8c574c0ada7850c8" +checksum = "4c95c10ba0b00a02636238b814946408b1322d5ac4760326e6fb8ec956d85775" [[package]] name = "arraydeque" @@ -244,7 +244,7 @@ dependencies = [ "proc-macro2", "quote", "swc_macros_common", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] @@ -280,7 +280,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] @@ -291,7 +291,7 @@ checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] @@ -428,13 +428,13 @@ dependencies = [ "lazy_static", "lazycell", "log", - "prettyplease 0.2.24", + "prettyplease 0.2.25", "proc-macro2", "quote", "regex", "rustc-hash", "shlex", - "syn 2.0.82", + "syn 2.0.87", "which 4.4.2", ] @@ -599,9 +599,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.1.31" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2e7962b54006dcfcc61cb72735f4d89bb97061dd6a7ed882ec6b8ee53714c6f" +checksum = "fd9de9f2205d5ef3fd67e685b0df337994ddd4495e2a28d185500d0e1edfea47" dependencies = [ "shlex", ] @@ -712,17 +712,16 @@ dependencies = [ [[package]] name = "config" -version = "0.14.0" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7328b20597b53c2454f0b1919720c25c7339051c02b72b7e05409e00b14132be" +checksum = "68578f196d2a33ff61b27fae256c3164f65e36382648e30666dde05b8cc9dfdf" dependencies = [ "async-trait", - "lazy_static", "nom 7.1.3", "pathdiff", "serde", "serde_json", - "yaml-rust", + "yaml-rust2", ] [[package]] @@ -766,9 +765,9 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" +checksum = "0ca741a962e1b0bff6d724a1a0958b686406e853bb14061f218562e1896f95e6" dependencies = [ "libc", ] @@ -896,7 +895,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] @@ -958,7 +957,7 @@ dependencies = [ "once_cell", "percent-encoding", "serde", - "sourcemap 9.0.0", + "sourcemap 9.1.0", "swc_atoms", "swc_common", "swc_config", @@ -989,7 +988,6 @@ dependencies = [ [[package]] name = "deno_broadcast_channel" version = "0.165.0" -source = "git+https://github.com/rivet-gg/deno?rev=bd98563214c532c8dae97d918edb501fe1c72dbc#bd98563214c532c8dae97d918edb501fe1c72dbc" dependencies = [ "async-trait", "deno_core", @@ -1001,7 +999,6 @@ dependencies = [ [[package]] name = "deno_cache" version = "0.103.0" -source = "git+https://github.com/rivet-gg/deno?rev=bd98563214c532c8dae97d918edb501fe1c72dbc#bd98563214c532c8dae97d918edb501fe1c72dbc" dependencies = [ "async-trait", "deno_core", @@ -1015,7 +1012,6 @@ dependencies = [ [[package]] name = "deno_canvas" version = "0.40.0" -source = "git+https://github.com/rivet-gg/deno?rev=bd98563214c532c8dae97d918edb501fe1c72dbc#bd98563214c532c8dae97d918edb501fe1c72dbc" dependencies = [ "deno_core", "deno_webgpu", @@ -1027,7 +1023,6 @@ dependencies = [ [[package]] name = "deno_console" version = "0.171.0" -source = "git+https://github.com/rivet-gg/deno?rev=bd98563214c532c8dae97d918edb501fe1c72dbc#bd98563214c532c8dae97d918edb501fe1c72dbc" dependencies = [ "deno_core", ] @@ -1073,7 +1068,6 @@ checksum = "a13951ea98c0a4c372f162d669193b4c9d991512de9f2381dd161027f34b26b1" [[package]] name = "deno_cron" version = "0.51.0" -source = "git+https://github.com/rivet-gg/deno?rev=bd98563214c532c8dae97d918edb501fe1c72dbc#bd98563214c532c8dae97d918edb501fe1c72dbc" dependencies = [ "anyhow", "async-trait", @@ -1087,7 +1081,6 @@ dependencies = [ [[package]] name = "deno_crypto" version = "0.185.0" -source = "git+https://github.com/rivet-gg/deno?rev=bd98563214c532c8dae97d918edb501fe1c72dbc#bd98563214c532c8dae97d918edb501fe1c72dbc" dependencies = [ "aes", "aes-gcm", @@ -1123,7 +1116,6 @@ dependencies = [ [[package]] name = "deno_fetch" version = "0.195.0" -source = "git+https://github.com/rivet-gg/deno?rev=bd98563214c532c8dae97d918edb501fe1c72dbc#bd98563214c532c8dae97d918edb501fe1c72dbc" dependencies = [ "base64 0.21.7", "bytes", @@ -1155,7 +1147,6 @@ dependencies = [ [[package]] name = "deno_ffi" version = "0.158.0" -source = "git+https://github.com/rivet-gg/deno?rev=bd98563214c532c8dae97d918edb501fe1c72dbc#bd98563214c532c8dae97d918edb501fe1c72dbc" dependencies = [ "deno_core", "deno_permissions", @@ -1173,7 +1164,6 @@ dependencies = [ [[package]] name = "deno_fs" version = "0.81.0" -source = "git+https://github.com/rivet-gg/deno?rev=bd98563214c532c8dae97d918edb501fe1c72dbc#bd98563214c532c8dae97d918edb501fe1c72dbc" dependencies = [ "async-trait", "base32", @@ -1195,7 +1185,6 @@ dependencies = [ [[package]] name = "deno_http" version = "0.169.0" -source = "git+https://github.com/rivet-gg/deno?rev=bd98563214c532c8dae97d918edb501fe1c72dbc#bd98563214c532c8dae97d918edb501fe1c72dbc" dependencies = [ "async-compression", "async-trait", @@ -1232,7 +1221,6 @@ dependencies = [ [[package]] name = "deno_io" version = "0.81.0" -source = "git+https://github.com/rivet-gg/deno?rev=bd98563214c532c8dae97d918edb501fe1c72dbc#bd98563214c532c8dae97d918edb501fe1c72dbc" dependencies = [ "async-trait", "deno_core", @@ -1254,7 +1242,6 @@ dependencies = [ [[package]] name = "deno_kv" version = "0.79.0" -source = "git+https://github.com/rivet-gg/deno?rev=bd98563214c532c8dae97d918edb501fe1c72dbc#bd98563214c532c8dae97d918edb501fe1c72dbc" dependencies = [ "anyhow", "async-trait", @@ -1296,7 +1283,6 @@ dependencies = [ [[package]] name = "deno_napi" version = "0.102.0" -source = "git+https://github.com/rivet-gg/deno?rev=bd98563214c532c8dae97d918edb501fe1c72dbc#bd98563214c532c8dae97d918edb501fe1c72dbc" dependencies = [ "deno_core", "deno_permissions", @@ -1319,7 +1305,6 @@ dependencies = [ [[package]] name = "deno_net" version = "0.163.0" -source = "git+https://github.com/rivet-gg/deno?rev=bd98563214c532c8dae97d918edb501fe1c72dbc#bd98563214c532c8dae97d918edb501fe1c72dbc" dependencies = [ "deno_core", "deno_permissions", @@ -1336,7 +1321,6 @@ dependencies = [ [[package]] name = "deno_node" version = "0.108.0" -source = "git+https://github.com/rivet-gg/deno?rev=bd98563214c532c8dae97d918edb501fe1c72dbc#bd98563214c532c8dae97d918edb501fe1c72dbc" dependencies = [ "aead-gcm-stream", "aes", @@ -1435,7 +1419,7 @@ dependencies = [ "quote", "strum 0.25.0", "strum_macros 0.25.3", - "syn 2.0.82", + "syn 2.0.87", "thiserror", ] @@ -1467,7 +1451,6 @@ dependencies = [ [[package]] name = "deno_permissions" version = "0.31.0" -source = "git+https://github.com/rivet-gg/deno?rev=bd98563214c532c8dae97d918edb501fe1c72dbc#bd98563214c532c8dae97d918edb501fe1c72dbc" dependencies = [ "deno_core", "deno_path_util", @@ -1485,7 +1468,6 @@ dependencies = [ [[package]] name = "deno_runtime" version = "0.180.0" -source = "git+https://github.com/rivet-gg/deno?rev=bd98563214c532c8dae97d918edb501fe1c72dbc#bd98563214c532c8dae97d918edb501fe1c72dbc" dependencies = [ "deno_ast", "deno_broadcast_channel", @@ -1583,11 +1565,10 @@ dependencies = [ [[package]] name = "deno_tls" version = "0.158.0" -source = "git+https://github.com/rivet-gg/deno?rev=bd98563214c532c8dae97d918edb501fe1c72dbc#bd98563214c532c8dae97d918edb501fe1c72dbc" dependencies = [ "deno_core", "deno_native_certs", - "rustls 0.23.15", + "rustls 0.23.17", "rustls-pemfile 2.2.0", "rustls-tokio-stream", "rustls-webpki 0.102.8", @@ -1610,7 +1591,6 @@ dependencies = [ [[package]] name = "deno_url" version = "0.171.0" -source = "git+https://github.com/rivet-gg/deno?rev=bd98563214c532c8dae97d918edb501fe1c72dbc#bd98563214c532c8dae97d918edb501fe1c72dbc" dependencies = [ "deno_core", "urlpattern", @@ -1619,7 +1599,6 @@ dependencies = [ [[package]] name = "deno_web" version = "0.202.0" -source = "git+https://github.com/rivet-gg/deno?rev=bd98563214c532c8dae97d918edb501fe1c72dbc#bd98563214c532c8dae97d918edb501fe1c72dbc" dependencies = [ "async-trait", "base64-simd 0.8.0", @@ -1637,7 +1616,6 @@ dependencies = [ [[package]] name = "deno_webgpu" version = "0.138.0" -source = "git+https://github.com/rivet-gg/deno?rev=bd98563214c532c8dae97d918edb501fe1c72dbc#bd98563214c532c8dae97d918edb501fe1c72dbc" dependencies = [ "deno_core", "raw-window-handle", @@ -1650,7 +1628,6 @@ dependencies = [ [[package]] name = "deno_webidl" version = "0.171.0" -source = "git+https://github.com/rivet-gg/deno?rev=bd98563214c532c8dae97d918edb501fe1c72dbc#bd98563214c532c8dae97d918edb501fe1c72dbc" dependencies = [ "deno_core", ] @@ -1658,7 +1635,6 @@ dependencies = [ [[package]] name = "deno_websocket" version = "0.176.0" -source = "git+https://github.com/rivet-gg/deno?rev=bd98563214c532c8dae97d918edb501fe1c72dbc#bd98563214c532c8dae97d918edb501fe1c72dbc" dependencies = [ "bytes", "deno_core", @@ -1680,7 +1656,6 @@ dependencies = [ [[package]] name = "deno_webstorage" version = "0.166.0" -source = "git+https://github.com/rivet-gg/deno?rev=bd98563214c532c8dae97d918edb501fe1c72dbc#bd98563214c532c8dae97d918edb501fe1c72dbc" dependencies = [ "deno_core", "deno_web", @@ -1699,25 +1674,25 @@ dependencies = [ [[package]] name = "denokv_proto" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25e4ca7a6388ad11c5b8d8ad2300dbd57cdd1ba20fe7feb25aa5da8ae0ea83fd" +checksum = "f7ba1f99ed11a9c11e868a8521b1f71a7e1aba785d7f42ea9ecbdc01146c89ec" dependencies = [ "anyhow", "async-trait", "chrono", "futures", "num-bigint", - "prost 0.11.9", + "prost 0.13.3", "serde", "uuid", ] [[package]] name = "denokv_remote" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63bf273105c8ea5497fff56ec2729f72898347359b385ec9420158230a07ce67" +checksum = "08ed833073189e8f6d03155fe3b05a024e75e29d8a28a4c2e9ec3b5c925e727b" dependencies = [ "anyhow", "async-stream", @@ -1728,7 +1703,7 @@ dependencies = [ "futures", "http 1.1.0", "log", - "prost 0.11.9", + "prost 0.13.3", "rand", "serde", "serde_json", @@ -1740,9 +1715,9 @@ dependencies = [ [[package]] name = "denokv_sqlite" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e32dcfde2d7b2ed3200e2cdc2f90a6aeee31c83a2dd89425356f509f1238759" +checksum = "9b790f01d1302d53a0c3cbd27de88a06b3abd64ec8ab8673924e490541c7c713" dependencies = [ "anyhow", "async-stream", @@ -1797,7 +1772,7 @@ checksum = "8034092389675178f570469e6c3b0465d3d30b4505c294a6550db47f3c17ad18" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] @@ -1850,7 +1825,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] @@ -1885,7 +1860,7 @@ checksum = "f2b99bf03862d7f545ebc28ddd33a665b50865f4dfd84031a393823879bd4c54" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] @@ -2084,7 +2059,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] @@ -2181,9 +2156,9 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" +checksum = "486f806e73c5707928240ddc295403b1b93c96a02038563881c4a2fd84b81ac4" [[package]] name = "fastwebsockets" @@ -2218,9 +2193,9 @@ dependencies = [ [[package]] name = "fdeflate" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8090f921a24b04994d9929e204f50b498a33ea6ba559ffaa05e04f7ee7fb5ab" +checksum = "07c6f4c64c1d33a3111c4466f7365ebdcc37c5bd1ea0d62aae2e3d722aacbedb" dependencies = [ "simd-adler32", ] @@ -2267,9 +2242,9 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "flate2" -version = "1.0.34" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0" +checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" dependencies = [ "crc32fast", "miniz_oxide 0.8.0", @@ -2319,7 +2294,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] @@ -2363,7 +2338,7 @@ checksum = "32016f1242eb82af5474752d00fd8ebcd9004bd69b462b1c91de833972d08ed4" dependencies = [ "proc-macro2", "swc_macros_common", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] @@ -2469,7 +2444,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] @@ -2733,9 +2708,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.15.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" +checksum = "3a9bfc1af68b1726ea47d3d5109de126281def866b33970e10fbab11b5dafab3" [[package]] name = "hashlink" @@ -2983,7 +2958,7 @@ dependencies = [ "http 1.1.0", "hyper 1.5.0", "hyper-util", - "rustls 0.23.15", + "rustls 0.23.17", "rustls-pki-types", "tokio", "tokio-rustls 0.26.0", @@ -3079,7 +3054,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" dependencies = [ "equivalent", - "hashbrown 0.15.0", + "hashbrown 0.15.1", "serde", ] @@ -3157,14 +3132,14 @@ dependencies = [ [[package]] name = "is-macro" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2069faacbe981460232f880d26bf3c7634e322d49053aa48c27e3ae642f728f1" +checksum = "1d57a3e447e24c22647738e4607f1df1e0ec6f72e16182c4cd199f647cdfb0e4" dependencies = [ - "Inflector", + "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] @@ -3185,6 +3160,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.11" @@ -3296,7 +3280,7 @@ dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] @@ -3316,9 +3300,9 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.161" +version = "0.2.164" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1" +checksum = "433bfe06b8c75da9b2e3fbea6e5329ff87748f0b144ef75306e674c3f6f7c13f" [[package]] name = "libffi" @@ -3361,9 +3345,9 @@ dependencies = [ [[package]] name = "libm" -version = "0.2.8" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" +checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" [[package]] name = "libredox" @@ -3674,7 +3658,6 @@ dependencies = [ [[package]] name = "node_resolver" version = "0.10.0" -source = "git+https://github.com/rivet-gg/deno?rev=bd98563214c532c8dae97d918edb501fe1c72dbc#bd98563214c532c8dae97d918edb501fe1c72dbc" dependencies = [ "anyhow", "async-trait", @@ -4187,7 +4170,7 @@ dependencies = [ "phf_shared", "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] @@ -4201,29 +4184,29 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.6" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf123a161dde1e524adf36f90bc5d8d3462824a9c43553ad07a8183161189ec" +checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.6" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4502d8515ca9f32f1fb543d987f63d95a14934883db45bdb48060b6b69257f8" +checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] name = "pin-project-lite" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" +checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" [[package]] name = "pin-utils" @@ -4336,12 +4319,12 @@ dependencies = [ [[package]] name = "prettyplease" -version = "0.2.24" +version = "0.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "910d41a655dac3b764f1ade94821093d3610248694320cd072303a8eedcf221d" +checksum = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033" dependencies = [ "proc-macro2", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] @@ -4385,7 +4368,7 @@ checksum = "07c277e4e643ef00c1233393c673f655e3672cf7eb3ba08a00bdd0ea59139b5f" dependencies = [ "proc-macro-rules-macros", "proc-macro2", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] @@ -4397,7 +4380,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] @@ -4450,6 +4433,16 @@ dependencies = [ "prost-derive 0.11.9", ] +[[package]] +name = "prost" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b0487d90e047de87f984913713b85c601c05609aad5b0df4b4573fbf69aa13f" +dependencies = [ + "bytes", + "prost-derive 0.13.3", +] + [[package]] name = "prost-build" version = "0.11.9" @@ -4498,6 +4491,19 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "prost-derive" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9552f850d5f0964a4e4d0bf306459ac29323ddfbae05e35a7c0d35cb0803cc5" +dependencies = [ + "anyhow", + "itertools 0.13.0", + "proc-macro2", + "quote", + "syn 2.0.87", +] + [[package]] name = "prost-types" version = "0.10.1" @@ -4525,9 +4531,9 @@ checksum = "106dd99e98437432fed6519dedecfade6a06a73bb7b2a1e019fdd2bee5778d94" [[package]] name = "psm" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa37f80ca58604976033fae9515a8a2989fc13797d953f7c04fb8fa36a11f205" +checksum = "200b9ff220857e53e184257720a14553b2f4aa02577d2ed9842d45d4b9654810" dependencies = [ "cc", ] @@ -4682,14 +4688,14 @@ checksum = "bcc303e793d3734489387d205e9b186fac9c6cfacedd98cbb2e8a5943595f3e6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] name = "regex" -version = "1.11.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", @@ -4699,9 +4705,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" dependencies = [ "aho-corasick", "memchr", @@ -4939,9 +4945,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.37" +version = "0.38.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" +checksum = "99e4ea3e1cdc4b559b8e5650f9c8e5998e3e5c1343b4eaf034565f32318d63c0" dependencies = [ "bitflags 2.6.0", "errno 0.3.9", @@ -4964,9 +4970,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.15" +version = "0.23.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fbb44d7acc4e873d613422379f69f237a1b141928c02f6bc6ccfddddc2d7993" +checksum = "7f1a745511c54ba6d4465e8d5dfbd81b45791756de28d4981af70d6dca128f1e" dependencies = [ "log", "once_cell", @@ -5021,7 +5027,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22557157d7395bc30727745b365d923f1ecc230c4c80b176545f3f4f08c46e33" dependencies = [ "futures", - "rustls 0.23.15", + "rustls 0.23.17", "socket2", "tokio", ] @@ -5198,9 +5204,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.12.0" +version = "2.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea4a292869320c0272d7bc55a5a6aafaff59b4f63404a003887b679a2e05b4b6" +checksum = "fa39c7303dc58b5543c94d22c1766b0d31f2ee58306363ea622b10bbc075eaa2" dependencies = [ "core-foundation-sys", "libc", @@ -5229,9 +5235,9 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "serde" -version = "1.0.213" +version = "1.0.215" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ea7893ff5e2466df8d720bb615088341b295f849602c6956047f8f80f0e9bc1" +checksum = "6513c1ad0b11a9376da888e3e0baa0077f1aed55c17f50e7b2397136129fb88f" dependencies = [ "serde_derive", ] @@ -5257,20 +5263,20 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.213" +version = "1.0.215" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e85ad2009c50b58e87caa8cd6dac16bdf511bbfb7af6c33df902396aa480fa5" +checksum = "ad1e866f866923f252f05c889987993144fb74e722403468a4ebd70c3cd756c0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] name = "serde_json" -version = "1.0.132" +version = "1.0.133" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03" +checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377" dependencies = [ "indexmap", "itoa", @@ -5429,9 +5435,9 @@ checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" [[package]] name = "simd-json" -version = "0.14.2" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1df0290e9bfe79ddd5ff8798ca887cd107b75353d2957efe9777296e17f26b5" +checksum = "aa2bcf6c6e164e81bc7a5d49fc6988b3d515d9e8c07457d7b74ffb9324b9cd40" dependencies = [ "getrandom", "halfbrown", @@ -5532,9 +5538,9 @@ dependencies = [ [[package]] name = "sourcemap" -version = "9.0.0" +version = "9.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dab08a862c70980b8e23698b507e272317ae52a608a164a844111f5372374f1f" +checksum = "4d146f02f4bbbabbbe3da0f9cd3ea2ab779defc4ed1f070b5bd83ea48ed78811" dependencies = [ "base64-simd 0.7.0", "bitvec", @@ -5580,7 +5586,6 @@ dependencies = [ [[package]] name = "sqlx" version = "0.8.2" -source = "git+https://github.com/rivet-gg/sqlx?rev=e7120f59b74fb6d83ac9b1d899b166bab31ba1d6#e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" dependencies = [ "sqlx-core", "sqlx-macros", @@ -5592,7 +5597,6 @@ dependencies = [ [[package]] name = "sqlx-core" version = "0.8.2" -source = "git+https://github.com/rivet-gg/sqlx?rev=e7120f59b74fb6d83ac9b1d899b166bab31ba1d6#e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" dependencies = [ "bytes", "crc", @@ -5627,19 +5631,17 @@ dependencies = [ [[package]] name = "sqlx-macros" version = "0.8.2" -source = "git+https://github.com/rivet-gg/sqlx?rev=e7120f59b74fb6d83ac9b1d899b166bab31ba1d6#e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" dependencies = [ "proc-macro2", "quote", "sqlx-core", "sqlx-macros-core", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] name = "sqlx-macros-core" version = "0.8.2" -source = "git+https://github.com/rivet-gg/sqlx?rev=e7120f59b74fb6d83ac9b1d899b166bab31ba1d6#e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" dependencies = [ "dotenvy", "either", @@ -5655,7 +5657,7 @@ dependencies = [ "sqlx-mysql", "sqlx-postgres", "sqlx-sqlite", - "syn 2.0.82", + "syn 2.0.87", "tempfile", "tokio", "url", @@ -5664,7 +5666,6 @@ dependencies = [ [[package]] name = "sqlx-mysql" version = "0.8.2" -source = "git+https://github.com/rivet-gg/sqlx?rev=e7120f59b74fb6d83ac9b1d899b166bab31ba1d6#e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" dependencies = [ "atoi", "base64 0.22.1", @@ -5706,7 +5707,6 @@ dependencies = [ [[package]] name = "sqlx-postgres" version = "0.8.2" -source = "git+https://github.com/rivet-gg/sqlx?rev=e7120f59b74fb6d83ac9b1d899b166bab31ba1d6#e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" dependencies = [ "atoi", "base64 0.22.1", @@ -5744,7 +5744,6 @@ dependencies = [ [[package]] name = "sqlx-sqlite" version = "0.8.2" -source = "git+https://github.com/rivet-gg/sqlx?rev=e7120f59b74fb6d83ac9b1d899b166bab31ba1d6#e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" dependencies = [ "atoi", "flume", @@ -5798,7 +5797,7 @@ dependencies = [ "proc-macro2", "quote", "swc_macros_common", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] @@ -5853,7 +5852,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] @@ -5918,7 +5917,7 @@ dependencies = [ "rustc-hash", "serde", "siphasher", - "sourcemap 9.0.0", + "sourcemap 9.1.0", "swc_allocator", "swc_atoms", "swc_eq_ignore_macros", @@ -5951,7 +5950,7 @@ dependencies = [ "proc-macro2", "quote", "swc_macros_common", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] @@ -5982,7 +5981,7 @@ dependencies = [ "num-bigint", "once_cell", "serde", - "sourcemap 9.0.0", + "sourcemap 9.1.0", "swc_allocator", "swc_atoms", "swc_common", @@ -6000,7 +5999,7 @@ dependencies = [ "proc-macro2", "quote", "swc_macros_common", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] @@ -6085,7 +6084,7 @@ dependencies = [ "proc-macro2", "quote", "swc_macros_common", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] @@ -6192,7 +6191,7 @@ checksum = "63db0adcff29d220c3d151c5b25c0eabe7e32dd936212b84cdaa1392e3130497" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] @@ -6203,7 +6202,7 @@ checksum = "f486687bfb7b5c560868f69ed2d458b880cebc9babebcb67e49f31b55c5bf847" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] @@ -6226,7 +6225,7 @@ dependencies = [ "proc-macro2", "quote", "swc_macros_common", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] @@ -6242,9 +6241,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.82" +version = "2.0.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83540f837a8afc019423a8edb95b52a8effe46957ee402287f4292fae35be021" +checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d" dependencies = [ "proc-macro2", "quote", @@ -6277,7 +6276,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] @@ -6323,9 +6322,9 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.13.0" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b" +checksum = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c" dependencies = [ "cfg-if", "fastrand", @@ -6354,22 +6353,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.65" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d11abd9594d9b38965ef50805c5e469ca9cc6f197f883f717e0269a3057b3d5" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.65" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae71770322cbd277e69d762a16c444af02aa0575ac0d174f0b9562d3b37f8602" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] @@ -6467,7 +6466,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] @@ -6498,7 +6497,7 @@ version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" dependencies = [ - "rustls 0.23.15", + "rustls 0.23.17", "rustls-pki-types", "tokio", ] @@ -6665,7 +6664,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] @@ -7135,7 +7134,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.87", "wasm-bindgen-shared", ] @@ -7169,7 +7168,7 @@ checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.87", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -7182,9 +7181,9 @@ checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" [[package]] name = "wasm-streams" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e072d4e72f700fb3443d8fe94a39315df013eef1104903cdb0a2abd322bbecd" +checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65" dependencies = [ "futures-util", "js-sys", @@ -7421,7 +7420,7 @@ checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] @@ -7432,7 +7431,7 @@ checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] @@ -7663,18 +7662,9 @@ dependencies = [ [[package]] name = "xml-rs" -version = "0.8.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af4e2e2f7cba5a093896c1e150fbfe177d1883e7448200efb81d40b9d339ef26" - -[[package]] -name = "yaml-rust" -version = "0.4.5" +version = "0.8.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85" -dependencies = [ - "linked-hash-map", -] +checksum = "af310deaae937e48a26602b730250b4949e125f468f11e6990be3e5304ddd96f" [[package]] name = "yaml-rust2" @@ -7707,7 +7697,7 @@ checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.87", "synstructure 0.13.1", ] @@ -7729,7 +7719,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] @@ -7749,7 +7739,7 @@ checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.87", "synstructure 0.13.1", ] @@ -7770,5 +7760,5 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.87", ] diff --git a/packages/infra/client/deny.toml b/packages/infra/client/deny.toml new file mode 100644 index 0000000000..073140d372 --- /dev/null +++ b/packages/infra/client/deny.toml @@ -0,0 +1,41 @@ +[advisories] +ignore = [ + # TODO(RVT-4096): + "RUSTSEC-2023-0071", + # Unmaintained, low-impact crates + "RUSTSEC-2024-0370", +] + +[licenses] +allow = [ + "Apache-2.0", + "BSD-2-Clause", + "BSD-3-Clause", + "ISC", + "MIT", + "MPL-2.0", + "CC0-1.0", + "Unicode-DFS-2016", + "Unicode-3.0", + "Zlib", + "EPL-2.0", +] +unused-allowed-license = "allow" + +[[licenses.exceptions]] +name = "ring" +allow = ["OpenSSL"] + +[[licenses.exceptions]] +name = "clipboard-win" +allow = ["BSL-1.0"] # Boost Software License, not Business Source License + +[[licenses.exceptions]] +name = "error-code" +allow = ["BSL-1.0"] # Boost Software License, not Business Source License + +# See https://github.com/EmbarkStudios/buildkite-jobify/blob/a1b953b03f3330e499b1af47cc2dc38bd777da7c/deny.toml#LL27C1-L38C1 +[[licenses.clarify]] +name = "ring" +expression = "ISC AND MIT AND OpenSSL" +license-files = [{ path = "LICENSE", hash = 0xbd0eed23 }] diff --git a/packages/infra/client/isolate-v8-runner/Cargo.toml b/packages/infra/client/isolate-v8-runner/Cargo.toml index 61a27961c3..75b96c8d2e 100644 --- a/packages/infra/client/isolate-v8-runner/Cargo.toml +++ b/packages/infra/client/isolate-v8-runner/Cargo.toml @@ -27,10 +27,7 @@ uuid = { version = "1.6.1", features = ["v4"] } runner-protocol = { path = "../runner-protocol", package = "pegboard-runner-protocol" } [dependencies.deno_runtime] -# path = "../../../../../deno/runtime" -git = "https://github.com/rivet-gg/deno" -rev = "bd98563214c532c8dae97d918edb501fe1c72dbc" -package = "deno_runtime" +path = "../../../../externals/deno/runtime" [dev-dependencies] portpicker = "0.1.1" diff --git a/packages/infra/client/manager/Cargo.toml b/packages/infra/client/manager/Cargo.toml index 92fee39f1a..16a99f2dc4 100644 --- a/packages/infra/client/manager/Cargo.toml +++ b/packages/infra/client/manager/Cargo.toml @@ -47,8 +47,7 @@ pegboard = { path = "../../../services/pegboard", default-features = false } serde_yaml = "0.9.34" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../externals/sqlx" default-features = false features = [ "runtime-tokio", diff --git a/packages/infra/server/Cargo.toml b/packages/infra/server/Cargo.toml index 91826afa0d..4c768cd511 100644 --- a/packages/infra/server/Cargo.toml +++ b/packages/infra/server/Cargo.toml @@ -22,7 +22,7 @@ rivet-migrate = { path = "../../common/migrate" } rivet-pools = { version = "0.1.0", path = "../../common/pools" } rivet-runtime = { version = "0.1.0", path = "../../common/runtime" } rivet-service-manager = { path = "../../common/service-manager" } -rivet-term = { git = "https://github.com/rivet-gg/rivet-term.git", rev = "d539a07d2920d47b88410f20e6d106b497cff1f5" } +rivet-term = { path = "../../../externals/rivet-term" } s3-util = { version = "0.1.0", path = "../../common/s3-util" } serde = { version = "1.0.210", features = ["derive"] } serde_json = "1.0.128" @@ -78,8 +78,7 @@ cloud-default-create = { version = "0.1.0", path = "../../services/cloud/standal [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../externals/sqlx" default-features = false features = ["runtime-tokio", "postgres"] diff --git a/packages/services/build/Cargo.toml b/packages/services/build/Cargo.toml index ff57ea24e7..ef34aa2b64 100644 --- a/packages/services/build/Cargo.toml +++ b/packages/services/build/Cargo.toml @@ -9,7 +9,7 @@ license = "Apache-2.0" acme-lib = "0.9" anyhow = "1.0" chirp-workflow = { path = "../../common/chirp-workflow/core" } -cloudflare = { git = "https://github.com/cloudflare/cloudflare-rs.git", rev = "f14720e42184ee176a97676e85ef2d2d85bc3aae" } +cloudflare = { path = "../../../externals/cloudflare-rs/cloudflare" } heck = "0.3" http = "0.2" include_dir = "0.7.3" @@ -38,8 +38,7 @@ upload-get = { path = "../upload/ops/get" } rivet-config = { version = "0.1.0", path = "../../common/config" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../externals/sqlx" default-features = false features = [ "json" ] diff --git a/packages/services/build/ops/create/Cargo.toml b/packages/services/build/ops/create/Cargo.toml index 8ca4348f4f..c65a0ded02 100644 --- a/packages/services/build/ops/create/Cargo.toml +++ b/packages/services/build/ops/create/Cargo.toml @@ -16,8 +16,7 @@ game-namespace-get = { path = "../../../game/ops/namespace-get" } upload-prepare = { path = "../../../upload/ops/prepare" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/build/ops/get/Cargo.toml b/packages/services/build/ops/get/Cargo.toml index 8bc51f9947..5129d63a94 100644 --- a/packages/services/build/ops/get/Cargo.toml +++ b/packages/services/build/ops/get/Cargo.toml @@ -11,8 +11,7 @@ chirp-client = { path = "../../../../common/chirp/client" } prost = "0.10" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/build/ops/list-for-env/Cargo.toml b/packages/services/build/ops/list-for-env/Cargo.toml index 83309328e0..de92cef1cd 100644 --- a/packages/services/build/ops/list-for-env/Cargo.toml +++ b/packages/services/build/ops/list-for-env/Cargo.toml @@ -11,8 +11,7 @@ chirp-client = { path = "../../../../common/chirp/client" } prost = "0.10" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/build/ops/list-for-game/Cargo.toml b/packages/services/build/ops/list-for-game/Cargo.toml index b800f3454b..90c6d96567 100644 --- a/packages/services/build/ops/list-for-game/Cargo.toml +++ b/packages/services/build/ops/list-for-game/Cargo.toml @@ -11,8 +11,7 @@ chirp-client = { path = "../../../../common/chirp/client" } prost = "0.10" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/build/standalone/default-create/Cargo.toml b/packages/services/build/standalone/default-create/Cargo.toml index e344ab4775..4e0ea9123c 100644 --- a/packages/services/build/standalone/default-create/Cargo.toml +++ b/packages/services/build/standalone/default-create/Cargo.toml @@ -30,8 +30,7 @@ upload-prepare = { path = "../../../upload/ops/prepare" } rivet-config = { version = "0.1.0", path = "../../../../common/config" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/captcha/ops/request/Cargo.toml b/packages/services/captcha/ops/request/Cargo.toml index 20d1d4ba2b..f4dbc6ae33 100644 --- a/packages/services/captcha/ops/request/Cargo.toml +++ b/packages/services/captcha/ops/request/Cargo.toml @@ -13,8 +13,7 @@ chrono = "0.4" util-captcha = { package = "rivet-util-captcha", path = "../../util" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/cdn/ops/namespace-auth-user-remove/Cargo.toml b/packages/services/cdn/ops/namespace-auth-user-remove/Cargo.toml index 9a78799b37..e7cce9ae89 100644 --- a/packages/services/cdn/ops/namespace-auth-user-remove/Cargo.toml +++ b/packages/services/cdn/ops/namespace-auth-user-remove/Cargo.toml @@ -11,8 +11,7 @@ chirp-client = { path = "../../../../common/chirp/client" } prost = "0.10" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/cdn/ops/namespace-auth-user-update/Cargo.toml b/packages/services/cdn/ops/namespace-auth-user-update/Cargo.toml index f3447dfe79..b6533e0e41 100644 --- a/packages/services/cdn/ops/namespace-auth-user-update/Cargo.toml +++ b/packages/services/cdn/ops/namespace-auth-user-update/Cargo.toml @@ -11,8 +11,7 @@ chirp-client = { path = "../../../../common/chirp/client" } prost = "0.10" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/cdn/ops/namespace-create/Cargo.toml b/packages/services/cdn/ops/namespace-create/Cargo.toml index efc51d005d..1ea1fa134c 100644 --- a/packages/services/cdn/ops/namespace-create/Cargo.toml +++ b/packages/services/cdn/ops/namespace-create/Cargo.toml @@ -11,8 +11,7 @@ chirp-client = { path = "../../../../common/chirp/client" } prost = "0.10" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/cdn/ops/namespace-domain-create/Cargo.toml b/packages/services/cdn/ops/namespace-domain-create/Cargo.toml index 681b441ad2..3afffa73f6 100644 --- a/packages/services/cdn/ops/namespace-domain-create/Cargo.toml +++ b/packages/services/cdn/ops/namespace-domain-create/Cargo.toml @@ -14,8 +14,7 @@ game-get = { path = "../../../game/ops/get" } game-resolve-namespace-id = { path = "../../../game/ops/resolve-namespace-id" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/cdn/ops/namespace-domain-remove/Cargo.toml b/packages/services/cdn/ops/namespace-domain-remove/Cargo.toml index b7b93e11e3..358f38e863 100644 --- a/packages/services/cdn/ops/namespace-domain-remove/Cargo.toml +++ b/packages/services/cdn/ops/namespace-domain-remove/Cargo.toml @@ -14,8 +14,7 @@ game-get = { path = "../../../game/ops/get" } game-resolve-namespace-id = { path = "../../../game/ops/resolve-namespace-id" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/cdn/ops/namespace-get/Cargo.toml b/packages/services/cdn/ops/namespace-get/Cargo.toml index 9476e8cf72..ab38154f0f 100644 --- a/packages/services/cdn/ops/namespace-get/Cargo.toml +++ b/packages/services/cdn/ops/namespace-get/Cargo.toml @@ -11,8 +11,7 @@ chirp-client = { path = "../../../../common/chirp/client" } prost = "0.10" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/cdn/ops/namespace-resolve-domain/Cargo.toml b/packages/services/cdn/ops/namespace-resolve-domain/Cargo.toml index 4c97a40e5d..713242b115 100644 --- a/packages/services/cdn/ops/namespace-resolve-domain/Cargo.toml +++ b/packages/services/cdn/ops/namespace-resolve-domain/Cargo.toml @@ -11,8 +11,7 @@ chirp-client = { path = "../../../../common/chirp/client" } prost = "0.10" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/cdn/ops/ns-auth-type-set/Cargo.toml b/packages/services/cdn/ops/ns-auth-type-set/Cargo.toml index 4880e62c4d..017d3322f8 100644 --- a/packages/services/cdn/ops/ns-auth-type-set/Cargo.toml +++ b/packages/services/cdn/ops/ns-auth-type-set/Cargo.toml @@ -11,8 +11,7 @@ chirp-client = { path = "../../../../common/chirp/client" } prost = "0.10" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/cdn/ops/ns-enable-domain-public-auth-set/Cargo.toml b/packages/services/cdn/ops/ns-enable-domain-public-auth-set/Cargo.toml index 11b4b2ea84..49311b1ae2 100644 --- a/packages/services/cdn/ops/ns-enable-domain-public-auth-set/Cargo.toml +++ b/packages/services/cdn/ops/ns-enable-domain-public-auth-set/Cargo.toml @@ -11,8 +11,7 @@ chirp-client = { path = "../../../../common/chirp/client" } prost = "0.10" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/cdn/ops/site-create/Cargo.toml b/packages/services/cdn/ops/site-create/Cargo.toml index 5f13227f24..e08bf21809 100644 --- a/packages/services/cdn/ops/site-create/Cargo.toml +++ b/packages/services/cdn/ops/site-create/Cargo.toml @@ -14,8 +14,7 @@ game-get = { path = "../../../game/ops/get" } upload-prepare = { path = "../../../upload/ops/prepare" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/cdn/ops/site-get/Cargo.toml b/packages/services/cdn/ops/site-get/Cargo.toml index 6d722892bd..56bedd9583 100644 --- a/packages/services/cdn/ops/site-get/Cargo.toml +++ b/packages/services/cdn/ops/site-get/Cargo.toml @@ -11,8 +11,7 @@ chirp-client = { path = "../../../../common/chirp/client" } prost = "0.10" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/cdn/ops/site-list-for-game/Cargo.toml b/packages/services/cdn/ops/site-list-for-game/Cargo.toml index c300d17eb7..530c626145 100644 --- a/packages/services/cdn/ops/site-list-for-game/Cargo.toml +++ b/packages/services/cdn/ops/site-list-for-game/Cargo.toml @@ -11,8 +11,7 @@ chirp-client = { path = "../../../../common/chirp/client" } prost = "0.10" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/cdn/ops/version-get/Cargo.toml b/packages/services/cdn/ops/version-get/Cargo.toml index b45026134e..37513419d6 100644 --- a/packages/services/cdn/ops/version-get/Cargo.toml +++ b/packages/services/cdn/ops/version-get/Cargo.toml @@ -11,8 +11,7 @@ chirp-client = { path = "../../../../common/chirp/client" } prost = "0.10" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/cdn/ops/version-publish/Cargo.toml b/packages/services/cdn/ops/version-publish/Cargo.toml index 1e705fc063..d4de016bf0 100644 --- a/packages/services/cdn/ops/version-publish/Cargo.toml +++ b/packages/services/cdn/ops/version-publish/Cargo.toml @@ -13,8 +13,7 @@ unzip-n = "0.1.2" itertools = "0.10.5" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/cf-custom-hostname/ops/get/Cargo.toml b/packages/services/cf-custom-hostname/ops/get/Cargo.toml index 4c6af4b728..840ceef0a2 100644 --- a/packages/services/cf-custom-hostname/ops/get/Cargo.toml +++ b/packages/services/cf-custom-hostname/ops/get/Cargo.toml @@ -11,8 +11,7 @@ chirp-client = { path = "../../../../common/chirp/client" } prost = "0.10" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/cf-custom-hostname/ops/list-for-namespace-id/Cargo.toml b/packages/services/cf-custom-hostname/ops/list-for-namespace-id/Cargo.toml index fbcaad22f5..0da9e3aefe 100644 --- a/packages/services/cf-custom-hostname/ops/list-for-namespace-id/Cargo.toml +++ b/packages/services/cf-custom-hostname/ops/list-for-namespace-id/Cargo.toml @@ -11,8 +11,7 @@ chirp-client = { path = "../../../../common/chirp/client" } prost = "0.10" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/cf-custom-hostname/ops/resolve-hostname/Cargo.toml b/packages/services/cf-custom-hostname/ops/resolve-hostname/Cargo.toml index 68b98ffef5..2b8d343724 100644 --- a/packages/services/cf-custom-hostname/ops/resolve-hostname/Cargo.toml +++ b/packages/services/cf-custom-hostname/ops/resolve-hostname/Cargo.toml @@ -11,8 +11,7 @@ chirp-client = { path = "../../../../common/chirp/client" } prost = "0.10" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/cloud/ops/game-config-create/Cargo.toml b/packages/services/cloud/ops/game-config-create/Cargo.toml index 51d8163788..ea6dffd0b4 100644 --- a/packages/services/cloud/ops/game-config-create/Cargo.toml +++ b/packages/services/cloud/ops/game-config-create/Cargo.toml @@ -11,8 +11,7 @@ chirp-client = { path = "../../../../common/chirp/client" } prost = "0.10" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/cloud/ops/game-config-get/Cargo.toml b/packages/services/cloud/ops/game-config-get/Cargo.toml index 70549637d2..0b79db9a22 100644 --- a/packages/services/cloud/ops/game-config-get/Cargo.toml +++ b/packages/services/cloud/ops/game-config-get/Cargo.toml @@ -11,8 +11,7 @@ chirp-client = { path = "../../../../common/chirp/client" } prost = "0.10" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/cloud/ops/game-token-create/Cargo.toml b/packages/services/cloud/ops/game-token-create/Cargo.toml index 5ed6a8f7e0..ec5e369f3d 100644 --- a/packages/services/cloud/ops/game-token-create/Cargo.toml +++ b/packages/services/cloud/ops/game-token-create/Cargo.toml @@ -13,8 +13,7 @@ prost = "0.10" token-create = { path = "../../../token/ops/create" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/cloud/ops/namespace-create/Cargo.toml b/packages/services/cloud/ops/namespace-create/Cargo.toml index 7939ffa6a5..89604ed8fd 100644 --- a/packages/services/cloud/ops/namespace-create/Cargo.toml +++ b/packages/services/cloud/ops/namespace-create/Cargo.toml @@ -16,8 +16,7 @@ cdn-namespace-create = { path = "../../../cdn/ops/namespace-create" } mm-config-namespace-create = { path = "../../../mm-config/ops/namespace-create" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/cloud/ops/namespace-get/Cargo.toml b/packages/services/cloud/ops/namespace-get/Cargo.toml index 706542889f..a65af9246b 100644 --- a/packages/services/cloud/ops/namespace-get/Cargo.toml +++ b/packages/services/cloud/ops/namespace-get/Cargo.toml @@ -14,8 +14,7 @@ cdn-namespace-get = { path = "../../../cdn/ops/namespace-get" } mm-config-namespace-get = { path = "../../../mm-config/ops/namespace-get" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/cloud/ops/namespace-token-development-create/Cargo.toml b/packages/services/cloud/ops/namespace-token-development-create/Cargo.toml index 0de0ac2475..2521b3af6f 100644 --- a/packages/services/cloud/ops/namespace-token-development-create/Cargo.toml +++ b/packages/services/cloud/ops/namespace-token-development-create/Cargo.toml @@ -15,8 +15,7 @@ game-token-development-validate = { path = "../../../game/ops/token-development- token-create = { path = "../../../token/ops/create" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/cloud/ops/namespace-token-public-create/Cargo.toml b/packages/services/cloud/ops/namespace-token-public-create/Cargo.toml index f239ce64e3..2a7bfcb3c6 100644 --- a/packages/services/cloud/ops/namespace-token-public-create/Cargo.toml +++ b/packages/services/cloud/ops/namespace-token-public-create/Cargo.toml @@ -15,8 +15,7 @@ game-namespace-get = { path = "../../../game/ops/namespace-get" } token-create = { path = "../../../token/ops/create" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/cloud/ops/version-get/Cargo.toml b/packages/services/cloud/ops/version-get/Cargo.toml index a2403ffc25..9cb8677512 100644 --- a/packages/services/cloud/ops/version-get/Cargo.toml +++ b/packages/services/cloud/ops/version-get/Cargo.toml @@ -15,8 +15,7 @@ cdn-version-get = { path = "../../../cdn/ops/version-get" } mm-config-version-get = { path = "../../../mm-config/ops/version-get" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/cloud/ops/version-publish/Cargo.toml b/packages/services/cloud/ops/version-publish/Cargo.toml index 93a56b8021..caecb5cfd2 100644 --- a/packages/services/cloud/ops/version-publish/Cargo.toml +++ b/packages/services/cloud/ops/version-publish/Cargo.toml @@ -19,8 +19,7 @@ mm-config-version-prepare = { path = "../../../mm-config/ops/version-prepare" } mm-config-version-publish = { path = "../../../mm-config/ops/version-publish" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/cluster/Cargo.toml b/packages/services/cluster/Cargo.toml index ca72b3afa8..f4a6dbc37c 100644 --- a/packages/services/cluster/Cargo.toml +++ b/packages/services/cluster/Cargo.toml @@ -10,7 +10,7 @@ acme-lib = "0.9" anyhow = "1.0" chirp-workflow = { path = "../../common/chirp-workflow/core" } chrono = "0.4" -cloudflare = { git = "https://github.com/cloudflare/cloudflare-rs.git", rev = "f14720e42184ee176a97676e85ef2d2d85bc3aae" } +cloudflare = { path = "../../../externals/cloudflare-rs/cloudflare" } http = "0.2" include_dir = "0.7.3" indoc = "1.0" @@ -37,12 +37,10 @@ rivet-config = { version = "0.1.0", path = "../../common/config" } ipnet = "2.10.1" [dependencies.nomad_client] -git = "https://github.com/rivet-gg/nomad-client" -rev = "abb66bf0c30c7ff5b0c695dae952481c33e538b5" # pragma: allowlist secret +path = "../../../externals/nomad-client" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../externals/sqlx" default-features = false features = [ "json", "ipnetwork" ] diff --git a/packages/services/cluster/standalone/datacenter-tls-renew/Cargo.toml b/packages/services/cluster/standalone/datacenter-tls-renew/Cargo.toml index 7dd4c2db36..ac801dc126 100644 --- a/packages/services/cluster/standalone/datacenter-tls-renew/Cargo.toml +++ b/packages/services/cluster/standalone/datacenter-tls-renew/Cargo.toml @@ -21,8 +21,7 @@ cluster = { path = "../.." } rivet-config = { version = "0.1.0", path = "../../../../common/config" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/cluster/standalone/gc/Cargo.toml b/packages/services/cluster/standalone/gc/Cargo.toml index b1f0fb49e2..5a4a4171f9 100644 --- a/packages/services/cluster/standalone/gc/Cargo.toml +++ b/packages/services/cluster/standalone/gc/Cargo.toml @@ -21,8 +21,7 @@ cluster = { path = "../.." } rivet-config = { version = "0.1.0", path = "../../../../common/config" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/cluster/standalone/metrics-publish/Cargo.toml b/packages/services/cluster/standalone/metrics-publish/Cargo.toml index 7285bad50d..61ad12817c 100644 --- a/packages/services/cluster/standalone/metrics-publish/Cargo.toml +++ b/packages/services/cluster/standalone/metrics-publish/Cargo.toml @@ -21,8 +21,7 @@ cluster = { path = "../.." } rivet-config = { version = "0.1.0", path = "../../../../common/config" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/custom-user-avatar/ops/list-for-game/Cargo.toml b/packages/services/custom-user-avatar/ops/list-for-game/Cargo.toml index 9f47227594..5a82f32346 100644 --- a/packages/services/custom-user-avatar/ops/list-for-game/Cargo.toml +++ b/packages/services/custom-user-avatar/ops/list-for-game/Cargo.toml @@ -11,8 +11,7 @@ chirp-client = { path = "../../../../common/chirp/client" } prost = "0.10" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/custom-user-avatar/ops/upload-complete/Cargo.toml b/packages/services/custom-user-avatar/ops/upload-complete/Cargo.toml index 8a82f6a2fa..044615039c 100644 --- a/packages/services/custom-user-avatar/ops/upload-complete/Cargo.toml +++ b/packages/services/custom-user-avatar/ops/upload-complete/Cargo.toml @@ -13,8 +13,7 @@ prost = "0.10" upload-complete = { path = "../../../upload/ops/complete" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/debug/ops/email-res/Cargo.toml b/packages/services/debug/ops/email-res/Cargo.toml index 01aa604f7c..ce0560e49e 100644 --- a/packages/services/debug/ops/email-res/Cargo.toml +++ b/packages/services/debug/ops/email-res/Cargo.toml @@ -13,8 +13,7 @@ rand = "0.8" serde_json = "1.0" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/ds-log/ops/export/Cargo.toml b/packages/services/ds-log/ops/export/Cargo.toml index fc3d7bfcd0..fc1dc58a30 100644 --- a/packages/services/ds-log/ops/export/Cargo.toml +++ b/packages/services/ds-log/ops/export/Cargo.toml @@ -15,8 +15,7 @@ upload-complete = { path = "../../../upload/ops/complete" } upload-prepare = { path = "../../../upload/ops/prepare" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/ds/Cargo.toml b/packages/services/ds/Cargo.toml index 9b2418460e..e453abdfde 100644 --- a/packages/services/ds/Cargo.toml +++ b/packages/services/ds/Cargo.toml @@ -59,14 +59,12 @@ user-identity-get = { path = "../user-identity/ops/get" } rivet-config = { version = "0.1.0", path = "../../common/config" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../externals/sqlx" default-features = false [dependencies.nomad_client] package = "nomad_client" -git = "https://github.com/rivet-gg/nomad-client" -rev = "abb66bf0c30c7ff5b0c695dae952481c33e538b5" # pragma: allowlist secret +path = "../../../externals/nomad-client" [dev-dependencies] cluster = { path = "../cluster" } diff --git a/packages/services/email-verification/ops/complete/Cargo.toml b/packages/services/email-verification/ops/complete/Cargo.toml index 4248000eaf..1eda680ef9 100644 --- a/packages/services/email-verification/ops/complete/Cargo.toml +++ b/packages/services/email-verification/ops/complete/Cargo.toml @@ -12,8 +12,7 @@ chrono = "0.4" prost = "0.10" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/email-verification/ops/create/Cargo.toml b/packages/services/email-verification/ops/create/Cargo.toml index a0b861f305..9cba8dbece 100644 --- a/packages/services/email-verification/ops/create/Cargo.toml +++ b/packages/services/email-verification/ops/create/Cargo.toml @@ -18,8 +18,7 @@ email-send = { path = "../../../email/ops/send" } game-get = { path = "../../../game/ops/get" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/external/ops/request-validate/Cargo.toml b/packages/services/external/ops/request-validate/Cargo.toml index 970a5b7ad0..9c73bb6e74 100644 --- a/packages/services/external/ops/request-validate/Cargo.toml +++ b/packages/services/external/ops/request-validate/Cargo.toml @@ -16,8 +16,7 @@ serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/faker/ops/region/Cargo.toml b/packages/services/faker/ops/region/Cargo.toml index 515dc2e429..204936e1e0 100644 --- a/packages/services/faker/ops/region/Cargo.toml +++ b/packages/services/faker/ops/region/Cargo.toml @@ -14,8 +14,7 @@ region-get = { path = "../../../region/ops/get" } region-list = { path = "../../../region/ops/list" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/game/ops/banner-upload-complete/Cargo.toml b/packages/services/game/ops/banner-upload-complete/Cargo.toml index 02dc2a99b5..b9bddd90b3 100644 --- a/packages/services/game/ops/banner-upload-complete/Cargo.toml +++ b/packages/services/game/ops/banner-upload-complete/Cargo.toml @@ -13,8 +13,7 @@ prost = "0.10" upload-complete = { path = "../../../upload/ops/complete" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/game/ops/create/Cargo.toml b/packages/services/game/ops/create/Cargo.toml index 8ea84d4dda..71f02bd103 100644 --- a/packages/services/game/ops/create/Cargo.toml +++ b/packages/services/game/ops/create/Cargo.toml @@ -17,8 +17,7 @@ game-validate = { path = "../validate" } team-get = { path = "../../../team/ops/get" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/game/ops/get/Cargo.toml b/packages/services/game/ops/get/Cargo.toml index e88e264742..d6c04e62b7 100644 --- a/packages/services/game/ops/get/Cargo.toml +++ b/packages/services/game/ops/get/Cargo.toml @@ -14,8 +14,7 @@ upload-file-list = { path = "../../../upload/ops/file-list" } upload-get = { path = "../../../upload/ops/get" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/game/ops/list-all/Cargo.toml b/packages/services/game/ops/list-all/Cargo.toml index 8fae8d5b55..2ef8acb1da 100644 --- a/packages/services/game/ops/list-all/Cargo.toml +++ b/packages/services/game/ops/list-all/Cargo.toml @@ -11,8 +11,7 @@ chirp-client = { path = "../../../../common/chirp/client" } prost = "0.10" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/game/ops/list-for-team/Cargo.toml b/packages/services/game/ops/list-for-team/Cargo.toml index cda203a92a..c13e50dccd 100644 --- a/packages/services/game/ops/list-for-team/Cargo.toml +++ b/packages/services/game/ops/list-for-team/Cargo.toml @@ -10,8 +10,7 @@ chirp-client = { path = "../../../../common/chirp/client" } rivet-operation = { path = "../../../../common/operation/core" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/game/ops/logo-upload-complete/Cargo.toml b/packages/services/game/ops/logo-upload-complete/Cargo.toml index f525eedfdb..2f5f6e6f91 100644 --- a/packages/services/game/ops/logo-upload-complete/Cargo.toml +++ b/packages/services/game/ops/logo-upload-complete/Cargo.toml @@ -13,8 +13,7 @@ prost = "0.10" upload-complete = { path = "../../../upload/ops/complete" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/game/ops/namespace-create/Cargo.toml b/packages/services/game/ops/namespace-create/Cargo.toml index 802540f66a..f7beb33f67 100644 --- a/packages/services/game/ops/namespace-create/Cargo.toml +++ b/packages/services/game/ops/namespace-create/Cargo.toml @@ -13,8 +13,7 @@ prost = "0.10" game-namespace-validate = { path = "../namespace-validate" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/game/ops/namespace-get/Cargo.toml b/packages/services/game/ops/namespace-get/Cargo.toml index 9e3baf6b4b..e139089b8b 100644 --- a/packages/services/game/ops/namespace-get/Cargo.toml +++ b/packages/services/game/ops/namespace-get/Cargo.toml @@ -11,8 +11,7 @@ chirp-client = { path = "../../../../common/chirp/client" } prost = "0.10" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/game/ops/namespace-list/Cargo.toml b/packages/services/game/ops/namespace-list/Cargo.toml index 65984604d7..02c6560a37 100644 --- a/packages/services/game/ops/namespace-list/Cargo.toml +++ b/packages/services/game/ops/namespace-list/Cargo.toml @@ -11,8 +11,7 @@ chirp-client = { path = "../../../../common/chirp/client" } prost = "0.10" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/game/ops/namespace-resolve-name-id/Cargo.toml b/packages/services/game/ops/namespace-resolve-name-id/Cargo.toml index 12a57bd9e5..db593f3709 100644 --- a/packages/services/game/ops/namespace-resolve-name-id/Cargo.toml +++ b/packages/services/game/ops/namespace-resolve-name-id/Cargo.toml @@ -11,8 +11,7 @@ chirp-client = { path = "../../../../common/chirp/client" } prost = "0.10" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/game/ops/namespace-version-history-list/Cargo.toml b/packages/services/game/ops/namespace-version-history-list/Cargo.toml index ffc6bcd3aa..a307bcda62 100644 --- a/packages/services/game/ops/namespace-version-history-list/Cargo.toml +++ b/packages/services/game/ops/namespace-version-history-list/Cargo.toml @@ -11,8 +11,7 @@ chirp-client = { path = "../../../../common/chirp/client" } prost = "0.10" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/game/ops/namespace-version-set/Cargo.toml b/packages/services/game/ops/namespace-version-set/Cargo.toml index 085a1ae664..9738b8bdf7 100644 --- a/packages/services/game/ops/namespace-version-set/Cargo.toml +++ b/packages/services/game/ops/namespace-version-set/Cargo.toml @@ -16,8 +16,7 @@ region-list-for-game = { path = "../../../region/ops/list-for-game" } mm-lobby-idle-update = { path = "../../../mm/ops/lobby-idle-update" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/game/ops/recommend/Cargo.toml b/packages/services/game/ops/recommend/Cargo.toml index b957ac8a68..409935e7e7 100644 --- a/packages/services/game/ops/recommend/Cargo.toml +++ b/packages/services/game/ops/recommend/Cargo.toml @@ -11,8 +11,7 @@ chirp-client = { path = "../../../../common/chirp/client" } prost = "0.10" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/game/ops/resolve-name-id/Cargo.toml b/packages/services/game/ops/resolve-name-id/Cargo.toml index c5e4ed8be6..ada3077101 100644 --- a/packages/services/game/ops/resolve-name-id/Cargo.toml +++ b/packages/services/game/ops/resolve-name-id/Cargo.toml @@ -11,8 +11,7 @@ chirp-client = { path = "../../../../common/chirp/client" } prost = "0.10" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/game/ops/resolve-namespace-id/Cargo.toml b/packages/services/game/ops/resolve-namespace-id/Cargo.toml index 120bf6eb8e..5548abcc95 100644 --- a/packages/services/game/ops/resolve-namespace-id/Cargo.toml +++ b/packages/services/game/ops/resolve-namespace-id/Cargo.toml @@ -11,8 +11,7 @@ chirp-client = { path = "../../../../common/chirp/client" } prost = "0.10" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/game/ops/version-create/Cargo.toml b/packages/services/game/ops/version-create/Cargo.toml index b7a0863004..fa71bacb16 100644 --- a/packages/services/game/ops/version-create/Cargo.toml +++ b/packages/services/game/ops/version-create/Cargo.toml @@ -14,8 +14,7 @@ game-version-get = { path = "../version-get" } game-version-list = { path = "../version-list" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/game/ops/version-get/Cargo.toml b/packages/services/game/ops/version-get/Cargo.toml index 64df96b888..003b7bdc78 100644 --- a/packages/services/game/ops/version-get/Cargo.toml +++ b/packages/services/game/ops/version-get/Cargo.toml @@ -11,8 +11,7 @@ chirp-client = { path = "../../../../common/chirp/client" } prost = "0.10" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/game/ops/version-list/Cargo.toml b/packages/services/game/ops/version-list/Cargo.toml index 2e64e46fa3..1bf597a7af 100644 --- a/packages/services/game/ops/version-list/Cargo.toml +++ b/packages/services/game/ops/version-list/Cargo.toml @@ -11,8 +11,7 @@ chirp-client = { path = "../../../../common/chirp/client" } prost = "0.10" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/ip/ops/info/Cargo.toml b/packages/services/ip/ops/info/Cargo.toml index 04f53e8ded..ab48036e52 100644 --- a/packages/services/ip/ops/info/Cargo.toml +++ b/packages/services/ip/ops/info/Cargo.toml @@ -15,8 +15,7 @@ serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/job-run/Cargo.toml b/packages/services/job-run/Cargo.toml index cc54c6170a..5d828a30ad 100644 --- a/packages/services/job-run/Cargo.toml +++ b/packages/services/job-run/Cargo.toml @@ -34,18 +34,16 @@ rivet-config = { version = "0.1.0", path = "../../common/config" } [dependencies.nomad_client_new] package = "nomad_client" -git = "https://github.com/rivet-gg/nomad-client" -rev = "abb66bf0c30c7ff5b0c695dae952481c33e538b5" # pragma: allowlist secret +path = "../../../externals/nomad-client" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../externals/sqlx" default-features = false features = [ "json" ] [dev-dependencies] rivet-test = { version = "0.1.0", path = "../../common/test" } -rustls = "0.20" +rustls = "0.21" webpki = "0.22" webpki-roots = "0.22" diff --git a/packages/services/job/standalone/gc/Cargo.toml b/packages/services/job/standalone/gc/Cargo.toml index 27957c3eb8..64e01ca85b 100644 --- a/packages/services/job/standalone/gc/Cargo.toml +++ b/packages/services/job/standalone/gc/Cargo.toml @@ -36,8 +36,7 @@ mm-lobby-get = { path = "../../../mm/ops/lobby-get" } rivet-config = { version = "0.1.0", path = "../../../../common/config" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/linode/Cargo.toml b/packages/services/linode/Cargo.toml index 489417bd90..956bd6219e 100644 --- a/packages/services/linode/Cargo.toml +++ b/packages/services/linode/Cargo.toml @@ -17,8 +17,7 @@ serde_json = "1.0" ssh-key = "0.6.3" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/linode/standalone/gc/Cargo.toml b/packages/services/linode/standalone/gc/Cargo.toml index 884e75dcc6..a0a9bb27d8 100644 --- a/packages/services/linode/standalone/gc/Cargo.toml +++ b/packages/services/linode/standalone/gc/Cargo.toml @@ -26,8 +26,7 @@ linode = { path = "../.." } rivet-config = { version = "0.1.0", path = "../../../../common/config" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/load-test/standalone/sqlx/Cargo.toml b/packages/services/load-test/standalone/sqlx/Cargo.toml index 365553fb73..36a1701883 100644 --- a/packages/services/load-test/standalone/sqlx/Cargo.toml +++ b/packages/services/load-test/standalone/sqlx/Cargo.toml @@ -30,6 +30,5 @@ rivet-config = { version = "0.1.0", path = "../../../../common/config" } chirp-worker = { path = "../../../../common/chirp/worker" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false diff --git a/packages/services/mm-config/ops/game-get/Cargo.toml b/packages/services/mm-config/ops/game-get/Cargo.toml index b8842aa6f4..5fd59251d1 100644 --- a/packages/services/mm-config/ops/game-get/Cargo.toml +++ b/packages/services/mm-config/ops/game-get/Cargo.toml @@ -10,8 +10,7 @@ chirp-client = { path = "../../../../common/chirp/client" } rivet-operation = { path = "../../../../common/operation/core" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/mm-config/ops/game-upsert/Cargo.toml b/packages/services/mm-config/ops/game-upsert/Cargo.toml index ab277ee0cf..598d2e1d37 100644 --- a/packages/services/mm-config/ops/game-upsert/Cargo.toml +++ b/packages/services/mm-config/ops/game-upsert/Cargo.toml @@ -10,8 +10,7 @@ chirp-client = { path = "../../../../common/chirp/client" } rivet-operation = { path = "../../../../common/operation/core" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/mm-config/ops/lobby-group-get/Cargo.toml b/packages/services/mm-config/ops/lobby-group-get/Cargo.toml index 8887bdcabd..5796592f1d 100644 --- a/packages/services/mm-config/ops/lobby-group-get/Cargo.toml +++ b/packages/services/mm-config/ops/lobby-group-get/Cargo.toml @@ -11,8 +11,7 @@ chirp-client = { path = "../../../../common/chirp/client" } prost = "0.10" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/mm-config/ops/lobby-group-resolve-name-id/Cargo.toml b/packages/services/mm-config/ops/lobby-group-resolve-name-id/Cargo.toml index c855713a19..fdf0134804 100644 --- a/packages/services/mm-config/ops/lobby-group-resolve-name-id/Cargo.toml +++ b/packages/services/mm-config/ops/lobby-group-resolve-name-id/Cargo.toml @@ -12,8 +12,7 @@ prost = "0.10" util-mm = { package = "rivet-util-mm", path = "../../../mm/util" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/mm-config/ops/lobby-group-resolve-version/Cargo.toml b/packages/services/mm-config/ops/lobby-group-resolve-version/Cargo.toml index 8217386c0d..ca833b7041 100644 --- a/packages/services/mm-config/ops/lobby-group-resolve-version/Cargo.toml +++ b/packages/services/mm-config/ops/lobby-group-resolve-version/Cargo.toml @@ -11,8 +11,7 @@ chirp-client = { path = "../../../../common/chirp/client" } prost = "0.10" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/mm-config/ops/namespace-config-set/Cargo.toml b/packages/services/mm-config/ops/namespace-config-set/Cargo.toml index 8a3699de5b..f45b35d4d6 100644 --- a/packages/services/mm-config/ops/namespace-config-set/Cargo.toml +++ b/packages/services/mm-config/ops/namespace-config-set/Cargo.toml @@ -13,8 +13,7 @@ prost = "0.10" mm-config-namespace-config-validate = { path = "../namespace-config-validate" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/mm-config/ops/namespace-create/Cargo.toml b/packages/services/mm-config/ops/namespace-create/Cargo.toml index a783cf81eb..8298c06524 100644 --- a/packages/services/mm-config/ops/namespace-create/Cargo.toml +++ b/packages/services/mm-config/ops/namespace-create/Cargo.toml @@ -11,8 +11,7 @@ chirp-client = { path = "../../../../common/chirp/client" } prost = "0.10" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/mm-config/ops/namespace-get/Cargo.toml b/packages/services/mm-config/ops/namespace-get/Cargo.toml index 98d7f4cef7..8ca926e1ac 100644 --- a/packages/services/mm-config/ops/namespace-get/Cargo.toml +++ b/packages/services/mm-config/ops/namespace-get/Cargo.toml @@ -11,8 +11,7 @@ chirp-client = { path = "../../../../common/chirp/client" } prost = "0.10" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/mm-config/ops/version-get/Cargo.toml b/packages/services/mm-config/ops/version-get/Cargo.toml index a6ef6fe520..ff52ffb3c8 100644 --- a/packages/services/mm-config/ops/version-get/Cargo.toml +++ b/packages/services/mm-config/ops/version-get/Cargo.toml @@ -12,8 +12,7 @@ prost = "0.10" util-mm = { package = "rivet-util-mm", path = "../../../mm/util" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/mm-config/ops/version-prepare/Cargo.toml b/packages/services/mm-config/ops/version-prepare/Cargo.toml index 195a607a17..ae3b69d6ad 100644 --- a/packages/services/mm-config/ops/version-prepare/Cargo.toml +++ b/packages/services/mm-config/ops/version-prepare/Cargo.toml @@ -24,8 +24,7 @@ region-get = { path = "../../../region/ops/get" } tier = { path = "../../../tier" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/mm-config/ops/version-publish/Cargo.toml b/packages/services/mm-config/ops/version-publish/Cargo.toml index 149a365acc..ba5e863acf 100644 --- a/packages/services/mm-config/ops/version-publish/Cargo.toml +++ b/packages/services/mm-config/ops/version-publish/Cargo.toml @@ -12,8 +12,7 @@ prost = "0.10" util-mm = { package = "rivet-util-mm", path = "../../../mm/util" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/mm/ops/lobby-for-run-id/Cargo.toml b/packages/services/mm/ops/lobby-for-run-id/Cargo.toml index 8bbe4799f7..a69f4b3032 100644 --- a/packages/services/mm/ops/lobby-for-run-id/Cargo.toml +++ b/packages/services/mm/ops/lobby-for-run-id/Cargo.toml @@ -10,8 +10,7 @@ chirp-client = { path = "../../../../common/chirp/client" } rivet-operation = { path = "../../../../common/operation/core" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/mm/ops/lobby-get/Cargo.toml b/packages/services/mm/ops/lobby-get/Cargo.toml index 81c844d151..09945c2014 100644 --- a/packages/services/mm/ops/lobby-get/Cargo.toml +++ b/packages/services/mm/ops/lobby-get/Cargo.toml @@ -12,8 +12,7 @@ chrono = "0.4" prost = "0.10" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/mm/ops/lobby-history/Cargo.toml b/packages/services/mm/ops/lobby-history/Cargo.toml index 64bc8fdcfe..616c957705 100644 --- a/packages/services/mm/ops/lobby-history/Cargo.toml +++ b/packages/services/mm/ops/lobby-history/Cargo.toml @@ -12,8 +12,7 @@ chrono = "0.4" prost = "0.10" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/mm/ops/lobby-idle-update/Cargo.toml b/packages/services/mm/ops/lobby-idle-update/Cargo.toml index de120bec91..019710eb4b 100644 --- a/packages/services/mm/ops/lobby-idle-update/Cargo.toml +++ b/packages/services/mm/ops/lobby-idle-update/Cargo.toml @@ -17,8 +17,7 @@ game-namespace-get = { path = "../../../game/ops/namespace-get" } mm-config-version-get = { path = "../../../mm-config/ops/version-get" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/mm/ops/lobby-list-for-namespace/Cargo.toml b/packages/services/mm/ops/lobby-list-for-namespace/Cargo.toml index 4a1769f6dc..b2df118f48 100644 --- a/packages/services/mm/ops/lobby-list-for-namespace/Cargo.toml +++ b/packages/services/mm/ops/lobby-list-for-namespace/Cargo.toml @@ -12,8 +12,7 @@ prost = "0.10" util-mm = { package = "rivet-util-mm", path = "../../util" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/mm/ops/lobby-list-for-user-id/Cargo.toml b/packages/services/mm/ops/lobby-list-for-user-id/Cargo.toml index c0e5835b7f..498d85d2bf 100644 --- a/packages/services/mm/ops/lobby-list-for-user-id/Cargo.toml +++ b/packages/services/mm/ops/lobby-list-for-user-id/Cargo.toml @@ -11,8 +11,7 @@ rivet-operation = { path = "../../../../common/operation/core" } prost = "0.10" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/mm/ops/lobby-player-count/Cargo.toml b/packages/services/mm/ops/lobby-player-count/Cargo.toml index 4dacbcac94..06e1563444 100644 --- a/packages/services/mm/ops/lobby-player-count/Cargo.toml +++ b/packages/services/mm/ops/lobby-player-count/Cargo.toml @@ -12,8 +12,7 @@ prost = "0.10" util-mm = { package = "rivet-util-mm", path = "../../util" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/mm/ops/lobby-runtime-aggregate/Cargo.toml b/packages/services/mm/ops/lobby-runtime-aggregate/Cargo.toml index 86d44d7d58..4adec6aa2c 100644 --- a/packages/services/mm/ops/lobby-runtime-aggregate/Cargo.toml +++ b/packages/services/mm/ops/lobby-runtime-aggregate/Cargo.toml @@ -16,8 +16,7 @@ mm-config-lobby-group-resolve-version = { path = "../../../mm-config/ops/lobby-g mm-config-version-get = { path = "../../../mm-config/ops/version-get" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/mm/ops/lobby-state-get/Cargo.toml b/packages/services/mm/ops/lobby-state-get/Cargo.toml index 2021bf5356..284e2f817e 100644 --- a/packages/services/mm/ops/lobby-state-get/Cargo.toml +++ b/packages/services/mm/ops/lobby-state-get/Cargo.toml @@ -12,8 +12,7 @@ prost = "0.10" util-mm = { package = "rivet-util-mm", path = "../../util" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/mm/ops/player-count-for-namespace/Cargo.toml b/packages/services/mm/ops/player-count-for-namespace/Cargo.toml index 678888f881..ba539f448b 100644 --- a/packages/services/mm/ops/player-count-for-namespace/Cargo.toml +++ b/packages/services/mm/ops/player-count-for-namespace/Cargo.toml @@ -12,8 +12,7 @@ prost = "0.10" util-mm = { package = "rivet-util-mm", path = "../../util" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/mm/ops/player-get/Cargo.toml b/packages/services/mm/ops/player-get/Cargo.toml index ab2c06db19..688db6513e 100644 --- a/packages/services/mm/ops/player-get/Cargo.toml +++ b/packages/services/mm/ops/player-get/Cargo.toml @@ -11,8 +11,7 @@ chirp-client = { path = "../../../../common/chirp/client" } prost = "0.10" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/mm/standalone/gc/Cargo.toml b/packages/services/mm/standalone/gc/Cargo.toml index c27f53ebbd..fa812d2454 100644 --- a/packages/services/mm/standalone/gc/Cargo.toml +++ b/packages/services/mm/standalone/gc/Cargo.toml @@ -31,8 +31,7 @@ region-list = { path = "../../../region/ops/list" } rivet-config = { version = "0.1.0", path = "../../../../common/config" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/mm/worker/Cargo.toml b/packages/services/mm/worker/Cargo.toml index 789204c379..83b0ba90f8 100644 --- a/packages/services/mm/worker/Cargo.toml +++ b/packages/services/mm/worker/Cargo.toml @@ -55,8 +55,7 @@ upload-prepare = { path = "../../upload/ops/prepare" } rivet-config = { version = "0.1.0", path = "../../../common/config" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/nomad/standalone/monitor/Cargo.toml b/packages/services/nomad/standalone/monitor/Cargo.toml index 53411755be..6f91f43207 100644 --- a/packages/services/nomad/standalone/monitor/Cargo.toml +++ b/packages/services/nomad/standalone/monitor/Cargo.toml @@ -37,8 +37,7 @@ ds = { path = "../../../ds" } rivet-config = { version = "0.1.0", path = "../../../../common/config" } [dependencies.nomad_client] -git = "https://github.com/rivet-gg/nomad-client" -rev = "abb66bf0c30c7ff5b0c695dae952481c33e538b5" # pragma: allowlist secret +path = "../../../../../externals/nomad-client" [dev-dependencies] chirp-worker = { path = "../../../../common/chirp/worker" } diff --git a/packages/services/pegboard/Cargo.toml b/packages/services/pegboard/Cargo.toml index a354d9196c..013179756c 100644 --- a/packages/services/pegboard/Cargo.toml +++ b/packages/services/pegboard/Cargo.toml @@ -26,7 +26,6 @@ rivet-config = { version = "0.1.0", path = "../../common/config" } [dependencies.sqlx] optional = true -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../externals/sqlx" default-features = false features = [ "json", "ipnetwork" ] diff --git a/packages/services/pegboard/standalone/gc/Cargo.toml b/packages/services/pegboard/standalone/gc/Cargo.toml index 40b6e2d501..045ddbc277 100644 --- a/packages/services/pegboard/standalone/gc/Cargo.toml +++ b/packages/services/pegboard/standalone/gc/Cargo.toml @@ -22,8 +22,7 @@ pegboard = { path = "../.." } rivet-config = { version = "0.1.0", path = "../../../../common/config" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/region/ops/get/Cargo.toml b/packages/services/region/ops/get/Cargo.toml index 970b87d9de..10f50992eb 100644 --- a/packages/services/region/ops/get/Cargo.toml +++ b/packages/services/region/ops/get/Cargo.toml @@ -14,8 +14,7 @@ rivet-operation = { path = "../../../../common/operation/core" } cluster = { path = "../../../cluster" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/region/ops/list-for-game/Cargo.toml b/packages/services/region/ops/list-for-game/Cargo.toml index f907923daa..40f5d884a1 100644 --- a/packages/services/region/ops/list-for-game/Cargo.toml +++ b/packages/services/region/ops/list-for-game/Cargo.toml @@ -14,8 +14,7 @@ rivet-operation = { path = "../../../../common/operation/core" } cluster = { path = "../../../cluster" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/region/ops/list/Cargo.toml b/packages/services/region/ops/list/Cargo.toml index 4b8052339e..92cdaa4b11 100644 --- a/packages/services/region/ops/list/Cargo.toml +++ b/packages/services/region/ops/list/Cargo.toml @@ -14,8 +14,7 @@ rivet-operation = { path = "../../../../common/operation/core" } cluster = { path = "../../../cluster" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/region/ops/recommend/Cargo.toml b/packages/services/region/ops/recommend/Cargo.toml index f4b86c40af..3bcf6b14ab 100644 --- a/packages/services/region/ops/recommend/Cargo.toml +++ b/packages/services/region/ops/recommend/Cargo.toml @@ -15,8 +15,7 @@ ip-info = { path = "../../../ip/ops/info" } region-get = { path = "../get" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/region/ops/resolve-for-game/Cargo.toml b/packages/services/region/ops/resolve-for-game/Cargo.toml index 0478f1fed2..d02e211664 100644 --- a/packages/services/region/ops/resolve-for-game/Cargo.toml +++ b/packages/services/region/ops/resolve-for-game/Cargo.toml @@ -15,8 +15,7 @@ cluster = { path = "../../../cluster" } region-list-for-game = { path = "../list-for-game" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/region/ops/resolve/Cargo.toml b/packages/services/region/ops/resolve/Cargo.toml index a4fd166ff8..3aab7f7d75 100644 --- a/packages/services/region/ops/resolve/Cargo.toml +++ b/packages/services/region/ops/resolve/Cargo.toml @@ -15,8 +15,7 @@ cluster = { path = "../../../cluster" } region-list = { path = "../list" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/team-invite/ops/get/Cargo.toml b/packages/services/team-invite/ops/get/Cargo.toml index dcb9258383..1c5487b5c7 100644 --- a/packages/services/team-invite/ops/get/Cargo.toml +++ b/packages/services/team-invite/ops/get/Cargo.toml @@ -12,8 +12,7 @@ chrono = "0.4" prost = "0.10" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/team-invite/worker/Cargo.toml b/packages/services/team-invite/worker/Cargo.toml index a33238eaec..f5970d9025 100644 --- a/packages/services/team-invite/worker/Cargo.toml +++ b/packages/services/team-invite/worker/Cargo.toml @@ -18,8 +18,7 @@ team-user-ban-get = { path = "../../team/ops/user-ban-get" } rivet-config = { version = "0.1.0", path = "../../../common/config" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/team/ops/avatar-upload-complete/Cargo.toml b/packages/services/team/ops/avatar-upload-complete/Cargo.toml index 0cbd2d3dcc..a3b860b1c9 100644 --- a/packages/services/team/ops/avatar-upload-complete/Cargo.toml +++ b/packages/services/team/ops/avatar-upload-complete/Cargo.toml @@ -13,8 +13,7 @@ prost = "0.10" upload-complete = { path = "../../../upload/ops/complete" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/team/ops/get/Cargo.toml b/packages/services/team/ops/get/Cargo.toml index d064370395..69721baa15 100644 --- a/packages/services/team/ops/get/Cargo.toml +++ b/packages/services/team/ops/get/Cargo.toml @@ -14,8 +14,7 @@ upload-file-list = { path = "../../../upload/ops/file-list" } upload-get = { path = "../../../upload/ops/get" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/team/ops/join-request-list/Cargo.toml b/packages/services/team/ops/join-request-list/Cargo.toml index dc34ce638b..b8d91bfd2b 100644 --- a/packages/services/team/ops/join-request-list/Cargo.toml +++ b/packages/services/team/ops/join-request-list/Cargo.toml @@ -11,8 +11,7 @@ chirp-client = { path = "../../../../common/chirp/client" } prost = "0.10" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/team/ops/member-count/Cargo.toml b/packages/services/team/ops/member-count/Cargo.toml index 66246e6760..862604aeb4 100644 --- a/packages/services/team/ops/member-count/Cargo.toml +++ b/packages/services/team/ops/member-count/Cargo.toml @@ -11,8 +11,7 @@ chirp-client = { path = "../../../../common/chirp/client" } prost = "0.10" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/team/ops/member-get/Cargo.toml b/packages/services/team/ops/member-get/Cargo.toml index 1b6f52bf8d..33af566088 100644 --- a/packages/services/team/ops/member-get/Cargo.toml +++ b/packages/services/team/ops/member-get/Cargo.toml @@ -11,8 +11,7 @@ chirp-client = { path = "../../../../common/chirp/client" } prost = "0.10" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/team/ops/member-list/Cargo.toml b/packages/services/team/ops/member-list/Cargo.toml index cabc26bd26..30236f3af2 100644 --- a/packages/services/team/ops/member-list/Cargo.toml +++ b/packages/services/team/ops/member-list/Cargo.toml @@ -11,8 +11,7 @@ chirp-client = { path = "../../../../common/chirp/client" } prost = "0.10" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/team/ops/member-relationship-get/Cargo.toml b/packages/services/team/ops/member-relationship-get/Cargo.toml index 62119d47bd..2932506833 100644 --- a/packages/services/team/ops/member-relationship-get/Cargo.toml +++ b/packages/services/team/ops/member-relationship-get/Cargo.toml @@ -11,8 +11,7 @@ chirp-client = { path = "../../../../common/chirp/client" } prost = "0.10" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/team/ops/profile-validate/Cargo.toml b/packages/services/team/ops/profile-validate/Cargo.toml index 7cb171d504..80a412aae3 100644 --- a/packages/services/team/ops/profile-validate/Cargo.toml +++ b/packages/services/team/ops/profile-validate/Cargo.toml @@ -11,8 +11,7 @@ chirp-client = { path = "../../../../common/chirp/client" } prost = "0.10" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/team/ops/recommend/Cargo.toml b/packages/services/team/ops/recommend/Cargo.toml index 52e23adba3..0feea1dcd7 100644 --- a/packages/services/team/ops/recommend/Cargo.toml +++ b/packages/services/team/ops/recommend/Cargo.toml @@ -11,8 +11,7 @@ chirp-client = { path = "../../../../common/chirp/client" } prost = "0.10" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/team/ops/resolve-display-name/Cargo.toml b/packages/services/team/ops/resolve-display-name/Cargo.toml index c308248bf3..b2191327c3 100644 --- a/packages/services/team/ops/resolve-display-name/Cargo.toml +++ b/packages/services/team/ops/resolve-display-name/Cargo.toml @@ -11,8 +11,7 @@ chirp-client = { path = "../../../../common/chirp/client" } prost = "0.10" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/team/ops/user-ban-get/Cargo.toml b/packages/services/team/ops/user-ban-get/Cargo.toml index 0364e32eb8..bf45da8f31 100644 --- a/packages/services/team/ops/user-ban-get/Cargo.toml +++ b/packages/services/team/ops/user-ban-get/Cargo.toml @@ -11,8 +11,7 @@ chirp-client = { path = "../../../../common/chirp/client" } prost = "0.10" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/team/ops/user-ban-list/Cargo.toml b/packages/services/team/ops/user-ban-list/Cargo.toml index 6320490116..175f87c436 100644 --- a/packages/services/team/ops/user-ban-list/Cargo.toml +++ b/packages/services/team/ops/user-ban-list/Cargo.toml @@ -11,8 +11,7 @@ chirp-client = { path = "../../../../common/chirp/client" } prost = "0.10" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/telemetry/standalone/beacon/Cargo.toml b/packages/services/telemetry/standalone/beacon/Cargo.toml index 0f5028284c..276a18f513 100644 --- a/packages/services/telemetry/standalone/beacon/Cargo.toml +++ b/packages/services/telemetry/standalone/beacon/Cargo.toml @@ -6,7 +6,7 @@ authors = ["Rivet Gaming, LLC "] license = "Apache-2.0" [dependencies] -async-posthog = { git = "https://github.com/rivet-gg/posthog-rs.git", rev = "ef4e80e" } +async-posthog = { path = "../../../../../externals/posthog-rs/async" } chirp-client = { path = "../../../../common/chirp/client" } futures-util = "0.3" indoc = "1.0" @@ -41,8 +41,7 @@ pegboard = { version = "0.0.1", path = "../../../pegboard" } serde = { version = "1.0.214", features = ["derive"] } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/token/ops/create/Cargo.toml b/packages/services/token/ops/create/Cargo.toml index 3749a0b73d..fc22cd1cd9 100644 --- a/packages/services/token/ops/create/Cargo.toml +++ b/packages/services/token/ops/create/Cargo.toml @@ -16,8 +16,7 @@ jsonwebtoken = "8.2.0" lazy_static = "1.4" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/token/ops/exchange/Cargo.toml b/packages/services/token/ops/exchange/Cargo.toml index a90144070d..91a81f6330 100644 --- a/packages/services/token/ops/exchange/Cargo.toml +++ b/packages/services/token/ops/exchange/Cargo.toml @@ -12,8 +12,7 @@ chrono = "0.4" prost = "0.10" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false diff --git a/packages/services/token/ops/get/Cargo.toml b/packages/services/token/ops/get/Cargo.toml index 0d6341cbb6..b21869e948 100644 --- a/packages/services/token/ops/get/Cargo.toml +++ b/packages/services/token/ops/get/Cargo.toml @@ -12,8 +12,7 @@ chrono = "0.4" prost = "0.10" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/token/ops/revoke/Cargo.toml b/packages/services/token/ops/revoke/Cargo.toml index 5429f9b60d..8b6f6d92f5 100644 --- a/packages/services/token/ops/revoke/Cargo.toml +++ b/packages/services/token/ops/revoke/Cargo.toml @@ -12,8 +12,7 @@ chrono = "0.4" prost = "0.10" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/upload/ops/complete/Cargo.toml b/packages/services/upload/ops/complete/Cargo.toml index 50403beb56..eb417cab8f 100644 --- a/packages/services/upload/ops/complete/Cargo.toml +++ b/packages/services/upload/ops/complete/Cargo.toml @@ -14,8 +14,7 @@ s3-util = { path = "../../../../common/s3-util" } url = "2.2" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/upload/ops/file-list/Cargo.toml b/packages/services/upload/ops/file-list/Cargo.toml index 6c47a30386..b17b2bd017 100644 --- a/packages/services/upload/ops/file-list/Cargo.toml +++ b/packages/services/upload/ops/file-list/Cargo.toml @@ -12,8 +12,7 @@ prost = "0.10" rivet-operation = { path = "../../../../common/operation/core" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/upload/ops/get/Cargo.toml b/packages/services/upload/ops/get/Cargo.toml index 22d9ef2193..5b707d506e 100644 --- a/packages/services/upload/ops/get/Cargo.toml +++ b/packages/services/upload/ops/get/Cargo.toml @@ -12,8 +12,7 @@ chrono = "0.4" prost = "0.10" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/upload/ops/list-for-user/Cargo.toml b/packages/services/upload/ops/list-for-user/Cargo.toml index 080e1992a1..ed686f679f 100644 --- a/packages/services/upload/ops/list-for-user/Cargo.toml +++ b/packages/services/upload/ops/list-for-user/Cargo.toml @@ -12,8 +12,7 @@ chrono = "0.4" prost = "0.10" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/upload/ops/prepare/Cargo.toml b/packages/services/upload/ops/prepare/Cargo.toml index ae61f4eb18..175815bfc6 100644 --- a/packages/services/upload/ops/prepare/Cargo.toml +++ b/packages/services/upload/ops/prepare/Cargo.toml @@ -13,8 +13,7 @@ prost = "0.10" s3-util = { path = "../../../../common/s3-util" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/upload/worker/Cargo.toml b/packages/services/upload/worker/Cargo.toml index 31544cbc25..45f64df35e 100644 --- a/packages/services/upload/worker/Cargo.toml +++ b/packages/services/upload/worker/Cargo.toml @@ -15,8 +15,7 @@ s3-util = { path = "../../../common/s3-util" } rivet-config = { version = "0.1.0", path = "../../../common/config" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/user-identity/ops/delete/Cargo.toml b/packages/services/user-identity/ops/delete/Cargo.toml index f5102bc536..3076a918be 100644 --- a/packages/services/user-identity/ops/delete/Cargo.toml +++ b/packages/services/user-identity/ops/delete/Cargo.toml @@ -11,8 +11,7 @@ chirp-client = { path = "../../../../common/chirp/client" } prost = "0.10" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/user-identity/ops/get/Cargo.toml b/packages/services/user-identity/ops/get/Cargo.toml index d2e236b9c6..4925e242de 100644 --- a/packages/services/user-identity/ops/get/Cargo.toml +++ b/packages/services/user-identity/ops/get/Cargo.toml @@ -13,8 +13,7 @@ user-get = { version = "0.0.1", path = "../../../user/ops/get" } rivet-config = { version = "0.1.0", path = "../../../../common/config" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/user/ops/avatar-upload-complete/Cargo.toml b/packages/services/user/ops/avatar-upload-complete/Cargo.toml index 6bf0d0cc8a..0f0a6ae267 100644 --- a/packages/services/user/ops/avatar-upload-complete/Cargo.toml +++ b/packages/services/user/ops/avatar-upload-complete/Cargo.toml @@ -13,8 +13,7 @@ prost = "0.10" upload-complete = { path = "../../../upload/ops/complete" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/user/ops/get/Cargo.toml b/packages/services/user/ops/get/Cargo.toml index 0d58d6685d..36845dc37b 100644 --- a/packages/services/user/ops/get/Cargo.toml +++ b/packages/services/user/ops/get/Cargo.toml @@ -14,8 +14,7 @@ upload-file-list = { path = "../../../upload/ops/file-list" } upload-get = { path = "../../../upload/ops/get" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/user/ops/pending-delete-toggle/Cargo.toml b/packages/services/user/ops/pending-delete-toggle/Cargo.toml index c3d3532221..373fb91125 100644 --- a/packages/services/user/ops/pending-delete-toggle/Cargo.toml +++ b/packages/services/user/ops/pending-delete-toggle/Cargo.toml @@ -13,8 +13,7 @@ prost = "0.10" user-identity-get = { path = "../../../user-identity/ops/get" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/user/ops/profile-validate/Cargo.toml b/packages/services/user/ops/profile-validate/Cargo.toml index d5bfe86cfd..658e4533bf 100644 --- a/packages/services/user/ops/profile-validate/Cargo.toml +++ b/packages/services/user/ops/profile-validate/Cargo.toml @@ -13,8 +13,7 @@ prost = "0.10" user-get = { path = "../get" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/user/ops/resolve-email/Cargo.toml b/packages/services/user/ops/resolve-email/Cargo.toml index 0d683653c8..4ee36f8dd2 100644 --- a/packages/services/user/ops/resolve-email/Cargo.toml +++ b/packages/services/user/ops/resolve-email/Cargo.toml @@ -11,8 +11,7 @@ chirp-client = { path = "../../../../common/chirp/client" } prost = "0.10" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/user/ops/team-list/Cargo.toml b/packages/services/user/ops/team-list/Cargo.toml index 09d0a29df6..01cf51da4e 100644 --- a/packages/services/user/ops/team-list/Cargo.toml +++ b/packages/services/user/ops/team-list/Cargo.toml @@ -11,8 +11,7 @@ chirp-client = { path = "../../../../common/chirp/client" } prost = "0.10" [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/user/ops/token-create/Cargo.toml b/packages/services/user/ops/token-create/Cargo.toml index fbe1ee06a2..a35934e40f 100644 --- a/packages/services/user/ops/token-create/Cargo.toml +++ b/packages/services/user/ops/token-create/Cargo.toml @@ -13,8 +13,7 @@ prost = "0.10" token-create = { path = "../../../token/ops/create" } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/packages/services/workflow/standalone/metrics-publish/Cargo.toml b/packages/services/workflow/standalone/metrics-publish/Cargo.toml index 6219121392..ff4b1d78dd 100644 --- a/packages/services/workflow/standalone/metrics-publish/Cargo.toml +++ b/packages/services/workflow/standalone/metrics-publish/Cargo.toml @@ -18,8 +18,7 @@ tracing = "0.1" tracing-subscriber = { version = "0.3", default-features = false, features = ["fmt", "json", "ansi"] } [dependencies.sqlx] -git = "https://github.com/rivet-gg/sqlx" -rev = "e7120f59b74fb6d83ac9b1d899b166bab31ba1d6" +path = "../../../../../externals/sqlx" default-features = false [dev-dependencies] diff --git a/scripts/fern/check.sh b/scripts/fern/check.sh index 4554ac4ce6..9b5cae4fae 100755 --- a/scripts/fern/check.sh +++ b/scripts/fern/check.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash set -euf -o pipefail -(cd sdks && npx -p fern-api fern check --warnings) +(cd sdks && npx -p fern-api@0.44.11 fern check --warnings) diff --git a/scripts/fern/gen_inner.sh b/scripts/fern/gen_inner.sh index 0590df937f..072b329d76 100755 --- a/scripts/fern/gen_inner.sh +++ b/scripts/fern/gen_inner.sh @@ -2,7 +2,7 @@ set -euf -o pipefail # Generate Fern libraries -(cd sdks && FERN_NO_VERSION_REDIRECTION=true FERN_DISABLE_TELEMETRY=true npx -p fern-api fern generate --local --group $FERN_GROUP --log-level debug) +(cd sdks && FERN_NO_VERSION_REDIRECTION=true FERN_DISABLE_TELEMETRY=true npx -p fern-api@0.44.11 fern generate --local --group $FERN_GROUP --log-level debug) # Add missing deps (cd sdks/$FERN_GROUP/typescript && nix-shell -p jq --run 'jq ".devDependencies[\"@types/node-fetch\"] = \"2.6.11\"" package.json > package.json.tmp && mv package.json.tmp package.json') diff --git a/scripts/openapi/gen_rust.sh b/scripts/openapi/gen_rust.sh index b73ad5ceba..a2d28dddb6 100755 --- a/scripts/openapi/gen_rust.sh +++ b/scripts/openapi/gen_rust.sh @@ -30,3 +30,7 @@ if [ "$FERN_GROUP" == "full" ]; then # HACK: Modify libraries to disallow unknown fields in config find $GEN_PATH_RUST_CLI -name "cloud_version_*.rs" -exec sed -i 's/\(#\[derive.*Deserialize.*\]\)/\1\n#[serde(deny_unknown_fields)]/g' {} \; fi + +# Format SDKs +cargo fmt + diff --git a/sdks/full/rust/src/apis/actor_api.rs b/sdks/full/rust/src/apis/actor_api.rs index 765271de25..426517985e 100644 --- a/sdks/full/rust/src/apis/actor_api.rs +++ b/sdks/full/rust/src/apis/actor_api.rs @@ -4,222 +4,284 @@ * 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 super::{configuration, Error}; use crate::apis::ResponseContent; -use super::{Error, configuration}; - /// struct for typed errors of method [`actor_create`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum ActorCreateError { - 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), + 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 [`actor_destroy`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum ActorDestroyError { - 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), + 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 [`actor_get`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum ActorGetError { - 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), + 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 [`actor_list`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum ActorListError { - 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), + 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 actor. -pub async fn actor_create(configuration: &configuration::Configuration, actor_create_actor_request: crate::models::ActorCreateActorRequest) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/actors", 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(&actor_create_actor_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)) - } +pub async fn actor_create( + configuration: &configuration::Configuration, + actor_create_actor_request: crate::models::ActorCreateActorRequest, +) -> Result> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!("{}/actors", 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(&actor_create_actor_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 actor. -pub async fn actor_destroy(configuration: &configuration::Configuration, actor: &str, project: Option<&str>, environment: Option<&str>, override_kill_timeout: Option) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/actors/{actor}", local_var_configuration.base_path, actor=crate::apis::urlencode(actor)); - let mut local_var_req_builder = local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str()); - - if let Some(ref local_var_str) = project { - local_var_req_builder = local_var_req_builder.query(&[("project", &local_var_str.to_string())]); - } - if let Some(ref local_var_str) = environment { - local_var_req_builder = local_var_req_builder.query(&[("environment", &local_var_str.to_string())]); - } - if let Some(ref local_var_str) = override_kill_timeout { - local_var_req_builder = local_var_req_builder.query(&[("override_kill_timeout", &local_var_str.to_string())]); - } - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - - 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)) - } +pub async fn actor_destroy( + configuration: &configuration::Configuration, + actor: &str, + project: Option<&str>, + environment: Option<&str>, + override_kill_timeout: Option, +) -> Result> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/actors/{actor}", + local_var_configuration.base_path, + actor = crate::apis::urlencode(actor) + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str()); + + if let Some(ref local_var_str) = project { + local_var_req_builder = + local_var_req_builder.query(&[("project", &local_var_str.to_string())]); + } + if let Some(ref local_var_str) = environment { + local_var_req_builder = + local_var_req_builder.query(&[("environment", &local_var_str.to_string())]); + } + if let Some(ref local_var_str) = override_kill_timeout { + local_var_req_builder = + local_var_req_builder.query(&[("override_kill_timeout", &local_var_str.to_string())]); + } + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + + 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)) + } } /// Gets a dynamic actor. -pub async fn actor_get(configuration: &configuration::Configuration, actor: &str, project: Option<&str>, environment: Option<&str>) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/actors/{actor}", local_var_configuration.base_path, actor=crate::apis::urlencode(actor)); - 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_str) = project { - local_var_req_builder = local_var_req_builder.query(&[("project", &local_var_str.to_string())]); - } - if let Some(ref local_var_str) = environment { - local_var_req_builder = local_var_req_builder.query(&[("environment", &local_var_str.to_string())]); - } - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - - 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)) - } +pub async fn actor_get( + configuration: &configuration::Configuration, + actor: &str, + project: Option<&str>, + environment: Option<&str>, +) -> Result> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/actors/{actor}", + local_var_configuration.base_path, + actor = crate::apis::urlencode(actor) + ); + 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_str) = project { + local_var_req_builder = + local_var_req_builder.query(&[("project", &local_var_str.to_string())]); + } + if let Some(ref local_var_str) = environment { + local_var_req_builder = + local_var_req_builder.query(&[("environment", &local_var_str.to_string())]); + } + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + + 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)) + } } /// Lists all actors associated with the token used. Can be filtered by tags in the query string. -pub async fn actor_list(configuration: &configuration::Configuration, project: Option<&str>, environment: Option<&str>, tags_json: Option<&str>, include_destroyed: Option, cursor: Option<&str>) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/actors", local_var_configuration.base_path); - 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_str) = project { - local_var_req_builder = local_var_req_builder.query(&[("project", &local_var_str.to_string())]); - } - if let Some(ref local_var_str) = environment { - local_var_req_builder = local_var_req_builder.query(&[("environment", &local_var_str.to_string())]); - } - if let Some(ref local_var_str) = tags_json { - local_var_req_builder = local_var_req_builder.query(&[("tags_json", &local_var_str.to_string())]); - } - if let Some(ref local_var_str) = include_destroyed { - local_var_req_builder = local_var_req_builder.query(&[("include_destroyed", &local_var_str.to_string())]); - } - if let Some(ref local_var_str) = cursor { - local_var_req_builder = local_var_req_builder.query(&[("cursor", &local_var_str.to_string())]); - } - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - - 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)) - } +pub async fn actor_list( + configuration: &configuration::Configuration, + project: Option<&str>, + environment: Option<&str>, + tags_json: Option<&str>, + include_destroyed: Option, + cursor: Option<&str>, +) -> Result> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!("{}/actors", local_var_configuration.base_path); + 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_str) = project { + local_var_req_builder = + local_var_req_builder.query(&[("project", &local_var_str.to_string())]); + } + if let Some(ref local_var_str) = environment { + local_var_req_builder = + local_var_req_builder.query(&[("environment", &local_var_str.to_string())]); + } + if let Some(ref local_var_str) = tags_json { + local_var_req_builder = + local_var_req_builder.query(&[("tags_json", &local_var_str.to_string())]); + } + if let Some(ref local_var_str) = include_destroyed { + local_var_req_builder = + local_var_req_builder.query(&[("include_destroyed", &local_var_str.to_string())]); + } + if let Some(ref local_var_str) = cursor { + local_var_req_builder = + local_var_req_builder.query(&[("cursor", &local_var_str.to_string())]); + } + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + serde_json::from_str(&local_var_content).map_err(Error::from) + } else { + let local_var_entity: Option = + serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { + status: local_var_status, + content: local_var_content, + entity: local_var_entity, + }; + Err(Error::ResponseError(local_var_error)) + } } - diff --git a/sdks/full/rust/src/apis/actor_builds_api.rs b/sdks/full/rust/src/apis/actor_builds_api.rs index b5e053e283..704abe4e48 100644 --- a/sdks/full/rust/src/apis/actor_builds_api.rs +++ b/sdks/full/rust/src/apis/actor_builds_api.rs @@ -4,272 +4,354 @@ * 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 super::{configuration, Error}; use crate::apis::ResponseContent; -use super::{Error, configuration}; - /// struct for typed errors of method [`actor_builds_complete`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum ActorBuildsCompleteError { - 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), + 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 [`actor_builds_get`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum ActorBuildsGetError { - 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), + 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 [`actor_builds_list`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum ActorBuildsListError { - 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), + 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 [`actor_builds_patch_tags`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum ActorBuildsPatchTagsError { - 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), + 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 [`actor_builds_prepare`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum ActorBuildsPrepareError { - 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), + 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), } - /// Marks an upload as complete. -pub async fn actor_builds_complete(configuration: &configuration::Configuration, build: &str, project: Option<&str>, environment: Option<&str>) -> Result<(), Error> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/builds/{build}/complete", local_var_configuration.base_path, build=crate::apis::urlencode(build)); - 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_str) = project { - local_var_req_builder = local_var_req_builder.query(&[("project", &local_var_str.to_string())]); - } - if let Some(ref local_var_str) = environment { - local_var_req_builder = local_var_req_builder.query(&[("environment", &local_var_str.to_string())]); - } - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - - 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)) - } +pub async fn actor_builds_complete( + configuration: &configuration::Configuration, + build: &str, + project: Option<&str>, + environment: Option<&str>, +) -> Result<(), Error> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/builds/{build}/complete", + local_var_configuration.base_path, + build = crate::apis::urlencode(build) + ); + 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_str) = project { + local_var_req_builder = + local_var_req_builder.query(&[("project", &local_var_str.to_string())]); + } + if let Some(ref local_var_str) = environment { + local_var_req_builder = + local_var_req_builder.query(&[("environment", &local_var_str.to_string())]); + } + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + + 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)) + } } /// Lists all builds of the project associated with the token used. Can be filtered by tags in the query string. -pub async fn actor_builds_get(configuration: &configuration::Configuration, build: &str, project: Option<&str>, environment: Option<&str>, tags_json: Option<&str>) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/builds/{build}", local_var_configuration.base_path, build=crate::apis::urlencode(build)); - 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_str) = project { - local_var_req_builder = local_var_req_builder.query(&[("project", &local_var_str.to_string())]); - } - if let Some(ref local_var_str) = environment { - local_var_req_builder = local_var_req_builder.query(&[("environment", &local_var_str.to_string())]); - } - if let Some(ref local_var_str) = tags_json { - local_var_req_builder = local_var_req_builder.query(&[("tags_json", &local_var_str.to_string())]); - } - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - - 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)) - } +pub async fn actor_builds_get( + configuration: &configuration::Configuration, + build: &str, + project: Option<&str>, + environment: Option<&str>, + tags_json: Option<&str>, +) -> Result> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/builds/{build}", + local_var_configuration.base_path, + build = crate::apis::urlencode(build) + ); + 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_str) = project { + local_var_req_builder = + local_var_req_builder.query(&[("project", &local_var_str.to_string())]); + } + if let Some(ref local_var_str) = environment { + local_var_req_builder = + local_var_req_builder.query(&[("environment", &local_var_str.to_string())]); + } + if let Some(ref local_var_str) = tags_json { + local_var_req_builder = + local_var_req_builder.query(&[("tags_json", &local_var_str.to_string())]); + } + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + + 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)) + } } /// Lists all builds of the project associated with the token used. Can be filtered by tags in the query string. -pub async fn actor_builds_list(configuration: &configuration::Configuration, project: Option<&str>, environment: Option<&str>, tags_json: Option<&str>) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/builds", local_var_configuration.base_path); - 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_str) = project { - local_var_req_builder = local_var_req_builder.query(&[("project", &local_var_str.to_string())]); - } - if let Some(ref local_var_str) = environment { - local_var_req_builder = local_var_req_builder.query(&[("environment", &local_var_str.to_string())]); - } - if let Some(ref local_var_str) = tags_json { - local_var_req_builder = local_var_req_builder.query(&[("tags_json", &local_var_str.to_string())]); - } - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - - 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)) - } +pub async fn actor_builds_list( + configuration: &configuration::Configuration, + project: Option<&str>, + environment: Option<&str>, + tags_json: Option<&str>, +) -> Result> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!("{}/builds", local_var_configuration.base_path); + 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_str) = project { + local_var_req_builder = + local_var_req_builder.query(&[("project", &local_var_str.to_string())]); + } + if let Some(ref local_var_str) = environment { + local_var_req_builder = + local_var_req_builder.query(&[("environment", &local_var_str.to_string())]); + } + if let Some(ref local_var_str) = tags_json { + local_var_req_builder = + local_var_req_builder.query(&[("tags_json", &local_var_str.to_string())]); + } + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + + 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)) + } } -pub async fn actor_builds_patch_tags(configuration: &configuration::Configuration, build: &str, actor_patch_build_tags_request: crate::models::ActorPatchBuildTagsRequest, project: Option<&str>, environment: Option<&str>) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/builds/{build}/tags", local_var_configuration.base_path, build=crate::apis::urlencode(build)); - let mut local_var_req_builder = local_var_client.request(reqwest::Method::PATCH, local_var_uri_str.as_str()); - - if let Some(ref local_var_str) = project { - local_var_req_builder = local_var_req_builder.query(&[("project", &local_var_str.to_string())]); - } - if let Some(ref local_var_str) = environment { - local_var_req_builder = local_var_req_builder.query(&[("environment", &local_var_str.to_string())]); - } - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - local_var_req_builder = local_var_req_builder.json(&actor_patch_build_tags_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)) - } +pub async fn actor_builds_patch_tags( + configuration: &configuration::Configuration, + build: &str, + actor_patch_build_tags_request: crate::models::ActorPatchBuildTagsRequest, + project: Option<&str>, + environment: Option<&str>, +) -> Result> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/builds/{build}/tags", + local_var_configuration.base_path, + build = crate::apis::urlencode(build) + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::PATCH, local_var_uri_str.as_str()); + + if let Some(ref local_var_str) = project { + local_var_req_builder = + local_var_req_builder.query(&[("project", &local_var_str.to_string())]); + } + if let Some(ref local_var_str) = environment { + local_var_req_builder = + local_var_req_builder.query(&[("environment", &local_var_str.to_string())]); + } + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + local_var_req_builder = local_var_req_builder.json(&actor_patch_build_tags_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)) + } } /// Creates a new project build for the given project. -pub async fn actor_builds_prepare(configuration: &configuration::Configuration, actor_prepare_build_request: crate::models::ActorPrepareBuildRequest, project: Option<&str>, environment: Option<&str>) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/builds/prepare", 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_str) = project { - local_var_req_builder = local_var_req_builder.query(&[("project", &local_var_str.to_string())]); - } - if let Some(ref local_var_str) = environment { - local_var_req_builder = local_var_req_builder.query(&[("environment", &local_var_str.to_string())]); - } - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - local_var_req_builder = local_var_req_builder.json(&actor_prepare_build_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)) - } +pub async fn actor_builds_prepare( + configuration: &configuration::Configuration, + actor_prepare_build_request: crate::models::ActorPrepareBuildRequest, + project: Option<&str>, + environment: Option<&str>, +) -> Result> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!("{}/builds/prepare", 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_str) = project { + local_var_req_builder = + local_var_req_builder.query(&[("project", &local_var_str.to_string())]); + } + if let Some(ref local_var_str) = environment { + local_var_req_builder = + local_var_req_builder.query(&[("environment", &local_var_str.to_string())]); + } + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + local_var_req_builder = local_var_req_builder.json(&actor_prepare_build_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)) + } } - diff --git a/sdks/full/rust/src/apis/actor_logs_api.rs b/sdks/full/rust/src/apis/actor_logs_api.rs index 461db7db1d..e5136cbffe 100644 --- a/sdks/full/rust/src/apis/actor_logs_api.rs +++ b/sdks/full/rust/src/apis/actor_logs_api.rs @@ -4,69 +4,86 @@ * 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 super::{configuration, Error}; use crate::apis::ResponseContent; -use super::{Error, configuration}; - /// struct for typed errors of method [`actor_logs_get`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum ActorLogsGetError { - 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), + 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), } - /// Returns the logs for a given actor. -pub async fn actor_logs_get(configuration: &configuration::Configuration, actor: &str, stream: crate::models::ActorLogStream, project: Option<&str>, environment: Option<&str>, watch_index: Option<&str>) -> Result> { - let local_var_configuration = configuration; +pub async fn actor_logs_get( + configuration: &configuration::Configuration, + actor: &str, + stream: crate::models::ActorLogStream, + project: Option<&str>, + environment: Option<&str>, + watch_index: Option<&str>, +) -> Result> { + let local_var_configuration = configuration; - let local_var_client = &local_var_configuration.client; + let local_var_client = &local_var_configuration.client; - let local_var_uri_str = format!("{}/actors/{actor}/logs", local_var_configuration.base_path, actor=crate::apis::urlencode(actor)); - let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str()); + let local_var_uri_str = format!( + "{}/actors/{actor}/logs", + local_var_configuration.base_path, + actor = crate::apis::urlencode(actor) + ); + 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_str) = project { - local_var_req_builder = local_var_req_builder.query(&[("project", &local_var_str.to_string())]); - } - if let Some(ref local_var_str) = environment { - local_var_req_builder = local_var_req_builder.query(&[("environment", &local_var_str.to_string())]); - } - local_var_req_builder = local_var_req_builder.query(&[("stream", &stream.to_string())]); - if let Some(ref local_var_str) = watch_index { - local_var_req_builder = local_var_req_builder.query(&[("watch_index", &local_var_str.to_string())]); - } - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; + if let Some(ref local_var_str) = project { + local_var_req_builder = + local_var_req_builder.query(&[("project", &local_var_str.to_string())]); + } + if let Some(ref local_var_str) = environment { + local_var_req_builder = + local_var_req_builder.query(&[("environment", &local_var_str.to_string())]); + } + local_var_req_builder = local_var_req_builder.query(&[("stream", &stream.to_string())]); + if let Some(ref local_var_str) = watch_index { + local_var_req_builder = + local_var_req_builder.query(&[("watch_index", &local_var_str.to_string())]); + } + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; - let local_var_req = local_var_req_builder.build()?; - let local_var_resp = local_var_client.execute(local_var_req).await?; + 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?; + 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)) - } + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + serde_json::from_str(&local_var_content).map_err(Error::from) + } else { + let local_var_entity: Option = + serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { + status: local_var_status, + content: local_var_content, + entity: local_var_entity, + }; + Err(Error::ResponseError(local_var_error)) + } } - diff --git a/sdks/full/rust/src/apis/actor_regions_api.rs b/sdks/full/rust/src/apis/actor_regions_api.rs index 4dacb2916b..965ea3902a 100644 --- a/sdks/full/rust/src/apis/actor_regions_api.rs +++ b/sdks/full/rust/src/apis/actor_regions_api.rs @@ -4,64 +4,73 @@ * 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 super::{configuration, Error}; use crate::apis::ResponseContent; -use super::{Error, configuration}; - /// struct for typed errors of method [`actor_regions_list`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum ActorRegionsListError { - 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), + 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), } +pub async fn actor_regions_list( + configuration: &configuration::Configuration, + project: Option<&str>, + environment: Option<&str>, +) -> Result> { + let local_var_configuration = configuration; -pub async fn actor_regions_list(configuration: &configuration::Configuration, project: Option<&str>, environment: Option<&str>) -> Result> { - let local_var_configuration = configuration; + let local_var_client = &local_var_configuration.client; - let local_var_client = &local_var_configuration.client; + let local_var_uri_str = format!("{}/regions", local_var_configuration.base_path); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str()); - let local_var_uri_str = format!("{}/regions", local_var_configuration.base_path); - 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_str) = project { + local_var_req_builder = + local_var_req_builder.query(&[("project", &local_var_str.to_string())]); + } + if let Some(ref local_var_str) = environment { + local_var_req_builder = + local_var_req_builder.query(&[("environment", &local_var_str.to_string())]); + } + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; - if let Some(ref local_var_str) = project { - local_var_req_builder = local_var_req_builder.query(&[("project", &local_var_str.to_string())]); - } - if let Some(ref local_var_str) = environment { - local_var_req_builder = local_var_req_builder.query(&[("environment", &local_var_str.to_string())]); - } - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; - 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?; - 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)) - } + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + serde_json::from_str(&local_var_content).map_err(Error::from) + } else { + let local_var_entity: Option = + serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { + status: local_var_status, + content: local_var_content, + entity: local_var_entity, + }; + Err(Error::ResponseError(local_var_error)) + } } - diff --git a/sdks/full/rust/src/apis/auth_identity_email_api.rs b/sdks/full/rust/src/apis/auth_identity_email_api.rs index 751bdad564..01663ebd12 100644 --- a/sdks/full/rust/src/apis/auth_identity_email_api.rs +++ b/sdks/full/rust/src/apis/auth_identity_email_api.rs @@ -4,105 +4,135 @@ * 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 super::{configuration, Error}; use crate::apis::ResponseContent; -use super::{Error, configuration}; - /// struct for typed errors of method [`auth_identity_email_complete_email_verification`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum AuthIdentityEmailCompleteEmailVerificationError { - 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), + 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 [`auth_identity_email_start_email_verification`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum AuthIdentityEmailStartEmailVerificationError { - 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), + 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), } - /// Completes the email verification process. -pub async fn auth_identity_email_complete_email_verification(configuration: &configuration::Configuration, auth_identity_complete_email_verification_request: crate::models::AuthIdentityCompleteEmailVerificationRequest) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/auth/identity/email/complete-verification", 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(&auth_identity_complete_email_verification_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)) - } +pub async fn auth_identity_email_complete_email_verification( + configuration: &configuration::Configuration, + auth_identity_complete_email_verification_request: crate::models::AuthIdentityCompleteEmailVerificationRequest, +) -> Result< + crate::models::AuthIdentityCompleteEmailVerificationResponse, + Error, +> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/auth/identity/email/complete-verification", + 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(&auth_identity_complete_email_verification_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)) + } } /// Starts the verification process for linking an email to your identity. -pub async fn auth_identity_email_start_email_verification(configuration: &configuration::Configuration, auth_identity_start_email_verification_request: crate::models::AuthIdentityStartEmailVerificationRequest) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/auth/identity/email/start-verification", 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(&auth_identity_start_email_verification_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)) - } +pub async fn auth_identity_email_start_email_verification( + configuration: &configuration::Configuration, + auth_identity_start_email_verification_request: crate::models::AuthIdentityStartEmailVerificationRequest, +) -> Result< + crate::models::AuthIdentityStartEmailVerificationResponse, + Error, +> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/auth/identity/email/start-verification", + 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(&auth_identity_start_email_verification_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)) + } } - diff --git a/sdks/full/rust/src/apis/auth_tokens_api.rs b/sdks/full/rust/src/apis/auth_tokens_api.rs index 1890915227..e528d6d633 100644 --- a/sdks/full/rust/src/apis/auth_tokens_api.rs +++ b/sdks/full/rust/src/apis/auth_tokens_api.rs @@ -4,60 +4,69 @@ * 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 super::{configuration, Error}; use crate::apis::ResponseContent; -use super::{Error, configuration}; - /// struct for typed errors of method [`auth_tokens_refresh_identity_token`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum AuthTokensRefreshIdentityTokenError { - 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), + 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), } - /// Refreshes the current identity's token and sets authentication headers. -pub async fn auth_tokens_refresh_identity_token(configuration: &configuration::Configuration, auth_refresh_identity_token_request: crate::models::AuthRefreshIdentityTokenRequest) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/auth/tokens/identity", 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(&auth_refresh_identity_token_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)) - } -} +pub async fn auth_tokens_refresh_identity_token( + configuration: &configuration::Configuration, + auth_refresh_identity_token_request: crate::models::AuthRefreshIdentityTokenRequest, +) -> Result< + crate::models::AuthRefreshIdentityTokenResponse, + Error, +> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + let local_var_uri_str = format!("{}/auth/tokens/identity", 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(&auth_refresh_identity_token_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)) + } +} diff --git a/sdks/full/rust/src/apis/cloud_api.rs b/sdks/full/rust/src/apis/cloud_api.rs index a440747fbd..60482ad366 100644 --- a/sdks/full/rust/src/apis/cloud_api.rs +++ b/sdks/full/rust/src/apis/cloud_api.rs @@ -4,59 +4,64 @@ * 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 super::{configuration, Error}; use crate::apis::ResponseContent; -use super::{Error, configuration}; - /// struct for typed errors of method [`cloud_bootstrap`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum CloudBootstrapError { - 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), + 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), } - /// Returns the basic information required to use the cloud APIs. -pub async fn cloud_bootstrap(configuration: &configuration::Configuration, ) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/cloud/bootstrap", local_var_configuration.base_path); - 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 { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - - let local_var_req = local_var_req_builder.build()?; - let local_var_resp = local_var_client.execute(local_var_req).await?; - - let local_var_status = local_var_resp.status(); - let local_var_content = local_var_resp.text().await?; - - if !local_var_status.is_client_error() && !local_var_status.is_server_error() { - serde_json::from_str(&local_var_content).map_err(Error::from) - } else { - let local_var_entity: Option = serde_json::from_str(&local_var_content).ok(); - let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity }; - Err(Error::ResponseError(local_var_error)) - } -} +pub async fn cloud_bootstrap( + configuration: &configuration::Configuration, +) -> Result> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + let local_var_uri_str = format!("{}/cloud/bootstrap", local_var_configuration.base_path); + 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 { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + serde_json::from_str(&local_var_content).map_err(Error::from) + } else { + let local_var_entity: Option = + serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { + status: local_var_status, + content: local_var_content, + entity: local_var_entity, + }; + Err(Error::ResponseError(local_var_error)) + } +} diff --git a/sdks/full/rust/src/apis/cloud_auth_api.rs b/sdks/full/rust/src/apis/cloud_auth_api.rs index dd9b6ace1c..e400bc46b1 100644 --- a/sdks/full/rust/src/apis/cloud_auth_api.rs +++ b/sdks/full/rust/src/apis/cloud_auth_api.rs @@ -4,59 +4,64 @@ * 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 super::{configuration, Error}; use crate::apis::ResponseContent; -use super::{Error, configuration}; - /// struct for typed errors of method [`cloud_auth_inspect`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum CloudAuthInspectError { - 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), + 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), } - /// Returns information about the current authenticated agent. -pub async fn cloud_auth_inspect(configuration: &configuration::Configuration, ) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/cloud/auth/inspect", local_var_configuration.base_path); - 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 { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - - let local_var_req = local_var_req_builder.build()?; - let local_var_resp = local_var_client.execute(local_var_req).await?; - - let local_var_status = local_var_resp.status(); - let local_var_content = local_var_resp.text().await?; - - if !local_var_status.is_client_error() && !local_var_status.is_server_error() { - serde_json::from_str(&local_var_content).map_err(Error::from) - } else { - let local_var_entity: Option = serde_json::from_str(&local_var_content).ok(); - let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity }; - Err(Error::ResponseError(local_var_error)) - } -} +pub async fn cloud_auth_inspect( + configuration: &configuration::Configuration, +) -> Result> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + let local_var_uri_str = format!("{}/cloud/auth/inspect", local_var_configuration.base_path); + 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 { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + serde_json::from_str(&local_var_content).map_err(Error::from) + } else { + let local_var_entity: Option = + serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { + status: local_var_status, + content: local_var_content, + entity: local_var_entity, + }; + Err(Error::ResponseError(local_var_error)) + } +} diff --git a/sdks/full/rust/src/apis/cloud_devices_links_api.rs b/sdks/full/rust/src/apis/cloud_devices_links_api.rs index ded16ed7e6..2d5c04d917 100644 --- a/sdks/full/rust/src/apis/cloud_devices_links_api.rs +++ b/sdks/full/rust/src/apis/cloud_devices_links_api.rs @@ -4,140 +4,174 @@ * 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 super::{configuration, Error}; use crate::apis::ResponseContent; -use super::{Error, configuration}; - /// struct for typed errors of method [`cloud_devices_links_complete`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum CloudDevicesLinksCompleteError { - 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), + 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 [`cloud_devices_links_get`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum CloudDevicesLinksGetError { - 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), + 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 [`cloud_devices_links_prepare`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum CloudDevicesLinksPrepareError { - 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), + 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), } - -pub async fn cloud_devices_links_complete(configuration: &configuration::Configuration, cloud_devices_complete_device_link_request: crate::models::CloudDevicesCompleteDeviceLinkRequest) -> Result<(), Error> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/cloud/devices/links/complete", 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()); - } - local_var_req_builder = local_var_req_builder.json(&cloud_devices_complete_device_link_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)) - } +pub async fn cloud_devices_links_complete( + configuration: &configuration::Configuration, + cloud_devices_complete_device_link_request: crate::models::CloudDevicesCompleteDeviceLinkRequest, +) -> Result<(), Error> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/cloud/devices/links/complete", + 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()); + } + local_var_req_builder = local_var_req_builder.json(&cloud_devices_complete_device_link_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)) + } } -pub async fn cloud_devices_links_get(configuration: &configuration::Configuration, device_link_token: &str, watch_index: Option<&str>) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/cloud/devices/links", local_var_configuration.base_path); - let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str()); - - local_var_req_builder = local_var_req_builder.query(&[("device_link_token", &device_link_token.to_string())]); - if let Some(ref local_var_str) = watch_index { - local_var_req_builder = local_var_req_builder.query(&[("watch_index", &local_var_str.to_string())]); - } - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - - 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)) - } +pub async fn cloud_devices_links_get( + configuration: &configuration::Configuration, + device_link_token: &str, + watch_index: Option<&str>, +) -> Result> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!("{}/cloud/devices/links", local_var_configuration.base_path); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str()); + + local_var_req_builder = + local_var_req_builder.query(&[("device_link_token", &device_link_token.to_string())]); + if let Some(ref local_var_str) = watch_index { + local_var_req_builder = + local_var_req_builder.query(&[("watch_index", &local_var_str.to_string())]); + } + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + + 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)) + } } -pub async fn cloud_devices_links_prepare(configuration: &configuration::Configuration, ) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/cloud/devices/links", 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()); - } - - 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)) - } +pub async fn cloud_devices_links_prepare( + configuration: &configuration::Configuration, +) -> Result< + crate::models::CloudDevicesPrepareDeviceLinkResponse, + Error, +> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!("{}/cloud/devices/links", 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()); + } + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + serde_json::from_str(&local_var_content).map_err(Error::from) + } else { + let local_var_entity: Option = + serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { + status: local_var_status, + content: local_var_content, + entity: local_var_entity, + }; + Err(Error::ResponseError(local_var_error)) + } } - diff --git a/sdks/full/rust/src/apis/cloud_games_api.rs b/sdks/full/rust/src/apis/cloud_games_api.rs index b9a0a98e2b..455760ed69 100644 --- a/sdks/full/rust/src/apis/cloud_games_api.rs +++ b/sdks/full/rust/src/apis/cloud_games_api.rs @@ -4,377 +4,490 @@ * 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 super::{configuration, Error}; use crate::apis::ResponseContent; -use super::{Error, configuration}; - /// struct for typed errors of method [`cloud_games_create_game`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum CloudGamesCreateGameError { - 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), + 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 [`cloud_games_game_banner_upload_complete`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum CloudGamesGameBannerUploadCompleteError { - 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), + 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 [`cloud_games_game_banner_upload_prepare`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum CloudGamesGameBannerUploadPrepareError { - 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), + 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 [`cloud_games_game_logo_upload_complete`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum CloudGamesGameLogoUploadCompleteError { - 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), + 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 [`cloud_games_game_logo_upload_prepare`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum CloudGamesGameLogoUploadPrepareError { - 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), + 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 [`cloud_games_get_game_by_id`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum CloudGamesGetGameByIdError { - 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), + 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 [`cloud_games_get_games`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum CloudGamesGetGamesError { - 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), + 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 [`cloud_games_validate_game`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum CloudGamesValidateGameError { - 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), + Status400(crate::models::ErrorBody), + Status403(crate::models::ErrorBody), + Status404(crate::models::ErrorBody), + Status408(crate::models::ErrorBody), + Status429(crate::models::ErrorBody), + Status500(crate::models::ErrorBody), + UnknownValue(serde_json::Value), } - /// Creates a new game. -pub async fn cloud_games_create_game(configuration: &configuration::Configuration, cloud_games_create_game_request: crate::models::CloudGamesCreateGameRequest) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/cloud/games", 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(&cloud_games_create_game_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)) - } +pub async fn cloud_games_create_game( + configuration: &configuration::Configuration, + cloud_games_create_game_request: crate::models::CloudGamesCreateGameRequest, +) -> Result> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!("{}/cloud/games", 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(&cloud_games_create_game_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)) + } } /// Completes an game banner image upload. Must be called after the file upload process completes. -pub async fn cloud_games_game_banner_upload_complete(configuration: &configuration::Configuration, game_id: &str, upload_id: &str) -> Result<(), Error> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/cloud/games/{game_id}/banner-upload/{upload_id}/complete", local_var_configuration.base_path, game_id=crate::apis::urlencode(game_id), upload_id=crate::apis::urlencode(upload_id)); - let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); - - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - - let local_var_req = local_var_req_builder.build()?; - let local_var_resp = local_var_client.execute(local_var_req).await?; - - let local_var_status = local_var_resp.status(); - let local_var_content = local_var_resp.text().await?; - - if !local_var_status.is_client_error() && !local_var_status.is_server_error() { - 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)) - } +pub async fn cloud_games_game_banner_upload_complete( + configuration: &configuration::Configuration, + game_id: &str, + upload_id: &str, +) -> Result<(), Error> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/cloud/games/{game_id}/banner-upload/{upload_id}/complete", + local_var_configuration.base_path, + game_id = crate::apis::urlencode(game_id), + upload_id = crate::apis::urlencode(upload_id) + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + 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)) + } } /// Prepares a game banner image upload. -pub async fn cloud_games_game_banner_upload_prepare(configuration: &configuration::Configuration, game_id: &str, cloud_games_game_banner_upload_prepare_request: crate::models::CloudGamesGameBannerUploadPrepareRequest) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/cloud/games/{game_id}/banner-upload/prepare", local_var_configuration.base_path, game_id=crate::apis::urlencode(game_id)); - let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); - - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - local_var_req_builder = local_var_req_builder.json(&cloud_games_game_banner_upload_prepare_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)) - } +pub async fn cloud_games_game_banner_upload_prepare( + configuration: &configuration::Configuration, + game_id: &str, + cloud_games_game_banner_upload_prepare_request: crate::models::CloudGamesGameBannerUploadPrepareRequest, +) -> Result< + crate::models::CloudGamesGameBannerUploadPrepareResponse, + Error, +> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/cloud/games/{game_id}/banner-upload/prepare", + local_var_configuration.base_path, + game_id = crate::apis::urlencode(game_id) + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + local_var_req_builder = + local_var_req_builder.json(&cloud_games_game_banner_upload_prepare_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)) + } } /// Completes a game logo image upload. Must be called after the file upload process completes. -pub async fn cloud_games_game_logo_upload_complete(configuration: &configuration::Configuration, game_id: &str, upload_id: &str) -> Result<(), Error> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/cloud/games/{game_id}/logo-upload/{upload_id}/complete", local_var_configuration.base_path, game_id=crate::apis::urlencode(game_id), upload_id=crate::apis::urlencode(upload_id)); - let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); - - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - - let local_var_req = local_var_req_builder.build()?; - let local_var_resp = local_var_client.execute(local_var_req).await?; - - let local_var_status = local_var_resp.status(); - let local_var_content = local_var_resp.text().await?; - - if !local_var_status.is_client_error() && !local_var_status.is_server_error() { - 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)) - } +pub async fn cloud_games_game_logo_upload_complete( + configuration: &configuration::Configuration, + game_id: &str, + upload_id: &str, +) -> Result<(), Error> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/cloud/games/{game_id}/logo-upload/{upload_id}/complete", + local_var_configuration.base_path, + game_id = crate::apis::urlencode(game_id), + upload_id = crate::apis::urlencode(upload_id) + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + 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)) + } } /// Prepares a game logo image upload. -pub async fn cloud_games_game_logo_upload_prepare(configuration: &configuration::Configuration, game_id: &str, cloud_games_game_logo_upload_prepare_request: crate::models::CloudGamesGameLogoUploadPrepareRequest) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/cloud/games/{game_id}/logo-upload/prepare", local_var_configuration.base_path, game_id=crate::apis::urlencode(game_id)); - let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); - - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - local_var_req_builder = local_var_req_builder.json(&cloud_games_game_logo_upload_prepare_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)) - } +pub async fn cloud_games_game_logo_upload_prepare( + configuration: &configuration::Configuration, + game_id: &str, + cloud_games_game_logo_upload_prepare_request: crate::models::CloudGamesGameLogoUploadPrepareRequest, +) -> Result< + crate::models::CloudGamesGameLogoUploadPrepareResponse, + Error, +> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/cloud/games/{game_id}/logo-upload/prepare", + local_var_configuration.base_path, + game_id = crate::apis::urlencode(game_id) + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + local_var_req_builder = + local_var_req_builder.json(&cloud_games_game_logo_upload_prepare_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)) + } } /// Returns a game by its game id. -pub async fn cloud_games_get_game_by_id(configuration: &configuration::Configuration, game_id: &str, watch_index: Option<&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}", 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_str) = watch_index { - local_var_req_builder = local_var_req_builder.query(&[("watch_index", &local_var_str.to_string())]); - } - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - - 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)) - } +pub async fn cloud_games_get_game_by_id( + configuration: &configuration::Configuration, + game_id: &str, + watch_index: Option<&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}", + 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_str) = watch_index { + local_var_req_builder = + local_var_req_builder.query(&[("watch_index", &local_var_str.to_string())]); + } + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + + 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)) + } } /// Returns a list of games in which the current identity is a group member of its development team. -pub async fn cloud_games_get_games(configuration: &configuration::Configuration, watch_index: Option<&str>) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/cloud/games", local_var_configuration.base_path); - 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_str) = watch_index { - local_var_req_builder = local_var_req_builder.query(&[("watch_index", &local_var_str.to_string())]); - } - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - - 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)) - } +pub async fn cloud_games_get_games( + configuration: &configuration::Configuration, + watch_index: Option<&str>, +) -> Result> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!("{}/cloud/games", local_var_configuration.base_path); + 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_str) = watch_index { + local_var_req_builder = + local_var_req_builder.query(&[("watch_index", &local_var_str.to_string())]); + } + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + + 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)) + } } /// Validates information used to create a new game. -pub async fn cloud_games_validate_game(configuration: &configuration::Configuration, cloud_games_validate_game_request: crate::models::CloudGamesValidateGameRequest) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/cloud/games/validate", 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(&cloud_games_validate_game_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)) - } +pub async fn cloud_games_validate_game( + configuration: &configuration::Configuration, + cloud_games_validate_game_request: crate::models::CloudGamesValidateGameRequest, +) -> Result> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!("{}/cloud/games/validate", 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(&cloud_games_validate_game_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)) + } } - diff --git a/sdks/full/rust/src/apis/cloud_games_avatars_api.rs b/sdks/full/rust/src/apis/cloud_games_avatars_api.rs index f8f658cb3b..f04e020c20 100644 --- a/sdks/full/rust/src/apis/cloud_games_avatars_api.rs +++ b/sdks/full/rust/src/apis/cloud_games_avatars_api.rs @@ -4,148 +4,196 @@ * 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 super::{configuration, Error}; use crate::apis::ResponseContent; -use super::{Error, configuration}; - /// struct for typed errors of method [`cloud_games_avatars_complete_custom_avatar_upload`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum CloudGamesAvatarsCompleteCustomAvatarUploadError { - 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), + 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 [`cloud_games_avatars_list_game_custom_avatars`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum CloudGamesAvatarsListGameCustomAvatarsError { - 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), + 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 [`cloud_games_avatars_prepare_custom_avatar_upload`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum CloudGamesAvatarsPrepareCustomAvatarUploadError { - 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), + 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), } - /// Completes a custom avatar image upload. Must be called after the file upload process completes. -pub async fn cloud_games_avatars_complete_custom_avatar_upload(configuration: &configuration::Configuration, game_id: &str, upload_id: &str) -> Result<(), Error> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/cloud/games/{game_id}/avatar-upload/{upload_id}/complete", local_var_configuration.base_path, game_id=crate::apis::urlencode(game_id), upload_id=crate::apis::urlencode(upload_id)); - let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); - - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - - let local_var_req = local_var_req_builder.build()?; - let local_var_resp = local_var_client.execute(local_var_req).await?; - - let local_var_status = local_var_resp.status(); - let local_var_content = local_var_resp.text().await?; - - if !local_var_status.is_client_error() && !local_var_status.is_server_error() { - 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)) - } +pub async fn cloud_games_avatars_complete_custom_avatar_upload( + configuration: &configuration::Configuration, + game_id: &str, + upload_id: &str, +) -> Result<(), Error> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/cloud/games/{game_id}/avatar-upload/{upload_id}/complete", + local_var_configuration.base_path, + game_id = crate::apis::urlencode(game_id), + upload_id = crate::apis::urlencode(upload_id) + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + 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)) + } } /// Lists custom avatars for the given game. -pub async fn cloud_games_avatars_list_game_custom_avatars(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}/avatars", 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 { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - - let local_var_req = local_var_req_builder.build()?; - let local_var_resp = local_var_client.execute(local_var_req).await?; - - let local_var_status = local_var_resp.status(); - let local_var_content = local_var_resp.text().await?; - - if !local_var_status.is_client_error() && !local_var_status.is_server_error() { - serde_json::from_str(&local_var_content).map_err(Error::from) - } else { - let local_var_entity: Option = serde_json::from_str(&local_var_content).ok(); - let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity }; - Err(Error::ResponseError(local_var_error)) - } +pub async fn cloud_games_avatars_list_game_custom_avatars( + configuration: &configuration::Configuration, + game_id: &str, +) -> Result< + crate::models::CloudGamesListGameCustomAvatarsResponse, + Error, +> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/cloud/games/{game_id}/avatars", + 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 { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + serde_json::from_str(&local_var_content).map_err(Error::from) + } else { + let local_var_entity: Option = + serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { + status: local_var_status, + content: local_var_content, + entity: local_var_entity, + }; + Err(Error::ResponseError(local_var_error)) + } } /// Prepares a custom avatar image upload. Complete upload with `rivet.api.cloud#CompleteCustomAvatarUpload`. -pub async fn cloud_games_avatars_prepare_custom_avatar_upload(configuration: &configuration::Configuration, game_id: &str, cloud_games_prepare_custom_avatar_upload_request: crate::models::CloudGamesPrepareCustomAvatarUploadRequest) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/cloud/games/{game_id}/prepare", local_var_configuration.base_path, game_id=crate::apis::urlencode(game_id)); - let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); - - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - local_var_req_builder = local_var_req_builder.json(&cloud_games_prepare_custom_avatar_upload_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)) - } +pub async fn cloud_games_avatars_prepare_custom_avatar_upload( + configuration: &configuration::Configuration, + game_id: &str, + cloud_games_prepare_custom_avatar_upload_request: crate::models::CloudGamesPrepareCustomAvatarUploadRequest, +) -> Result< + crate::models::CloudGamesPrepareCustomAvatarUploadResponse, + Error, +> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/cloud/games/{game_id}/prepare", + local_var_configuration.base_path, + game_id = crate::apis::urlencode(game_id) + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + local_var_req_builder = + local_var_req_builder.json(&cloud_games_prepare_custom_avatar_upload_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)) + } } - diff --git a/sdks/full/rust/src/apis/cloud_games_builds_api.rs b/sdks/full/rust/src/apis/cloud_games_builds_api.rs index d1bc1e91f6..8dcd39fabd 100644 --- a/sdks/full/rust/src/apis/cloud_games_builds_api.rs +++ b/sdks/full/rust/src/apis/cloud_games_builds_api.rs @@ -4,104 +4,135 @@ * 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 super::{configuration, Error}; use crate::apis::ResponseContent; -use super::{Error, configuration}; - /// struct for typed errors of method [`cloud_games_builds_create_game_build`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum CloudGamesBuildsCreateGameBuildError { - 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), + 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 [`cloud_games_builds_list_game_builds`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum CloudGamesBuildsListGameBuildsError { - 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), + Status400(crate::models::ErrorBody), + Status403(crate::models::ErrorBody), + Status404(crate::models::ErrorBody), + Status408(crate::models::ErrorBody), + Status429(crate::models::ErrorBody), + Status500(crate::models::ErrorBody), + UnknownValue(serde_json::Value), } - /// Creates a new game 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> { - 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 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(&cloud_games_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?; - - 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)) - } +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< + crate::models::CloudGamesCreateGameBuildResponse, + Error, +> { + 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 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(&cloud_games_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?; + + 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)) + } } /// Lists game builds for the given game. -pub async fn cloud_games_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 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 { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - - let local_var_req = local_var_req_builder.build()?; - let local_var_resp = local_var_client.execute(local_var_req).await?; - - let local_var_status = local_var_resp.status(); - let local_var_content = local_var_resp.text().await?; - - if !local_var_status.is_client_error() && !local_var_status.is_server_error() { - serde_json::from_str(&local_var_content).map_err(Error::from) - } else { - let local_var_entity: Option = serde_json::from_str(&local_var_content).ok(); - let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity }; - Err(Error::ResponseError(local_var_error)) - } +pub async fn cloud_games_builds_list_game_builds( + configuration: &configuration::Configuration, + game_id: &str, +) -> Result< + crate::models::CloudGamesListGameBuildsResponse, + Error, +> { + 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 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 { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + serde_json::from_str(&local_var_content).map_err(Error::from) + } else { + let local_var_entity: Option = + serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { + status: local_var_status, + content: local_var_content, + entity: local_var_entity, + }; + Err(Error::ResponseError(local_var_error)) + } } - diff --git a/sdks/full/rust/src/apis/cloud_games_cdn_api.rs b/sdks/full/rust/src/apis/cloud_games_cdn_api.rs index 7e017e7854..3c11c484c9 100644 --- a/sdks/full/rust/src/apis/cloud_games_cdn_api.rs +++ b/sdks/full/rust/src/apis/cloud_games_cdn_api.rs @@ -4,104 +4,135 @@ * 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 super::{configuration, Error}; use crate::apis::ResponseContent; -use super::{Error, configuration}; - /// struct for typed errors of method [`cloud_games_cdn_create_game_cdn_site`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum CloudGamesCdnCreateGameCdnSiteError { - 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), + 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 [`cloud_games_cdn_list_game_cdn_sites`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum CloudGamesCdnListGameCdnSitesError { - 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), + Status400(crate::models::ErrorBody), + Status403(crate::models::ErrorBody), + Status404(crate::models::ErrorBody), + Status408(crate::models::ErrorBody), + Status429(crate::models::ErrorBody), + Status500(crate::models::ErrorBody), + UnknownValue(serde_json::Value), } - /// Creates a new CDN site for the given game. -pub async fn cloud_games_cdn_create_game_cdn_site(configuration: &configuration::Configuration, game_id: &str, cloud_games_create_game_cdn_site_request: crate::models::CloudGamesCreateGameCdnSiteRequest) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/cloud/games/{game_id}/cdn/sites", local_var_configuration.base_path, game_id=crate::apis::urlencode(game_id)); - let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); - - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - local_var_req_builder = local_var_req_builder.json(&cloud_games_create_game_cdn_site_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)) - } +pub async fn cloud_games_cdn_create_game_cdn_site( + configuration: &configuration::Configuration, + game_id: &str, + cloud_games_create_game_cdn_site_request: crate::models::CloudGamesCreateGameCdnSiteRequest, +) -> Result< + crate::models::CloudGamesCreateGameCdnSiteResponse, + Error, +> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/cloud/games/{game_id}/cdn/sites", + local_var_configuration.base_path, + game_id = crate::apis::urlencode(game_id) + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + local_var_req_builder = local_var_req_builder.json(&cloud_games_create_game_cdn_site_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)) + } } /// Lists CDN sites for a game. -pub async fn cloud_games_cdn_list_game_cdn_sites(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}/cdn/sites", 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 { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - - let local_var_req = local_var_req_builder.build()?; - let local_var_resp = local_var_client.execute(local_var_req).await?; - - let local_var_status = local_var_resp.status(); - let local_var_content = local_var_resp.text().await?; - - if !local_var_status.is_client_error() && !local_var_status.is_server_error() { - serde_json::from_str(&local_var_content).map_err(Error::from) - } else { - let local_var_entity: Option = serde_json::from_str(&local_var_content).ok(); - let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity }; - Err(Error::ResponseError(local_var_error)) - } +pub async fn cloud_games_cdn_list_game_cdn_sites( + configuration: &configuration::Configuration, + game_id: &str, +) -> Result< + crate::models::CloudGamesListGameCdnSitesResponse, + Error, +> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/cloud/games/{game_id}/cdn/sites", + 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 { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + serde_json::from_str(&local_var_content).map_err(Error::from) + } else { + let local_var_entity: Option = + serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { + status: local_var_status, + content: local_var_content, + entity: local_var_entity, + }; + Err(Error::ResponseError(local_var_error)) + } } - diff --git a/sdks/full/rust/src/apis/cloud_games_matchmaker_api.rs b/sdks/full/rust/src/apis/cloud_games_matchmaker_api.rs index 81ac9a1086..dd9e9dd021 100644 --- a/sdks/full/rust/src/apis/cloud_games_matchmaker_api.rs +++ b/sdks/full/rust/src/apis/cloud_games_matchmaker_api.rs @@ -4,197 +4,273 @@ * 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 super::{configuration, Error}; use crate::apis::ResponseContent; -use super::{Error, configuration}; - /// struct for typed errors of method [`cloud_games_matchmaker_delete_matchmaker_lobby`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum CloudGamesMatchmakerDeleteMatchmakerLobbyError { - 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), + 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 [`cloud_games_matchmaker_export_lobby_logs`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum CloudGamesMatchmakerExportLobbyLogsError { - 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), + 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 [`cloud_games_matchmaker_export_matchmaker_lobby_history`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum CloudGamesMatchmakerExportMatchmakerLobbyHistoryError { - 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), + 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 [`cloud_games_matchmaker_get_lobby_logs`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum CloudGamesMatchmakerGetLobbyLogsError { - 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), + 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), } - /// Deletes a matchmaker lobby, stopping it immediately. -pub async fn cloud_games_matchmaker_delete_matchmaker_lobby(configuration: &configuration::Configuration, game_id: &str, lobby_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}/matchmaker/lobbies/{lobby_id}", local_var_configuration.base_path, game_id=crate::apis::urlencode(game_id), lobby_id=crate::apis::urlencode(lobby_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()); - }; - - 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)) - } +pub async fn cloud_games_matchmaker_delete_matchmaker_lobby( + configuration: &configuration::Configuration, + game_id: &str, + lobby_id: &str, +) -> Result< + crate::models::CloudGamesDeleteMatchmakerLobbyResponse, + Error, +> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/cloud/games/{game_id}/matchmaker/lobbies/{lobby_id}", + local_var_configuration.base_path, + game_id = crate::apis::urlencode(game_id), + lobby_id = crate::apis::urlencode(lobby_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()); + }; + + 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)) + } } /// Generates a download URL for logs. -pub async fn cloud_games_matchmaker_export_lobby_logs(configuration: &configuration::Configuration, game_id: &str, lobby_id: &str, cloud_games_export_lobby_logs_request: crate::models::CloudGamesExportLobbyLogsRequest) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/cloud/games/{game_id}/matchmaker/lobbies/{lobby_id}/logs/export", local_var_configuration.base_path, game_id=crate::apis::urlencode(game_id), lobby_id=crate::apis::urlencode(lobby_id)); - let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); - - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - local_var_req_builder = local_var_req_builder.json(&cloud_games_export_lobby_logs_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)) - } +pub async fn cloud_games_matchmaker_export_lobby_logs( + configuration: &configuration::Configuration, + game_id: &str, + lobby_id: &str, + cloud_games_export_lobby_logs_request: crate::models::CloudGamesExportLobbyLogsRequest, +) -> Result< + crate::models::CloudGamesExportLobbyLogsResponse, + Error, +> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/cloud/games/{game_id}/matchmaker/lobbies/{lobby_id}/logs/export", + local_var_configuration.base_path, + game_id = crate::apis::urlencode(game_id), + lobby_id = crate::apis::urlencode(lobby_id) + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + local_var_req_builder = local_var_req_builder.json(&cloud_games_export_lobby_logs_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)) + } } /// Exports lobby history over a given query time span. -pub async fn cloud_games_matchmaker_export_matchmaker_lobby_history(configuration: &configuration::Configuration, game_id: &str, cloud_games_export_matchmaker_lobby_history_request: crate::models::CloudGamesExportMatchmakerLobbyHistoryRequest) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/cloud/games/{game_id}/matchmaker/lobbies/export-history", local_var_configuration.base_path, game_id=crate::apis::urlencode(game_id)); - let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); - - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - local_var_req_builder = local_var_req_builder.json(&cloud_games_export_matchmaker_lobby_history_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)) - } +pub async fn cloud_games_matchmaker_export_matchmaker_lobby_history( + configuration: &configuration::Configuration, + game_id: &str, + cloud_games_export_matchmaker_lobby_history_request: crate::models::CloudGamesExportMatchmakerLobbyHistoryRequest, +) -> Result< + crate::models::CloudGamesExportMatchmakerLobbyHistoryResponse, + Error, +> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/cloud/games/{game_id}/matchmaker/lobbies/export-history", + local_var_configuration.base_path, + game_id = crate::apis::urlencode(game_id) + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + local_var_req_builder = + local_var_req_builder.json(&cloud_games_export_matchmaker_lobby_history_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)) + } } /// Returns the logs for a given lobby. -pub async fn cloud_games_matchmaker_get_lobby_logs(configuration: &configuration::Configuration, game_id: &str, lobby_id: &str, stream: crate::models::CloudGamesLogStream, watch_index: Option<&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}/matchmaker/lobbies/{lobby_id}/logs", local_var_configuration.base_path, game_id=crate::apis::urlencode(game_id), lobby_id=crate::apis::urlencode(lobby_id)); - let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str()); - - local_var_req_builder = local_var_req_builder.query(&[("stream", &stream.to_string())]); - if let Some(ref local_var_str) = watch_index { - local_var_req_builder = local_var_req_builder.query(&[("watch_index", &local_var_str.to_string())]); - } - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - - 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)) - } +pub async fn cloud_games_matchmaker_get_lobby_logs( + configuration: &configuration::Configuration, + game_id: &str, + lobby_id: &str, + stream: crate::models::CloudGamesLogStream, + watch_index: Option<&str>, +) -> Result< + crate::models::CloudGamesGetLobbyLogsResponse, + Error, +> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/cloud/games/{game_id}/matchmaker/lobbies/{lobby_id}/logs", + local_var_configuration.base_path, + game_id = crate::apis::urlencode(game_id), + lobby_id = crate::apis::urlencode(lobby_id) + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str()); + + local_var_req_builder = local_var_req_builder.query(&[("stream", &stream.to_string())]); + if let Some(ref local_var_str) = watch_index { + local_var_req_builder = + local_var_req_builder.query(&[("watch_index", &local_var_str.to_string())]); + } + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + serde_json::from_str(&local_var_content).map_err(Error::from) + } else { + let local_var_entity: Option = + serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { + status: local_var_status, + content: local_var_content, + entity: local_var_entity, + }; + Err(Error::ResponseError(local_var_error)) + } } - diff --git a/sdks/full/rust/src/apis/cloud_games_namespaces_analytics_api.rs b/sdks/full/rust/src/apis/cloud_games_namespaces_analytics_api.rs index 07ac2d5954..3ea7312a59 100644 --- a/sdks/full/rust/src/apis/cloud_games_namespaces_analytics_api.rs +++ b/sdks/full/rust/src/apis/cloud_games_namespaces_analytics_api.rs @@ -4,59 +4,74 @@ * 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 super::{configuration, Error}; use crate::apis::ResponseContent; -use super::{Error, configuration}; - /// struct for typed errors of method [`cloud_games_namespaces_analytics_get_analytics_matchmaker_live`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum CloudGamesNamespacesAnalyticsGetAnalyticsMatchmakerLiveError { - 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), + 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), } - /// Returns live information about all active lobbies for a given namespace. -pub async fn cloud_games_namespaces_analytics_get_analytics_matchmaker_live(configuration: &configuration::Configuration, game_id: &str, namespace_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}/namespaces/{namespace_id}/analytics/matchmaker/live", local_var_configuration.base_path, game_id=crate::apis::urlencode(game_id), namespace_id=crate::apis::urlencode(namespace_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 { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - - let local_var_req = local_var_req_builder.build()?; - let local_var_resp = local_var_client.execute(local_var_req).await?; - - let local_var_status = local_var_resp.status(); - let local_var_content = local_var_resp.text().await?; - - if !local_var_status.is_client_error() && !local_var_status.is_server_error() { - serde_json::from_str(&local_var_content).map_err(Error::from) - } else { - let local_var_entity: Option = serde_json::from_str(&local_var_content).ok(); - let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity }; - Err(Error::ResponseError(local_var_error)) - } -} +pub async fn cloud_games_namespaces_analytics_get_analytics_matchmaker_live( + configuration: &configuration::Configuration, + game_id: &str, + namespace_id: &str, +) -> Result< + crate::models::CloudGamesNamespacesGetAnalyticsMatchmakerLiveResponse, + Error, +> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + let local_var_uri_str = format!( + "{}/cloud/games/{game_id}/namespaces/{namespace_id}/analytics/matchmaker/live", + local_var_configuration.base_path, + game_id = crate::apis::urlencode(game_id), + namespace_id = crate::apis::urlencode(namespace_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 { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + serde_json::from_str(&local_var_content).map_err(Error::from) + } else { + let local_var_entity: Option = + serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { + status: local_var_status, + content: local_var_content, + entity: local_var_entity, + }; + Err(Error::ResponseError(local_var_error)) + } +} diff --git a/sdks/full/rust/src/apis/cloud_games_namespaces_api.rs b/sdks/full/rust/src/apis/cloud_games_namespaces_api.rs index db4128e3af..89824582e0 100644 --- a/sdks/full/rust/src/apis/cloud_games_namespaces_api.rs +++ b/sdks/full/rust/src/apis/cloud_games_namespaces_api.rs @@ -4,736 +4,1040 @@ * 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 super::{configuration, Error}; use crate::apis::ResponseContent; -use super::{Error, configuration}; - /// struct for typed errors of method [`cloud_games_namespaces_add_namespace_domain`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum CloudGamesNamespacesAddNamespaceDomainError { - 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), + 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 [`cloud_games_namespaces_create_game_namespace`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum CloudGamesNamespacesCreateGameNamespaceError { - 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), + 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 [`cloud_games_namespaces_create_game_namespace_token_development`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum CloudGamesNamespacesCreateGameNamespaceTokenDevelopmentError { - 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), + 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 [`cloud_games_namespaces_create_game_namespace_token_public`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum CloudGamesNamespacesCreateGameNamespaceTokenPublicError { - 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), + 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 [`cloud_games_namespaces_get_game_namespace_by_id`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum CloudGamesNamespacesGetGameNamespaceByIdError { - 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), + 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 [`cloud_games_namespaces_get_game_namespace_version_history_list`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum CloudGamesNamespacesGetGameNamespaceVersionHistoryListError { - 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), + 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 [`cloud_games_namespaces_remove_namespace_cdn_auth_user`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum CloudGamesNamespacesRemoveNamespaceCdnAuthUserError { - 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), + 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 [`cloud_games_namespaces_remove_namespace_domain`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum CloudGamesNamespacesRemoveNamespaceDomainError { - 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), + 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 [`cloud_games_namespaces_set_namespace_cdn_auth_type`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum CloudGamesNamespacesSetNamespaceCdnAuthTypeError { - 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), + 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 [`cloud_games_namespaces_toggle_namespace_domain_public_auth`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum CloudGamesNamespacesToggleNamespaceDomainPublicAuthError { - 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), + 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 [`cloud_games_namespaces_update_game_namespace_matchmaker_config`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum CloudGamesNamespacesUpdateGameNamespaceMatchmakerConfigError { - 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), + 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 [`cloud_games_namespaces_update_game_namespace_version`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum CloudGamesNamespacesUpdateGameNamespaceVersionError { - 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), + 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 [`cloud_games_namespaces_update_namespace_cdn_auth_user`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum CloudGamesNamespacesUpdateNamespaceCdnAuthUserError { - 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), + 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 [`cloud_games_namespaces_validate_game_namespace`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum CloudGamesNamespacesValidateGameNamespaceError { - 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), + 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 [`cloud_games_namespaces_validate_game_namespace_matchmaker_config`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum CloudGamesNamespacesValidateGameNamespaceMatchmakerConfigError { - 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), + 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 [`cloud_games_namespaces_validate_game_namespace_token_development`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum CloudGamesNamespacesValidateGameNamespaceTokenDevelopmentError { - 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), + 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), } - /// Adds a domain to the given game namespace. -pub async fn cloud_games_namespaces_add_namespace_domain(configuration: &configuration::Configuration, game_id: &str, namespace_id: &str, cloud_games_namespaces_add_namespace_domain_request: crate::models::CloudGamesNamespacesAddNamespaceDomainRequest) -> Result<(), Error> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/cloud/games/{game_id}/namespaces/{namespace_id}/domains", local_var_configuration.base_path, game_id=crate::apis::urlencode(game_id), namespace_id=crate::apis::urlencode(namespace_id)); - let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); - - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - local_var_req_builder = local_var_req_builder.json(&cloud_games_namespaces_add_namespace_domain_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)) - } +pub async fn cloud_games_namespaces_add_namespace_domain( + configuration: &configuration::Configuration, + game_id: &str, + namespace_id: &str, + cloud_games_namespaces_add_namespace_domain_request: crate::models::CloudGamesNamespacesAddNamespaceDomainRequest, +) -> Result<(), Error> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/cloud/games/{game_id}/namespaces/{namespace_id}/domains", + local_var_configuration.base_path, + game_id = crate::apis::urlencode(game_id), + namespace_id = crate::apis::urlencode(namespace_id) + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + local_var_req_builder = + local_var_req_builder.json(&cloud_games_namespaces_add_namespace_domain_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)) + } } /// Creates a new namespace for the given game. -pub async fn cloud_games_namespaces_create_game_namespace(configuration: &configuration::Configuration, game_id: &str, cloud_games_namespaces_create_game_namespace_request: crate::models::CloudGamesNamespacesCreateGameNamespaceRequest) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/cloud/games/{game_id}/namespaces", local_var_configuration.base_path, game_id=crate::apis::urlencode(game_id)); - let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); - - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - local_var_req_builder = local_var_req_builder.json(&cloud_games_namespaces_create_game_namespace_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)) - } +pub async fn cloud_games_namespaces_create_game_namespace( + configuration: &configuration::Configuration, + game_id: &str, + cloud_games_namespaces_create_game_namespace_request: crate::models::CloudGamesNamespacesCreateGameNamespaceRequest, +) -> Result< + crate::models::CloudGamesNamespacesCreateGameNamespaceResponse, + Error, +> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/cloud/games/{game_id}/namespaces", + local_var_configuration.base_path, + game_id = crate::apis::urlencode(game_id) + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + local_var_req_builder = + local_var_req_builder.json(&cloud_games_namespaces_create_game_namespace_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)) + } } /// Creates a development token for the given namespace. -pub async fn cloud_games_namespaces_create_game_namespace_token_development(configuration: &configuration::Configuration, game_id: &str, namespace_id: &str, cloud_games_namespaces_create_game_namespace_token_development_request: crate::models::CloudGamesNamespacesCreateGameNamespaceTokenDevelopmentRequest) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/cloud/games/{game_id}/namespaces/{namespace_id}/tokens/development", local_var_configuration.base_path, game_id=crate::apis::urlencode(game_id), namespace_id=crate::apis::urlencode(namespace_id)); - let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); - - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - local_var_req_builder = local_var_req_builder.json(&cloud_games_namespaces_create_game_namespace_token_development_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)) - } +pub async fn cloud_games_namespaces_create_game_namespace_token_development( + configuration: &configuration::Configuration, + game_id: &str, + namespace_id: &str, + cloud_games_namespaces_create_game_namespace_token_development_request: crate::models::CloudGamesNamespacesCreateGameNamespaceTokenDevelopmentRequest, +) -> Result< + crate::models::CloudGamesNamespacesCreateGameNamespaceTokenDevelopmentResponse, + Error, +> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/cloud/games/{game_id}/namespaces/{namespace_id}/tokens/development", + local_var_configuration.base_path, + game_id = crate::apis::urlencode(game_id), + namespace_id = crate::apis::urlencode(namespace_id) + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + local_var_req_builder = local_var_req_builder + .json(&cloud_games_namespaces_create_game_namespace_token_development_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)) + } } /// Creates a public token for the given namespace. -pub async fn cloud_games_namespaces_create_game_namespace_token_public(configuration: &configuration::Configuration, game_id: &str, namespace_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}/namespaces/{namespace_id}/tokens/public", local_var_configuration.base_path, game_id=crate::apis::urlencode(game_id), namespace_id=crate::apis::urlencode(namespace_id)); - let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); - - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - - let local_var_req = local_var_req_builder.build()?; - let local_var_resp = local_var_client.execute(local_var_req).await?; - - let local_var_status = local_var_resp.status(); - let local_var_content = local_var_resp.text().await?; - - if !local_var_status.is_client_error() && !local_var_status.is_server_error() { - serde_json::from_str(&local_var_content).map_err(Error::from) - } else { - let local_var_entity: Option = serde_json::from_str(&local_var_content).ok(); - let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity }; - Err(Error::ResponseError(local_var_error)) - } +pub async fn cloud_games_namespaces_create_game_namespace_token_public( + configuration: &configuration::Configuration, + game_id: &str, + namespace_id: &str, +) -> Result< + crate::models::CloudGamesNamespacesCreateGameNamespaceTokenPublicResponse, + Error, +> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/cloud/games/{game_id}/namespaces/{namespace_id}/tokens/public", + local_var_configuration.base_path, + game_id = crate::apis::urlencode(game_id), + namespace_id = crate::apis::urlencode(namespace_id) + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + serde_json::from_str(&local_var_content).map_err(Error::from) + } else { + let local_var_entity: Option = + serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { + status: local_var_status, + content: local_var_content, + entity: local_var_entity, + }; + Err(Error::ResponseError(local_var_error)) + } } /// Gets a game namespace by namespace ID. -pub async fn cloud_games_namespaces_get_game_namespace_by_id(configuration: &configuration::Configuration, game_id: &str, namespace_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}/namespaces/{namespace_id}", local_var_configuration.base_path, game_id=crate::apis::urlencode(game_id), namespace_id=crate::apis::urlencode(namespace_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 { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - - let local_var_req = local_var_req_builder.build()?; - let local_var_resp = local_var_client.execute(local_var_req).await?; - - let local_var_status = local_var_resp.status(); - let local_var_content = local_var_resp.text().await?; - - if !local_var_status.is_client_error() && !local_var_status.is_server_error() { - serde_json::from_str(&local_var_content).map_err(Error::from) - } else { - let local_var_entity: Option = serde_json::from_str(&local_var_content).ok(); - let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity }; - Err(Error::ResponseError(local_var_error)) - } +pub async fn cloud_games_namespaces_get_game_namespace_by_id( + configuration: &configuration::Configuration, + game_id: &str, + namespace_id: &str, +) -> Result< + crate::models::CloudGamesNamespacesGetGameNamespaceByIdResponse, + Error, +> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/cloud/games/{game_id}/namespaces/{namespace_id}", + local_var_configuration.base_path, + game_id = crate::apis::urlencode(game_id), + namespace_id = crate::apis::urlencode(namespace_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 { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + serde_json::from_str(&local_var_content).map_err(Error::from) + } else { + let local_var_entity: Option = + serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { + status: local_var_status, + content: local_var_content, + entity: local_var_entity, + }; + Err(Error::ResponseError(local_var_error)) + } } /// Gets the version history for a given namespace. -pub async fn cloud_games_namespaces_get_game_namespace_version_history_list(configuration: &configuration::Configuration, game_id: &str, namespace_id: &str, anchor: Option<&str>, limit: Option) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/cloud/games/{game_id}/namespaces/{namespace_id}/version-history", local_var_configuration.base_path, game_id=crate::apis::urlencode(game_id), namespace_id=crate::apis::urlencode(namespace_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_str) = anchor { - local_var_req_builder = local_var_req_builder.query(&[("anchor", &local_var_str.to_string())]); - } - if let Some(ref local_var_str) = limit { - local_var_req_builder = local_var_req_builder.query(&[("limit", &local_var_str.to_string())]); - } - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - - 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)) - } +pub async fn cloud_games_namespaces_get_game_namespace_version_history_list( + configuration: &configuration::Configuration, + game_id: &str, + namespace_id: &str, + anchor: Option<&str>, + limit: Option, +) -> Result< + crate::models::CloudGamesNamespacesGetGameNamespaceVersionHistoryResponse, + Error, +> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/cloud/games/{game_id}/namespaces/{namespace_id}/version-history", + local_var_configuration.base_path, + game_id = crate::apis::urlencode(game_id), + namespace_id = crate::apis::urlencode(namespace_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_str) = anchor { + local_var_req_builder = + local_var_req_builder.query(&[("anchor", &local_var_str.to_string())]); + } + if let Some(ref local_var_str) = limit { + local_var_req_builder = + local_var_req_builder.query(&[("limit", &local_var_str.to_string())]); + } + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + + 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)) + } } /// Removes an authenticated user from the given game namespace. -pub async fn cloud_games_namespaces_remove_namespace_cdn_auth_user(configuration: &configuration::Configuration, game_id: &str, namespace_id: &str, user: &str) -> Result<(), Error> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/cloud/games/{game_id}/namespaces/{namespace_id}/auth-user/{user}", local_var_configuration.base_path, game_id=crate::apis::urlencode(game_id), namespace_id=crate::apis::urlencode(namespace_id), user=crate::apis::urlencode(user)); - 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()); - }; - - 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)) - } +pub async fn cloud_games_namespaces_remove_namespace_cdn_auth_user( + configuration: &configuration::Configuration, + game_id: &str, + namespace_id: &str, + user: &str, +) -> Result<(), Error> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/cloud/games/{game_id}/namespaces/{namespace_id}/auth-user/{user}", + local_var_configuration.base_path, + game_id = crate::apis::urlencode(game_id), + namespace_id = crate::apis::urlencode(namespace_id), + user = crate::apis::urlencode(user) + ); + 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()); + }; + + 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)) + } } /// Removes a domain from the given game namespace. -pub async fn cloud_games_namespaces_remove_namespace_domain(configuration: &configuration::Configuration, game_id: &str, namespace_id: &str, domain: &str) -> Result<(), Error> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/cloud/games/{game_id}/namespaces/{namespace_id}/domains/{domain}", local_var_configuration.base_path, game_id=crate::apis::urlencode(game_id), namespace_id=crate::apis::urlencode(namespace_id), domain=crate::apis::urlencode(domain)); - 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()); - }; - - 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)) - } +pub async fn cloud_games_namespaces_remove_namespace_domain( + configuration: &configuration::Configuration, + game_id: &str, + namespace_id: &str, + domain: &str, +) -> Result<(), Error> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/cloud/games/{game_id}/namespaces/{namespace_id}/domains/{domain}", + local_var_configuration.base_path, + game_id = crate::apis::urlencode(game_id), + namespace_id = crate::apis::urlencode(namespace_id), + domain = crate::apis::urlencode(domain) + ); + 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()); + }; + + 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)) + } } /// Updates the CDN authentication type of the given game namespace. -pub async fn cloud_games_namespaces_set_namespace_cdn_auth_type(configuration: &configuration::Configuration, game_id: &str, namespace_id: &str, cloud_games_namespaces_set_namespace_cdn_auth_type_request: crate::models::CloudGamesNamespacesSetNamespaceCdnAuthTypeRequest) -> Result<(), Error> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/cloud/games/{game_id}/namespaces/{namespace_id}/cdn-auth", local_var_configuration.base_path, game_id=crate::apis::urlencode(game_id), namespace_id=crate::apis::urlencode(namespace_id)); - let mut local_var_req_builder = local_var_client.request(reqwest::Method::PUT, 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(&cloud_games_namespaces_set_namespace_cdn_auth_type_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)) - } +pub async fn cloud_games_namespaces_set_namespace_cdn_auth_type( + configuration: &configuration::Configuration, + game_id: &str, + namespace_id: &str, + cloud_games_namespaces_set_namespace_cdn_auth_type_request: crate::models::CloudGamesNamespacesSetNamespaceCdnAuthTypeRequest, +) -> Result<(), Error> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/cloud/games/{game_id}/namespaces/{namespace_id}/cdn-auth", + local_var_configuration.base_path, + game_id = crate::apis::urlencode(game_id), + namespace_id = crate::apis::urlencode(namespace_id) + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::PUT, 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(&cloud_games_namespaces_set_namespace_cdn_auth_type_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)) + } } /// Toggles whether or not to allow authentication based on domain for the given game namespace. -pub async fn cloud_games_namespaces_toggle_namespace_domain_public_auth(configuration: &configuration::Configuration, game_id: &str, namespace_id: &str, cloud_games_namespaces_toggle_namespace_domain_public_auth_request: crate::models::CloudGamesNamespacesToggleNamespaceDomainPublicAuthRequest) -> Result<(), Error> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/cloud/games/{game_id}/namespaces/{namespace_id}/domain-public-auth", local_var_configuration.base_path, game_id=crate::apis::urlencode(game_id), namespace_id=crate::apis::urlencode(namespace_id)); - let mut local_var_req_builder = local_var_client.request(reqwest::Method::PUT, 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(&cloud_games_namespaces_toggle_namespace_domain_public_auth_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)) - } +pub async fn cloud_games_namespaces_toggle_namespace_domain_public_auth( + configuration: &configuration::Configuration, + game_id: &str, + namespace_id: &str, + cloud_games_namespaces_toggle_namespace_domain_public_auth_request: crate::models::CloudGamesNamespacesToggleNamespaceDomainPublicAuthRequest, +) -> Result<(), Error> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/cloud/games/{game_id}/namespaces/{namespace_id}/domain-public-auth", + local_var_configuration.base_path, + game_id = crate::apis::urlencode(game_id), + namespace_id = crate::apis::urlencode(namespace_id) + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::PUT, 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(&cloud_games_namespaces_toggle_namespace_domain_public_auth_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)) + } } /// Updates matchmaker config for the given game namespace. -pub async fn cloud_games_namespaces_update_game_namespace_matchmaker_config(configuration: &configuration::Configuration, game_id: &str, namespace_id: &str, cloud_games_namespaces_update_game_namespace_matchmaker_config_request: crate::models::CloudGamesNamespacesUpdateGameNamespaceMatchmakerConfigRequest) -> Result<(), Error> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/cloud/games/{game_id}/namespaces/{namespace_id}/mm-config", local_var_configuration.base_path, game_id=crate::apis::urlencode(game_id), namespace_id=crate::apis::urlencode(namespace_id)); - let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); - - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - local_var_req_builder = local_var_req_builder.json(&cloud_games_namespaces_update_game_namespace_matchmaker_config_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)) - } +pub async fn cloud_games_namespaces_update_game_namespace_matchmaker_config( + configuration: &configuration::Configuration, + game_id: &str, + namespace_id: &str, + cloud_games_namespaces_update_game_namespace_matchmaker_config_request: crate::models::CloudGamesNamespacesUpdateGameNamespaceMatchmakerConfigRequest, +) -> Result<(), Error> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/cloud/games/{game_id}/namespaces/{namespace_id}/mm-config", + local_var_configuration.base_path, + game_id = crate::apis::urlencode(game_id), + namespace_id = crate::apis::urlencode(namespace_id) + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + local_var_req_builder = local_var_req_builder + .json(&cloud_games_namespaces_update_game_namespace_matchmaker_config_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)) + } } /// Updates the version of a game namespace. -pub async fn cloud_games_namespaces_update_game_namespace_version(configuration: &configuration::Configuration, game_id: &str, namespace_id: &str, cloud_games_namespaces_update_game_namespace_version_request: crate::models::CloudGamesNamespacesUpdateGameNamespaceVersionRequest) -> Result<(), Error> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/cloud/games/{game_id}/namespaces/{namespace_id}/version", local_var_configuration.base_path, game_id=crate::apis::urlencode(game_id), namespace_id=crate::apis::urlencode(namespace_id)); - let mut local_var_req_builder = local_var_client.request(reqwest::Method::PUT, 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(&cloud_games_namespaces_update_game_namespace_version_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)) - } +pub async fn cloud_games_namespaces_update_game_namespace_version( + configuration: &configuration::Configuration, + game_id: &str, + namespace_id: &str, + cloud_games_namespaces_update_game_namespace_version_request: crate::models::CloudGamesNamespacesUpdateGameNamespaceVersionRequest, +) -> Result<(), Error> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/cloud/games/{game_id}/namespaces/{namespace_id}/version", + local_var_configuration.base_path, + game_id = crate::apis::urlencode(game_id), + namespace_id = crate::apis::urlencode(namespace_id) + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::PUT, 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(&cloud_games_namespaces_update_game_namespace_version_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)) + } } /// Adds an authenticated user to the given game namespace. -pub async fn cloud_games_namespaces_update_namespace_cdn_auth_user(configuration: &configuration::Configuration, game_id: &str, namespace_id: &str, cloud_games_namespaces_update_namespace_cdn_auth_user_request: crate::models::CloudGamesNamespacesUpdateNamespaceCdnAuthUserRequest) -> Result<(), Error> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/cloud/games/{game_id}/namespaces/{namespace_id}/auth-user", local_var_configuration.base_path, game_id=crate::apis::urlencode(game_id), namespace_id=crate::apis::urlencode(namespace_id)); - let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); - - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - local_var_req_builder = local_var_req_builder.json(&cloud_games_namespaces_update_namespace_cdn_auth_user_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)) - } +pub async fn cloud_games_namespaces_update_namespace_cdn_auth_user( + configuration: &configuration::Configuration, + game_id: &str, + namespace_id: &str, + cloud_games_namespaces_update_namespace_cdn_auth_user_request: crate::models::CloudGamesNamespacesUpdateNamespaceCdnAuthUserRequest, +) -> Result<(), Error> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/cloud/games/{game_id}/namespaces/{namespace_id}/auth-user", + local_var_configuration.base_path, + game_id = crate::apis::urlencode(game_id), + namespace_id = crate::apis::urlencode(namespace_id) + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + local_var_req_builder = + local_var_req_builder.json(&cloud_games_namespaces_update_namespace_cdn_auth_user_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)) + } } /// Validates information used to create a new game namespace. -pub async fn cloud_games_namespaces_validate_game_namespace(configuration: &configuration::Configuration, game_id: &str, cloud_games_namespaces_validate_game_namespace_request: crate::models::CloudGamesNamespacesValidateGameNamespaceRequest) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/cloud/games/{game_id}/namespaces/validate", local_var_configuration.base_path, game_id=crate::apis::urlencode(game_id)); - let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); - - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - local_var_req_builder = local_var_req_builder.json(&cloud_games_namespaces_validate_game_namespace_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)) - } +pub async fn cloud_games_namespaces_validate_game_namespace( + configuration: &configuration::Configuration, + game_id: &str, + cloud_games_namespaces_validate_game_namespace_request: crate::models::CloudGamesNamespacesValidateGameNamespaceRequest, +) -> Result< + crate::models::CloudGamesNamespacesValidateGameNamespaceResponse, + Error, +> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/cloud/games/{game_id}/namespaces/validate", + local_var_configuration.base_path, + game_id = crate::apis::urlencode(game_id) + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + local_var_req_builder = + local_var_req_builder.json(&cloud_games_namespaces_validate_game_namespace_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)) + } } /// Validates information used to update a game namespace's matchmaker config. -pub async fn cloud_games_namespaces_validate_game_namespace_matchmaker_config(configuration: &configuration::Configuration, game_id: &str, namespace_id: &str, cloud_games_namespaces_validate_game_namespace_matchmaker_config_request: crate::models::CloudGamesNamespacesValidateGameNamespaceMatchmakerConfigRequest) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/cloud/games/{game_id}/namespaces/{namespace_id}/mm-config/validate", local_var_configuration.base_path, game_id=crate::apis::urlencode(game_id), namespace_id=crate::apis::urlencode(namespace_id)); - let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); - - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - local_var_req_builder = local_var_req_builder.json(&cloud_games_namespaces_validate_game_namespace_matchmaker_config_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)) - } +pub async fn cloud_games_namespaces_validate_game_namespace_matchmaker_config( + configuration: &configuration::Configuration, + game_id: &str, + namespace_id: &str, + cloud_games_namespaces_validate_game_namespace_matchmaker_config_request: crate::models::CloudGamesNamespacesValidateGameNamespaceMatchmakerConfigRequest, +) -> Result< + crate::models::CloudGamesNamespacesValidateGameNamespaceMatchmakerConfigResponse, + Error, +> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/cloud/games/{game_id}/namespaces/{namespace_id}/mm-config/validate", + local_var_configuration.base_path, + game_id = crate::apis::urlencode(game_id), + namespace_id = crate::apis::urlencode(namespace_id) + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + local_var_req_builder = local_var_req_builder + .json(&cloud_games_namespaces_validate_game_namespace_matchmaker_config_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< + CloudGamesNamespacesValidateGameNamespaceMatchmakerConfigError, + > = 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)) + } } /// Validates information used to create a new game namespace development token. -pub async fn cloud_games_namespaces_validate_game_namespace_token_development(configuration: &configuration::Configuration, game_id: &str, namespace_id: &str, cloud_games_namespaces_validate_game_namespace_token_development_request: crate::models::CloudGamesNamespacesValidateGameNamespaceTokenDevelopmentRequest) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/cloud/games/{game_id}/namespaces/{namespace_id}/tokens/development/validate", local_var_configuration.base_path, game_id=crate::apis::urlencode(game_id), namespace_id=crate::apis::urlencode(namespace_id)); - let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); - - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - local_var_req_builder = local_var_req_builder.json(&cloud_games_namespaces_validate_game_namespace_token_development_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)) - } +pub async fn cloud_games_namespaces_validate_game_namespace_token_development( + configuration: &configuration::Configuration, + game_id: &str, + namespace_id: &str, + cloud_games_namespaces_validate_game_namespace_token_development_request: crate::models::CloudGamesNamespacesValidateGameNamespaceTokenDevelopmentRequest, +) -> Result< + crate::models::CloudGamesNamespacesValidateGameNamespaceTokenDevelopmentResponse, + Error, +> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/cloud/games/{game_id}/namespaces/{namespace_id}/tokens/development/validate", + local_var_configuration.base_path, + game_id = crate::apis::urlencode(game_id), + namespace_id = crate::apis::urlencode(namespace_id) + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + local_var_req_builder = local_var_req_builder + .json(&cloud_games_namespaces_validate_game_namespace_token_development_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< + CloudGamesNamespacesValidateGameNamespaceTokenDevelopmentError, + > = 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/cloud_games_namespaces_logs_api.rs b/sdks/full/rust/src/apis/cloud_games_namespaces_logs_api.rs index 43e8b17d20..2a2849f0bd 100644 --- a/sdks/full/rust/src/apis/cloud_games_namespaces_logs_api.rs +++ b/sdks/full/rust/src/apis/cloud_games_namespaces_logs_api.rs @@ -4,106 +4,144 @@ * 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 super::{configuration, Error}; use crate::apis::ResponseContent; -use super::{Error, configuration}; - /// struct for typed errors of method [`cloud_games_namespaces_logs_get_namespace_lobby`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum CloudGamesNamespacesLogsGetNamespaceLobbyError { - 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), + 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 [`cloud_games_namespaces_logs_list_namespace_lobbies`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum CloudGamesNamespacesLogsListNamespaceLobbiesError { - 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), + 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), } - /// Returns a lobby from the given game namespace. -pub async fn cloud_games_namespaces_logs_get_namespace_lobby(configuration: &configuration::Configuration, game_id: &str, namespace_id: &str, lobby_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}/namespaces/{namespace_id}/logs/lobbies/{lobby_id}", local_var_configuration.base_path, game_id=crate::apis::urlencode(game_id), namespace_id=crate::apis::urlencode(namespace_id), lobby_id=crate::apis::urlencode(lobby_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 { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - - let local_var_req = local_var_req_builder.build()?; - let local_var_resp = local_var_client.execute(local_var_req).await?; - - let local_var_status = local_var_resp.status(); - let local_var_content = local_var_resp.text().await?; - - if !local_var_status.is_client_error() && !local_var_status.is_server_error() { - serde_json::from_str(&local_var_content).map_err(Error::from) - } else { - let local_var_entity: Option = serde_json::from_str(&local_var_content).ok(); - let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity }; - Err(Error::ResponseError(local_var_error)) - } +pub async fn cloud_games_namespaces_logs_get_namespace_lobby( + configuration: &configuration::Configuration, + game_id: &str, + namespace_id: &str, + lobby_id: &str, +) -> Result< + crate::models::CloudGamesNamespacesGetNamespaceLobbyResponse, + Error, +> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/cloud/games/{game_id}/namespaces/{namespace_id}/logs/lobbies/{lobby_id}", + local_var_configuration.base_path, + game_id = crate::apis::urlencode(game_id), + namespace_id = crate::apis::urlencode(namespace_id), + lobby_id = crate::apis::urlencode(lobby_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 { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + serde_json::from_str(&local_var_content).map_err(Error::from) + } else { + let local_var_entity: Option = + serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { + status: local_var_status, + content: local_var_content, + entity: local_var_entity, + }; + Err(Error::ResponseError(local_var_error)) + } } /// Returns a list of lobbies for the given game namespace. -pub async fn cloud_games_namespaces_logs_list_namespace_lobbies(configuration: &configuration::Configuration, game_id: &str, namespace_id: &str, before_create_ts: Option) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/cloud/games/{game_id}/namespaces/{namespace_id}/logs/lobbies", local_var_configuration.base_path, game_id=crate::apis::urlencode(game_id), namespace_id=crate::apis::urlencode(namespace_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_str) = before_create_ts { - local_var_req_builder = local_var_req_builder.query(&[("before_create_ts", &local_var_str.to_string())]); - } - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - - 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)) - } +pub async fn cloud_games_namespaces_logs_list_namespace_lobbies( + configuration: &configuration::Configuration, + game_id: &str, + namespace_id: &str, + before_create_ts: Option, +) -> Result< + crate::models::CloudGamesNamespacesListNamespaceLobbiesResponse, + Error, +> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/cloud/games/{game_id}/namespaces/{namespace_id}/logs/lobbies", + local_var_configuration.base_path, + game_id = crate::apis::urlencode(game_id), + namespace_id = crate::apis::urlencode(namespace_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_str) = before_create_ts { + local_var_req_builder = + local_var_req_builder.query(&[("before_create_ts", &local_var_str.to_string())]); + } + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + serde_json::from_str(&local_var_content).map_err(Error::from) + } else { + let local_var_entity: Option = + serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { + status: local_var_status, + content: local_var_content, + entity: local_var_entity, + }; + Err(Error::ResponseError(local_var_error)) + } } - diff --git a/sdks/full/rust/src/apis/cloud_games_tokens_api.rs b/sdks/full/rust/src/apis/cloud_games_tokens_api.rs index 42318b5460..b37531cc9a 100644 --- a/sdks/full/rust/src/apis/cloud_games_tokens_api.rs +++ b/sdks/full/rust/src/apis/cloud_games_tokens_api.rs @@ -4,59 +4,72 @@ * 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 super::{configuration, Error}; use crate::apis::ResponseContent; -use super::{Error, configuration}; - /// struct for typed errors of method [`cloud_games_tokens_create_cloud_token`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum CloudGamesTokensCreateCloudTokenError { - 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), + Status400(crate::models::ErrorBody), + Status403(crate::models::ErrorBody), + Status404(crate::models::ErrorBody), + Status408(crate::models::ErrorBody), + Status429(crate::models::ErrorBody), + Status500(crate::models::ErrorBody), + UnknownValue(serde_json::Value), } - /// Creates a new game cloud token. -pub async fn cloud_games_tokens_create_cloud_token(configuration: &configuration::Configuration, game_id: &str) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/cloud/games/{game_id}/tokens/cloud", local_var_configuration.base_path, game_id=crate::apis::urlencode(game_id)); - let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); - - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - - let local_var_req = local_var_req_builder.build()?; - let local_var_resp = local_var_client.execute(local_var_req).await?; - - let local_var_status = local_var_resp.status(); - let local_var_content = local_var_resp.text().await?; - - if !local_var_status.is_client_error() && !local_var_status.is_server_error() { - serde_json::from_str(&local_var_content).map_err(Error::from) - } else { - let local_var_entity: Option = serde_json::from_str(&local_var_content).ok(); - let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity }; - Err(Error::ResponseError(local_var_error)) - } -} +pub async fn cloud_games_tokens_create_cloud_token( + configuration: &configuration::Configuration, + game_id: &str, +) -> Result< + crate::models::CloudGamesCreateCloudTokenResponse, + Error, +> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + let local_var_uri_str = format!( + "{}/cloud/games/{game_id}/tokens/cloud", + local_var_configuration.base_path, + game_id = crate::apis::urlencode(game_id) + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + serde_json::from_str(&local_var_content).map_err(Error::from) + } else { + let local_var_entity: Option = + serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { + status: local_var_status, + content: local_var_content, + entity: local_var_entity, + }; + Err(Error::ResponseError(local_var_error)) + } +} diff --git a/sdks/full/rust/src/apis/cloud_games_versions_api.rs b/sdks/full/rust/src/apis/cloud_games_versions_api.rs index 3b57b01cc3..a8b523d19a 100644 --- a/sdks/full/rust/src/apis/cloud_games_versions_api.rs +++ b/sdks/full/rust/src/apis/cloud_games_versions_api.rs @@ -4,193 +4,261 @@ * 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 super::{configuration, Error}; use crate::apis::ResponseContent; -use super::{Error, configuration}; - /// struct for typed errors of method [`cloud_games_versions_create_game_version`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum CloudGamesVersionsCreateGameVersionError { - 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), + 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 [`cloud_games_versions_get_game_version_by_id`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum CloudGamesVersionsGetGameVersionByIdError { - 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), + 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 [`cloud_games_versions_reserve_version_name`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum CloudGamesVersionsReserveVersionNameError { - 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), + 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 [`cloud_games_versions_validate_game_version`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum CloudGamesVersionsValidateGameVersionError { - 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), + Status400(crate::models::ErrorBody), + Status403(crate::models::ErrorBody), + Status404(crate::models::ErrorBody), + Status408(crate::models::ErrorBody), + Status429(crate::models::ErrorBody), + Status500(crate::models::ErrorBody), + UnknownValue(serde_json::Value), } - /// Creates a new game version. -pub async fn cloud_games_versions_create_game_version(configuration: &configuration::Configuration, game_id: &str, cloud_games_create_game_version_request: crate::models::CloudGamesCreateGameVersionRequest) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/cloud/games/{game_id}/versions", local_var_configuration.base_path, game_id=crate::apis::urlencode(game_id)); - let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); - - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - local_var_req_builder = local_var_req_builder.json(&cloud_games_create_game_version_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)) - } +pub async fn cloud_games_versions_create_game_version( + configuration: &configuration::Configuration, + game_id: &str, + cloud_games_create_game_version_request: crate::models::CloudGamesCreateGameVersionRequest, +) -> Result< + crate::models::CloudGamesCreateGameVersionResponse, + Error, +> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/cloud/games/{game_id}/versions", + local_var_configuration.base_path, + game_id = crate::apis::urlencode(game_id) + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + local_var_req_builder = local_var_req_builder.json(&cloud_games_create_game_version_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)) + } } /// Returns a game version by its version ID. -pub async fn cloud_games_versions_get_game_version_by_id(configuration: &configuration::Configuration, game_id: &str, version_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}/versions/{version_id}", local_var_configuration.base_path, game_id=crate::apis::urlencode(game_id), version_id=crate::apis::urlencode(version_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 { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - - let local_var_req = local_var_req_builder.build()?; - let local_var_resp = local_var_client.execute(local_var_req).await?; - - let local_var_status = local_var_resp.status(); - let local_var_content = local_var_resp.text().await?; - - if !local_var_status.is_client_error() && !local_var_status.is_server_error() { - serde_json::from_str(&local_var_content).map_err(Error::from) - } else { - let local_var_entity: Option = serde_json::from_str(&local_var_content).ok(); - let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity }; - Err(Error::ResponseError(local_var_error)) - } +pub async fn cloud_games_versions_get_game_version_by_id( + configuration: &configuration::Configuration, + game_id: &str, + version_id: &str, +) -> Result< + crate::models::CloudGamesGetGameVersionByIdResponse, + Error, +> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/cloud/games/{game_id}/versions/{version_id}", + local_var_configuration.base_path, + game_id = crate::apis::urlencode(game_id), + version_id = crate::apis::urlencode(version_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 { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + serde_json::from_str(&local_var_content).map_err(Error::from) + } else { + let local_var_entity: Option = + serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { + status: local_var_status, + content: local_var_content, + entity: local_var_entity, + }; + Err(Error::ResponseError(local_var_error)) + } } /// Reserves a display name for the next version. Used to generate a monotomically increasing build number without causing a race condition with multiple versions getting created at the same time. -pub async fn cloud_games_versions_reserve_version_name(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}/versions/reserve-name", local_var_configuration.base_path, game_id=crate::apis::urlencode(game_id)); - let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); - - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - - let local_var_req = local_var_req_builder.build()?; - let local_var_resp = local_var_client.execute(local_var_req).await?; - - let local_var_status = local_var_resp.status(); - let local_var_content = local_var_resp.text().await?; - - if !local_var_status.is_client_error() && !local_var_status.is_server_error() { - serde_json::from_str(&local_var_content).map_err(Error::from) - } else { - let local_var_entity: Option = serde_json::from_str(&local_var_content).ok(); - let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity }; - Err(Error::ResponseError(local_var_error)) - } +pub async fn cloud_games_versions_reserve_version_name( + configuration: &configuration::Configuration, + game_id: &str, +) -> Result< + crate::models::CloudGamesReserveVersionNameResponse, + Error, +> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/cloud/games/{game_id}/versions/reserve-name", + local_var_configuration.base_path, + game_id = crate::apis::urlencode(game_id) + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + serde_json::from_str(&local_var_content).map_err(Error::from) + } else { + let local_var_entity: Option = + serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { + status: local_var_status, + content: local_var_content, + entity: local_var_entity, + }; + Err(Error::ResponseError(local_var_error)) + } } /// Validates information used to create a new game version. -pub async fn cloud_games_versions_validate_game_version(configuration: &configuration::Configuration, game_id: &str, cloud_games_validate_game_version_request: crate::models::CloudGamesValidateGameVersionRequest) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/cloud/games/{game_id}/versions/validate", local_var_configuration.base_path, game_id=crate::apis::urlencode(game_id)); - let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); - - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - local_var_req_builder = local_var_req_builder.json(&cloud_games_validate_game_version_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)) - } +pub async fn cloud_games_versions_validate_game_version( + configuration: &configuration::Configuration, + game_id: &str, + cloud_games_validate_game_version_request: crate::models::CloudGamesValidateGameVersionRequest, +) -> Result< + crate::models::CloudGamesValidateGameVersionResponse, + Error, +> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/cloud/games/{game_id}/versions/validate", + local_var_configuration.base_path, + game_id = crate::apis::urlencode(game_id) + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + local_var_req_builder = local_var_req_builder.json(&cloud_games_validate_game_version_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)) + } } - diff --git a/sdks/full/rust/src/apis/cloud_groups_api.rs b/sdks/full/rust/src/apis/cloud_groups_api.rs index 74d4ad260f..9bf1053e71 100644 --- a/sdks/full/rust/src/apis/cloud_groups_api.rs +++ b/sdks/full/rust/src/apis/cloud_groups_api.rs @@ -4,60 +4,69 @@ * 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 super::{configuration, Error}; use crate::apis::ResponseContent; -use super::{Error, configuration}; - /// struct for typed errors of method [`cloud_groups_validate`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum CloudGroupsValidateError { - 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), + 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), } - /// Validates information used to create a new group. -pub async fn cloud_groups_validate(configuration: &configuration::Configuration, cloud_validate_group_request: crate::models::CloudValidateGroupRequest) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/cloud/groups/validate", 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(&cloud_validate_group_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)) - } -} +pub async fn cloud_groups_validate( + configuration: &configuration::Configuration, + cloud_validate_group_request: crate::models::CloudValidateGroupRequest, +) -> Result> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + let local_var_uri_str = format!( + "{}/cloud/groups/validate", + 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(&cloud_validate_group_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)) + } +} diff --git a/sdks/full/rust/src/apis/cloud_logs_api.rs b/sdks/full/rust/src/apis/cloud_logs_api.rs index 30436fa40d..0fc44fff99 100644 --- a/sdks/full/rust/src/apis/cloud_logs_api.rs +++ b/sdks/full/rust/src/apis/cloud_logs_api.rs @@ -4,59 +4,69 @@ * 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 super::{configuration, Error}; use crate::apis::ResponseContent; -use super::{Error, configuration}; - /// struct for typed errors of method [`cloud_logs_get_ray_perf_logs`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum CloudLogsGetRayPerfLogsError { - 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), + 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), } - /// Returns performance information about a Rivet Ray. -pub async fn cloud_logs_get_ray_perf_logs(configuration: &configuration::Configuration, ray_id: &str) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/cloud/rays/{ray_id}/perf", local_var_configuration.base_path, ray_id=crate::apis::urlencode(ray_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 { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - - let local_var_req = local_var_req_builder.build()?; - let local_var_resp = local_var_client.execute(local_var_req).await?; - - let local_var_status = local_var_resp.status(); - let local_var_content = local_var_resp.text().await?; - - if !local_var_status.is_client_error() && !local_var_status.is_server_error() { - serde_json::from_str(&local_var_content).map_err(Error::from) - } else { - let local_var_entity: Option = serde_json::from_str(&local_var_content).ok(); - let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity }; - Err(Error::ResponseError(local_var_error)) - } -} +pub async fn cloud_logs_get_ray_perf_logs( + configuration: &configuration::Configuration, + ray_id: &str, +) -> Result> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + let local_var_uri_str = format!( + "{}/cloud/rays/{ray_id}/perf", + local_var_configuration.base_path, + ray_id = crate::apis::urlencode(ray_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 { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + serde_json::from_str(&local_var_content).map_err(Error::from) + } else { + let local_var_entity: Option = + serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { + status: local_var_status, + content: local_var_content, + entity: local_var_entity, + }; + Err(Error::ResponseError(local_var_error)) + } +} diff --git a/sdks/full/rust/src/apis/cloud_tiers_api.rs b/sdks/full/rust/src/apis/cloud_tiers_api.rs index 3f8df8ee31..cdecc649c7 100644 --- a/sdks/full/rust/src/apis/cloud_tiers_api.rs +++ b/sdks/full/rust/src/apis/cloud_tiers_api.rs @@ -4,59 +4,64 @@ * 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 super::{configuration, Error}; use crate::apis::ResponseContent; -use super::{Error, configuration}; - /// struct for typed errors of method [`cloud_tiers_get_region_tiers`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum CloudTiersGetRegionTiersError { - 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), + 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), } - /// Returns all available region tiers. -pub async fn cloud_tiers_get_region_tiers(configuration: &configuration::Configuration, ) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/cloud/region-tiers", local_var_configuration.base_path); - 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 { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - - let local_var_req = local_var_req_builder.build()?; - let local_var_resp = local_var_client.execute(local_var_req).await?; - - let local_var_status = local_var_resp.status(); - let local_var_content = local_var_resp.text().await?; - - if !local_var_status.is_client_error() && !local_var_status.is_server_error() { - serde_json::from_str(&local_var_content).map_err(Error::from) - } else { - let local_var_entity: Option = serde_json::from_str(&local_var_content).ok(); - let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity }; - Err(Error::ResponseError(local_var_error)) - } -} +pub async fn cloud_tiers_get_region_tiers( + configuration: &configuration::Configuration, +) -> Result> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + let local_var_uri_str = format!("{}/cloud/region-tiers", local_var_configuration.base_path); + 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 { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + serde_json::from_str(&local_var_content).map_err(Error::from) + } else { + let local_var_entity: Option = + serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { + status: local_var_status, + content: local_var_content, + entity: local_var_entity, + }; + Err(Error::ResponseError(local_var_error)) + } +} diff --git a/sdks/full/rust/src/apis/cloud_uploads_api.rs b/sdks/full/rust/src/apis/cloud_uploads_api.rs index 5ff4809f43..685047855a 100644 --- a/sdks/full/rust/src/apis/cloud_uploads_api.rs +++ b/sdks/full/rust/src/apis/cloud_uploads_api.rs @@ -4,59 +4,69 @@ * 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 super::{configuration, Error}; use crate::apis::ResponseContent; -use super::{Error, configuration}; - /// struct for typed errors of method [`cloud_uploads_complete_upload`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum CloudUploadsCompleteUploadError { - 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), + 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), } - /// Marks an upload as complete. -pub async fn cloud_uploads_complete_upload(configuration: &configuration::Configuration, upload_id: &str) -> Result<(), Error> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/cloud/uploads/{upload_id}/complete", local_var_configuration.base_path, upload_id=crate::apis::urlencode(upload_id)); - let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); - - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - - let local_var_req = local_var_req_builder.build()?; - let local_var_resp = local_var_client.execute(local_var_req).await?; - - let local_var_status = local_var_resp.status(); - let local_var_content = local_var_resp.text().await?; - - if !local_var_status.is_client_error() && !local_var_status.is_server_error() { - 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)) - } -} +pub async fn cloud_uploads_complete_upload( + configuration: &configuration::Configuration, + upload_id: &str, +) -> Result<(), Error> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + let local_var_uri_str = format!( + "{}/cloud/uploads/{upload_id}/complete", + local_var_configuration.base_path, + upload_id = crate::apis::urlencode(upload_id) + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + 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/configuration.rs b/sdks/full/rust/src/apis/configuration.rs index 6535a51c12..15eda335ca 100644 --- a/sdks/full/rust/src/apis/configuration.rs +++ b/sdks/full/rust/src/apis/configuration.rs @@ -4,50 +4,46 @@ * 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(Debug, Clone)] pub struct Configuration { - pub base_path: String, - pub user_agent: Option, - pub client: reqwest::Client, - pub basic_auth: Option, - pub oauth_access_token: Option, - pub bearer_access_token: Option, - pub api_key: Option, - // TODO: take an oauth2 token source, similar to the go one + pub base_path: String, + pub user_agent: Option, + pub client: reqwest::Client, + pub basic_auth: Option, + pub oauth_access_token: Option, + pub bearer_access_token: Option, + pub api_key: Option, + // TODO: take an oauth2 token source, similar to the go one } pub type BasicAuth = (String, Option); #[derive(Debug, Clone)] pub struct ApiKey { - pub prefix: Option, - pub key: String, + pub prefix: Option, + pub key: String, } - impl Configuration { - pub fn new() -> Configuration { - Configuration::default() - } + pub fn new() -> Configuration { + Configuration::default() + } } impl Default for Configuration { - fn default() -> Self { - Configuration { - base_path: "https://api.rivet.gg".to_owned(), - user_agent: Some("OpenAPI-Generator/0.0.1/rust".to_owned()), - client: reqwest::Client::new(), - basic_auth: None, - oauth_access_token: None, - bearer_access_token: None, - api_key: None, - - } - } + fn default() -> Self { + Configuration { + base_path: "https://api.rivet.gg".to_owned(), + user_agent: Some("OpenAPI-Generator/0.0.1/rust".to_owned()), + client: reqwest::Client::new(), + basic_auth: None, + oauth_access_token: None, + bearer_access_token: None, + api_key: None, + } + } } diff --git a/sdks/full/rust/src/apis/games_environments_tokens_api.rs b/sdks/full/rust/src/apis/games_environments_tokens_api.rs index a36af51a32..a23e9aedf7 100644 --- a/sdks/full/rust/src/apis/games_environments_tokens_api.rs +++ b/sdks/full/rust/src/apis/games_environments_tokens_api.rs @@ -4,59 +4,74 @@ * 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 super::{configuration, Error}; use crate::apis::ResponseContent; -use super::{Error, configuration}; - /// struct for typed errors of method [`games_environments_tokens_create_service_token`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum GamesEnvironmentsTokensCreateServiceTokenError { - 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), + Status400(crate::models::ErrorBody), + Status403(crate::models::ErrorBody), + Status404(crate::models::ErrorBody), + Status408(crate::models::ErrorBody), + Status429(crate::models::ErrorBody), + Status500(crate::models::ErrorBody), + UnknownValue(serde_json::Value), } - /// Creates a new environment service token. -pub async fn games_environments_tokens_create_service_token(configuration: &configuration::Configuration, game_id: &str, environment_id: &str) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/games/{game_id}/environments/{environment_id}/tokens/service", local_var_configuration.base_path, game_id=crate::apis::urlencode(game_id), environment_id=crate::apis::urlencode(environment_id)); - let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); - - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - - let local_var_req = local_var_req_builder.build()?; - let local_var_resp = local_var_client.execute(local_var_req).await?; - - let local_var_status = local_var_resp.status(); - let local_var_content = local_var_resp.text().await?; - - if !local_var_status.is_client_error() && !local_var_status.is_server_error() { - serde_json::from_str(&local_var_content).map_err(Error::from) - } else { - let local_var_entity: Option = serde_json::from_str(&local_var_content).ok(); - let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity }; - Err(Error::ResponseError(local_var_error)) - } -} +pub async fn games_environments_tokens_create_service_token( + configuration: &configuration::Configuration, + game_id: &str, + environment_id: &str, +) -> Result< + crate::models::GamesEnvironmentsCreateServiceTokenResponse, + Error, +> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + let local_var_uri_str = format!( + "{}/games/{game_id}/environments/{environment_id}/tokens/service", + local_var_configuration.base_path, + game_id = crate::apis::urlencode(game_id), + environment_id = crate::apis::urlencode(environment_id) + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + serde_json::from_str(&local_var_content).map_err(Error::from) + } else { + let local_var_entity: Option = + serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { + status: local_var_status, + content: local_var_content, + entity: local_var_entity, + }; + Err(Error::ResponseError(local_var_error)) + } +} diff --git a/sdks/full/rust/src/apis/group_api.rs b/sdks/full/rust/src/apis/group_api.rs index a2e46b3ada..687ea14bc8 100644 --- a/sdks/full/rust/src/apis/group_api.rs +++ b/sdks/full/rust/src/apis/group_api.rs @@ -4,755 +4,996 @@ * 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 super::{configuration, Error}; use crate::apis::ResponseContent; -use super::{Error, configuration}; - /// struct for typed errors of method [`group_ban_identity`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum GroupBanIdentityError { - 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), + 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 [`group_complete_avatar_upload`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum GroupCompleteAvatarUploadError { - 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), + 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 [`group_create`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum GroupCreateError { - 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), + 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 [`group_get_bans`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum GroupGetBansError { - 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), + 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 [`group_get_join_requests`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum GroupGetJoinRequestsError { - 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), + 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 [`group_get_members`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum GroupGetMembersError { - 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), + 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 [`group_get_profile`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum GroupGetProfileError { - 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), + 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 [`group_get_summary`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum GroupGetSummaryError { - 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), + 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 [`group_kick_member`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum GroupKickMemberError { - 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), + 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 [`group_leave`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum GroupLeaveError { - 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), + 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 [`group_list_suggested`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum GroupListSuggestedError { - 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), + 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 [`group_prepare_avatar_upload`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum GroupPrepareAvatarUploadError { - 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), + 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 [`group_transfer_ownership`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum GroupTransferOwnershipError { - 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), + 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 [`group_unban_identity`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum GroupUnbanIdentityError { - 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), + 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 [`group_update_profile`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum GroupUpdateProfileError { - 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), + 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 [`group_validate_profile`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum GroupValidateProfileError { - 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), + 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), } - /// Bans an identity from a group. Must be the owner of the group to perform this action. The banned identity will no longer be able to create a join request or use a group invite. -pub async fn group_ban_identity(configuration: &configuration::Configuration, group_id: &str, identity_id: &str) -> Result<(), Error> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/group/groups/{group_id}/bans/{identity_id}", local_var_configuration.base_path, group_id=crate::apis::urlencode(group_id), identity_id=crate::apis::urlencode(identity_id)); - let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); - - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - - let local_var_req = local_var_req_builder.build()?; - let local_var_resp = local_var_client.execute(local_var_req).await?; - - let local_var_status = local_var_resp.status(); - let local_var_content = local_var_resp.text().await?; - - if !local_var_status.is_client_error() && !local_var_status.is_server_error() { - 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)) - } +pub async fn group_ban_identity( + configuration: &configuration::Configuration, + group_id: &str, + identity_id: &str, +) -> Result<(), Error> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/group/groups/{group_id}/bans/{identity_id}", + local_var_configuration.base_path, + group_id = crate::apis::urlencode(group_id), + identity_id = crate::apis::urlencode(identity_id) + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + 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)) + } } /// Completes an avatar image upload. Must be called after the file upload process completes. Call `rivet.api.group#PrepareAvatarUpload` first. -pub async fn group_complete_avatar_upload(configuration: &configuration::Configuration, group_id: &str, upload_id: &str) -> Result<(), Error> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/group/groups/{group_id}/avatar-upload/{upload_id}/complete", local_var_configuration.base_path, group_id=crate::apis::urlencode(group_id), upload_id=crate::apis::urlencode(upload_id)); - let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); - - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - - let local_var_req = local_var_req_builder.build()?; - let local_var_resp = local_var_client.execute(local_var_req).await?; - - let local_var_status = local_var_resp.status(); - let local_var_content = local_var_resp.text().await?; - - if !local_var_status.is_client_error() && !local_var_status.is_server_error() { - 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)) - } +pub async fn group_complete_avatar_upload( + configuration: &configuration::Configuration, + group_id: &str, + upload_id: &str, +) -> Result<(), Error> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/group/groups/{group_id}/avatar-upload/{upload_id}/complete", + local_var_configuration.base_path, + group_id = crate::apis::urlencode(group_id), + upload_id = crate::apis::urlencode(upload_id) + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + 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)) + } } /// Creates a new group. -pub async fn group_create(configuration: &configuration::Configuration, group_create_request: crate::models::GroupCreateRequest) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/group/groups", 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(&group_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)) - } +pub async fn group_create( + configuration: &configuration::Configuration, + group_create_request: crate::models::GroupCreateRequest, +) -> Result> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!("{}/group/groups", 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(&group_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)) + } } /// Returns a group's bans. Must have valid permissions to view. -pub async fn group_get_bans(configuration: &configuration::Configuration, group_id: &str, anchor: Option<&str>, count: Option, watch_index: Option<&str>) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/group/groups/{group_id}/bans", local_var_configuration.base_path, group_id=crate::apis::urlencode(group_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_str) = anchor { - local_var_req_builder = local_var_req_builder.query(&[("anchor", &local_var_str.to_string())]); - } - if let Some(ref local_var_str) = count { - local_var_req_builder = local_var_req_builder.query(&[("count", &local_var_str.to_string())]); - } - if let Some(ref local_var_str) = watch_index { - local_var_req_builder = local_var_req_builder.query(&[("watch_index", &local_var_str.to_string())]); - } - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - - 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)) - } +pub async fn group_get_bans( + configuration: &configuration::Configuration, + group_id: &str, + anchor: Option<&str>, + count: Option, + watch_index: Option<&str>, +) -> Result> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/group/groups/{group_id}/bans", + local_var_configuration.base_path, + group_id = crate::apis::urlencode(group_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_str) = anchor { + local_var_req_builder = + local_var_req_builder.query(&[("anchor", &local_var_str.to_string())]); + } + if let Some(ref local_var_str) = count { + local_var_req_builder = + local_var_req_builder.query(&[("count", &local_var_str.to_string())]); + } + if let Some(ref local_var_str) = watch_index { + local_var_req_builder = + local_var_req_builder.query(&[("watch_index", &local_var_str.to_string())]); + } + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + + 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)) + } } /// Returns a group's join requests. Must have valid permissions to view. -pub async fn group_get_join_requests(configuration: &configuration::Configuration, group_id: &str, anchor: Option<&str>, count: Option, watch_index: Option<&str>) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/group/groups/{group_id}/join-requests", local_var_configuration.base_path, group_id=crate::apis::urlencode(group_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_str) = anchor { - local_var_req_builder = local_var_req_builder.query(&[("anchor", &local_var_str.to_string())]); - } - if let Some(ref local_var_str) = count { - local_var_req_builder = local_var_req_builder.query(&[("count", &local_var_str.to_string())]); - } - if let Some(ref local_var_str) = watch_index { - local_var_req_builder = local_var_req_builder.query(&[("watch_index", &local_var_str.to_string())]); - } - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - - 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)) - } +pub async fn group_get_join_requests( + configuration: &configuration::Configuration, + group_id: &str, + anchor: Option<&str>, + count: Option, + watch_index: Option<&str>, +) -> Result> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/group/groups/{group_id}/join-requests", + local_var_configuration.base_path, + group_id = crate::apis::urlencode(group_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_str) = anchor { + local_var_req_builder = + local_var_req_builder.query(&[("anchor", &local_var_str.to_string())]); + } + if let Some(ref local_var_str) = count { + local_var_req_builder = + local_var_req_builder.query(&[("count", &local_var_str.to_string())]); + } + if let Some(ref local_var_str) = watch_index { + local_var_req_builder = + local_var_req_builder.query(&[("watch_index", &local_var_str.to_string())]); + } + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + + 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)) + } } /// Returns a group's members. -pub async fn group_get_members(configuration: &configuration::Configuration, group_id: &str, anchor: Option<&str>, count: Option, watch_index: Option<&str>) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/group/groups/{group_id}/members", local_var_configuration.base_path, group_id=crate::apis::urlencode(group_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_str) = anchor { - local_var_req_builder = local_var_req_builder.query(&[("anchor", &local_var_str.to_string())]); - } - if let Some(ref local_var_str) = count { - local_var_req_builder = local_var_req_builder.query(&[("count", &local_var_str.to_string())]); - } - if let Some(ref local_var_str) = watch_index { - local_var_req_builder = local_var_req_builder.query(&[("watch_index", &local_var_str.to_string())]); - } - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - - 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)) - } +pub async fn group_get_members( + configuration: &configuration::Configuration, + group_id: &str, + anchor: Option<&str>, + count: Option, + watch_index: Option<&str>, +) -> Result> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/group/groups/{group_id}/members", + local_var_configuration.base_path, + group_id = crate::apis::urlencode(group_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_str) = anchor { + local_var_req_builder = + local_var_req_builder.query(&[("anchor", &local_var_str.to_string())]); + } + if let Some(ref local_var_str) = count { + local_var_req_builder = + local_var_req_builder.query(&[("count", &local_var_str.to_string())]); + } + if let Some(ref local_var_str) = watch_index { + local_var_req_builder = + local_var_req_builder.query(&[("watch_index", &local_var_str.to_string())]); + } + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + + 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)) + } } /// Returns a group profile. -pub async fn group_get_profile(configuration: &configuration::Configuration, group_id: &str, watch_index: Option<&str>) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/group/groups/{group_id}/profile", local_var_configuration.base_path, group_id=crate::apis::urlencode(group_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_str) = watch_index { - local_var_req_builder = local_var_req_builder.query(&[("watch_index", &local_var_str.to_string())]); - } - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - - 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)) - } -} - -pub async fn group_get_summary(configuration: &configuration::Configuration, group_id: &str) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/group/groups/{group_id}/summary", local_var_configuration.base_path, group_id=crate::apis::urlencode(group_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 { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - - let local_var_req = local_var_req_builder.build()?; - let local_var_resp = local_var_client.execute(local_var_req).await?; - - let local_var_status = local_var_resp.status(); - let local_var_content = local_var_resp.text().await?; - - if !local_var_status.is_client_error() && !local_var_status.is_server_error() { - serde_json::from_str(&local_var_content).map_err(Error::from) - } else { - let local_var_entity: Option = serde_json::from_str(&local_var_content).ok(); - let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity }; - Err(Error::ResponseError(local_var_error)) - } +pub async fn group_get_profile( + configuration: &configuration::Configuration, + group_id: &str, + watch_index: Option<&str>, +) -> Result> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/group/groups/{group_id}/profile", + local_var_configuration.base_path, + group_id = crate::apis::urlencode(group_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_str) = watch_index { + local_var_req_builder = + local_var_req_builder.query(&[("watch_index", &local_var_str.to_string())]); + } + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + + 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)) + } +} + +pub async fn group_get_summary( + configuration: &configuration::Configuration, + group_id: &str, +) -> Result> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/group/groups/{group_id}/summary", + local_var_configuration.base_path, + group_id = crate::apis::urlencode(group_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 { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + serde_json::from_str(&local_var_content).map_err(Error::from) + } else { + let local_var_entity: Option = + serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { + status: local_var_status, + content: local_var_content, + entity: local_var_entity, + }; + Err(Error::ResponseError(local_var_error)) + } } /// Kicks an identity from a group. Must be the owner of the group to perform this action. -pub async fn group_kick_member(configuration: &configuration::Configuration, group_id: &str, identity_id: &str) -> Result<(), Error> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/group/groups/{group_id}/kick/{identity_id}", local_var_configuration.base_path, group_id=crate::apis::urlencode(group_id), identity_id=crate::apis::urlencode(identity_id)); - let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); - - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - - let local_var_req = local_var_req_builder.build()?; - let local_var_resp = local_var_client.execute(local_var_req).await?; - - let local_var_status = local_var_resp.status(); - let local_var_content = local_var_resp.text().await?; - - if !local_var_status.is_client_error() && !local_var_status.is_server_error() { - 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)) - } +pub async fn group_kick_member( + configuration: &configuration::Configuration, + group_id: &str, + identity_id: &str, +) -> Result<(), Error> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/group/groups/{group_id}/kick/{identity_id}", + local_var_configuration.base_path, + group_id = crate::apis::urlencode(group_id), + identity_id = crate::apis::urlencode(identity_id) + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + 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)) + } } /// Leaves a group. -pub async fn group_leave(configuration: &configuration::Configuration, group_id: &str) -> Result<(), Error> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/group/groups/{group_id}/leave", local_var_configuration.base_path, group_id=crate::apis::urlencode(group_id)); - let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); - - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - - let local_var_req = local_var_req_builder.build()?; - let local_var_resp = local_var_client.execute(local_var_req).await?; - - let local_var_status = local_var_resp.status(); - let local_var_content = local_var_resp.text().await?; - - if !local_var_status.is_client_error() && !local_var_status.is_server_error() { - 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)) - } +pub async fn group_leave( + configuration: &configuration::Configuration, + group_id: &str, +) -> Result<(), Error> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/group/groups/{group_id}/leave", + local_var_configuration.base_path, + group_id = crate::apis::urlencode(group_id) + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + 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)) + } } /// Returns a list of suggested groups. -pub async fn group_list_suggested(configuration: &configuration::Configuration, watch_index: Option<&str>) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/group/groups", local_var_configuration.base_path); - 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_str) = watch_index { - local_var_req_builder = local_var_req_builder.query(&[("watch_index", &local_var_str.to_string())]); - } - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - - 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)) - } +pub async fn group_list_suggested( + configuration: &configuration::Configuration, + watch_index: Option<&str>, +) -> Result> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!("{}/group/groups", local_var_configuration.base_path); + 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_str) = watch_index { + local_var_req_builder = + local_var_req_builder.query(&[("watch_index", &local_var_str.to_string())]); + } + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + + 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)) + } } /// Prepares an avatar image upload. Complete upload with `rivet.api.group#CompleteAvatarUpload`. -pub async fn group_prepare_avatar_upload(configuration: &configuration::Configuration, group_prepare_avatar_upload_request: crate::models::GroupPrepareAvatarUploadRequest) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/group/groups/avatar-upload/prepare", 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(&group_prepare_avatar_upload_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)) - } +pub async fn group_prepare_avatar_upload( + configuration: &configuration::Configuration, + group_prepare_avatar_upload_request: crate::models::GroupPrepareAvatarUploadRequest, +) -> Result> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/group/groups/avatar-upload/prepare", + 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(&group_prepare_avatar_upload_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)) + } } /// Transfers ownership of a group to another identity. -pub async fn group_transfer_ownership(configuration: &configuration::Configuration, group_id: &str, group_transfer_ownership_request: crate::models::GroupTransferOwnershipRequest) -> Result<(), Error> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/group/groups/{group_id}/transfer-owner", local_var_configuration.base_path, group_id=crate::apis::urlencode(group_id)); - let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); - - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - local_var_req_builder = local_var_req_builder.json(&group_transfer_ownership_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)) - } +pub async fn group_transfer_ownership( + configuration: &configuration::Configuration, + group_id: &str, + group_transfer_ownership_request: crate::models::GroupTransferOwnershipRequest, +) -> Result<(), Error> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/group/groups/{group_id}/transfer-owner", + local_var_configuration.base_path, + group_id = crate::apis::urlencode(group_id) + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + local_var_req_builder = local_var_req_builder.json(&group_transfer_ownership_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)) + } } /// Unbans an identity from a group. Must be the owner of the group to perform this action. -pub async fn group_unban_identity(configuration: &configuration::Configuration, group_id: &str, identity_id: &str) -> Result<(), Error> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/group/groups/{group_id}/bans/{identity_id}", local_var_configuration.base_path, group_id=crate::apis::urlencode(group_id), identity_id=crate::apis::urlencode(identity_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()); - }; - - 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)) - } -} - -pub async fn group_update_profile(configuration: &configuration::Configuration, group_id: &str, group_update_profile_request: crate::models::GroupUpdateProfileRequest) -> Result<(), Error> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/group/groups/{group_id}/profile", local_var_configuration.base_path, group_id=crate::apis::urlencode(group_id)); - let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); - - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - local_var_req_builder = local_var_req_builder.json(&group_update_profile_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)) - } +pub async fn group_unban_identity( + configuration: &configuration::Configuration, + group_id: &str, + identity_id: &str, +) -> Result<(), Error> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/group/groups/{group_id}/bans/{identity_id}", + local_var_configuration.base_path, + group_id = crate::apis::urlencode(group_id), + identity_id = crate::apis::urlencode(identity_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()); + }; + + 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)) + } +} + +pub async fn group_update_profile( + configuration: &configuration::Configuration, + group_id: &str, + group_update_profile_request: crate::models::GroupUpdateProfileRequest, +) -> Result<(), Error> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/group/groups/{group_id}/profile", + local_var_configuration.base_path, + group_id = crate::apis::urlencode(group_id) + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + local_var_req_builder = local_var_req_builder.json(&group_update_profile_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)) + } } /// Validate contents of group profile. Use to provide immediate feedback on profile changes before committing them. -pub async fn group_validate_profile(configuration: &configuration::Configuration, group_validate_profile_request: crate::models::GroupValidateProfileRequest) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/group/groups/profile/validate", 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(&group_validate_profile_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)) - } +pub async fn group_validate_profile( + configuration: &configuration::Configuration, + group_validate_profile_request: crate::models::GroupValidateProfileRequest, +) -> Result> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/group/groups/profile/validate", + 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(&group_validate_profile_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)) + } } - diff --git a/sdks/full/rust/src/apis/group_invites_api.rs b/sdks/full/rust/src/apis/group_invites_api.rs index 2940010eeb..74791d615b 100644 --- a/sdks/full/rust/src/apis/group_invites_api.rs +++ b/sdks/full/rust/src/apis/group_invites_api.rs @@ -4,148 +4,187 @@ * 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 super::{configuration, Error}; use crate::apis::ResponseContent; -use super::{Error, configuration}; - /// struct for typed errors of method [`group_invites_consume_invite`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum GroupInvitesConsumeInviteError { - 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), + 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 [`group_invites_create_invite`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum GroupInvitesCreateInviteError { - 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), + 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 [`group_invites_get_invite`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum GroupInvitesGetInviteError { - 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), + 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), } - /// Consumes a group invite to join a group. -pub async fn group_invites_consume_invite(configuration: &configuration::Configuration, group_invite_code: &str) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/group/invites/{group_invite_code}/consume", local_var_configuration.base_path, group_invite_code=crate::apis::urlencode(group_invite_code)); - let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); - - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - - let local_var_req = local_var_req_builder.build()?; - let local_var_resp = local_var_client.execute(local_var_req).await?; - - let local_var_status = local_var_resp.status(); - let local_var_content = local_var_resp.text().await?; - - if !local_var_status.is_client_error() && !local_var_status.is_server_error() { - serde_json::from_str(&local_var_content).map_err(Error::from) - } else { - let local_var_entity: Option = serde_json::from_str(&local_var_content).ok(); - let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity }; - Err(Error::ResponseError(local_var_error)) - } +pub async fn group_invites_consume_invite( + configuration: &configuration::Configuration, + group_invite_code: &str, +) -> Result> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/group/invites/{group_invite_code}/consume", + local_var_configuration.base_path, + group_invite_code = crate::apis::urlencode(group_invite_code) + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + serde_json::from_str(&local_var_content).map_err(Error::from) + } else { + let local_var_entity: Option = + serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { + status: local_var_status, + content: local_var_content, + entity: local_var_entity, + }; + Err(Error::ResponseError(local_var_error)) + } } /// Creates a group invite. Can be shared with other identities to let them join this group. -pub async fn group_invites_create_invite(configuration: &configuration::Configuration, group_id: &str, group_create_invite_request: crate::models::GroupCreateInviteRequest) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/group/groups/{group_id}/invites", local_var_configuration.base_path, group_id=crate::apis::urlencode(group_id)); - let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); - - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - local_var_req_builder = local_var_req_builder.json(&group_create_invite_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)) - } +pub async fn group_invites_create_invite( + configuration: &configuration::Configuration, + group_id: &str, + group_create_invite_request: crate::models::GroupCreateInviteRequest, +) -> Result> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/group/groups/{group_id}/invites", + local_var_configuration.base_path, + group_id = crate::apis::urlencode(group_id) + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + local_var_req_builder = local_var_req_builder.json(&group_create_invite_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)) + } } /// Inspects a group invite returning information about the team that created it. -pub async fn group_invites_get_invite(configuration: &configuration::Configuration, group_invite_code: &str) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/group/invites/{group_invite_code}", local_var_configuration.base_path, group_invite_code=crate::apis::urlencode(group_invite_code)); - 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 { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - - let local_var_req = local_var_req_builder.build()?; - let local_var_resp = local_var_client.execute(local_var_req).await?; - - let local_var_status = local_var_resp.status(); - let local_var_content = local_var_resp.text().await?; - - if !local_var_status.is_client_error() && !local_var_status.is_server_error() { - serde_json::from_str(&local_var_content).map_err(Error::from) - } else { - let local_var_entity: Option = serde_json::from_str(&local_var_content).ok(); - let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity }; - Err(Error::ResponseError(local_var_error)) - } +pub async fn group_invites_get_invite( + configuration: &configuration::Configuration, + group_invite_code: &str, +) -> Result> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/group/invites/{group_invite_code}", + local_var_configuration.base_path, + group_invite_code = crate::apis::urlencode(group_invite_code) + ); + 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 { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + serde_json::from_str(&local_var_content).map_err(Error::from) + } else { + let local_var_entity: Option = + serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { + status: local_var_status, + content: local_var_content, + entity: local_var_entity, + }; + Err(Error::ResponseError(local_var_error)) + } } - diff --git a/sdks/full/rust/src/apis/group_join_requests_api.rs b/sdks/full/rust/src/apis/group_join_requests_api.rs index 1b345544c5..321fe0c58b 100644 --- a/sdks/full/rust/src/apis/group_join_requests_api.rs +++ b/sdks/full/rust/src/apis/group_join_requests_api.rs @@ -4,104 +4,131 @@ * 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 super::{configuration, Error}; use crate::apis::ResponseContent; -use super::{Error, configuration}; - /// struct for typed errors of method [`group_join_requests_create_join_request`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum GroupJoinRequestsCreateJoinRequestError { - 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), + 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 [`group_join_requests_resolve_join_request`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum GroupJoinRequestsResolveJoinRequestError { - 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), + 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), } - /// Requests to join a group. -pub async fn group_join_requests_create_join_request(configuration: &configuration::Configuration, group_id: &str) -> Result<(), Error> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/group/groups/{group_id}/join-request", local_var_configuration.base_path, group_id=crate::apis::urlencode(group_id)); - let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); - - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - - let local_var_req = local_var_req_builder.build()?; - let local_var_resp = local_var_client.execute(local_var_req).await?; - - let local_var_status = local_var_resp.status(); - let local_var_content = local_var_resp.text().await?; - - if !local_var_status.is_client_error() && !local_var_status.is_server_error() { - 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)) - } +pub async fn group_join_requests_create_join_request( + configuration: &configuration::Configuration, + group_id: &str, +) -> Result<(), Error> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/group/groups/{group_id}/join-request", + local_var_configuration.base_path, + group_id = crate::apis::urlencode(group_id) + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + 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)) + } } /// Resolves a join request for a given group. -pub async fn group_join_requests_resolve_join_request(configuration: &configuration::Configuration, group_id: &str, identity_id: &str, group_resolve_join_request_request: crate::models::GroupResolveJoinRequestRequest) -> Result<(), Error> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/group/groups/{group_id}/join-request/{identity_id}", local_var_configuration.base_path, group_id=crate::apis::urlencode(group_id), identity_id=crate::apis::urlencode(identity_id)); - let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); - - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - local_var_req_builder = local_var_req_builder.json(&group_resolve_join_request_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)) - } +pub async fn group_join_requests_resolve_join_request( + configuration: &configuration::Configuration, + group_id: &str, + identity_id: &str, + group_resolve_join_request_request: crate::models::GroupResolveJoinRequestRequest, +) -> Result<(), Error> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/group/groups/{group_id}/join-request/{identity_id}", + local_var_configuration.base_path, + group_id = crate::apis::urlencode(group_id), + identity_id = crate::apis::urlencode(identity_id) + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + local_var_req_builder = local_var_req_builder.json(&group_resolve_join_request_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/identity_activities_api.rs b/sdks/full/rust/src/apis/identity_activities_api.rs index b50c773b28..e559a90ab1 100644 --- a/sdks/full/rust/src/apis/identity_activities_api.rs +++ b/sdks/full/rust/src/apis/identity_activities_api.rs @@ -4,62 +4,69 @@ * 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 super::{configuration, Error}; use crate::apis::ResponseContent; -use super::{Error, configuration}; - /// struct for typed errors of method [`identity_activities_list`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum IdentityActivitiesListError { - 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), + 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), } - /// Returns an overview of all players currently online or in game. -pub async fn identity_activities_list(configuration: &configuration::Configuration, watch_index: Option<&str>) -> Result> { - let local_var_configuration = configuration; +pub async fn identity_activities_list( + configuration: &configuration::Configuration, + watch_index: Option<&str>, +) -> Result> { + let local_var_configuration = configuration; - let local_var_client = &local_var_configuration.client; + let local_var_client = &local_var_configuration.client; - let local_var_uri_str = format!("{}/identity/activities", local_var_configuration.base_path); - let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str()); + let local_var_uri_str = format!("{}/identity/activities", local_var_configuration.base_path); + 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_str) = watch_index { - local_var_req_builder = local_var_req_builder.query(&[("watch_index", &local_var_str.to_string())]); - } - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; + if let Some(ref local_var_str) = watch_index { + local_var_req_builder = + local_var_req_builder.query(&[("watch_index", &local_var_str.to_string())]); + } + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; - let local_var_req = local_var_req_builder.build()?; - let local_var_resp = local_var_client.execute(local_var_req).await?; + 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?; + 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)) - } + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + serde_json::from_str(&local_var_content).map_err(Error::from) + } else { + let local_var_entity: Option = + serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { + status: local_var_status, + content: local_var_content, + entity: local_var_entity, + }; + Err(Error::ResponseError(local_var_error)) + } } - diff --git a/sdks/full/rust/src/apis/identity_api.rs b/sdks/full/rust/src/apis/identity_api.rs index fc7ff309f7..f0a656e0f0 100644 --- a/sdks/full/rust/src/apis/identity_api.rs +++ b/sdks/full/rust/src/apis/identity_api.rs @@ -4,688 +4,883 @@ * 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 super::{configuration, Error}; use crate::apis::ResponseContent; -use super::{Error, configuration}; - /// struct for typed errors of method [`identity_complete_avatar_upload`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum IdentityCompleteAvatarUploadError { - 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), + 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 [`identity_get_handles`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum IdentityGetHandlesError { - 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), + 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 [`identity_get_profile`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum IdentityGetProfileError { - 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), + 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 [`identity_get_self_profile`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum IdentityGetSelfProfileError { - 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), + 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 [`identity_get_summaries`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum IdentityGetSummariesError { - 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), + 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 [`identity_mark_deletion`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum IdentityMarkDeletionError { - 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), + 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 [`identity_prepare_avatar_upload`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum IdentityPrepareAvatarUploadError { - 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), + 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 [`identity_remove_game_activity`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum IdentityRemoveGameActivityError { - 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), + 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 [`identity_set_game_activity`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum IdentitySetGameActivityError { - 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), + 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 [`identity_setup`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum IdentitySetupError { - 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), + 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 [`identity_signup_for_beta`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum IdentitySignupForBetaError { - 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), + 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 [`identity_unmark_deletion`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum IdentityUnmarkDeletionError { - 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), + 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 [`identity_update_profile`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum IdentityUpdateProfileError { - 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), + 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 [`identity_update_status`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum IdentityUpdateStatusError { - 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), + 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 [`identity_validate_profile`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum IdentityValidateProfileError { - 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), + 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), } - /// Completes an avatar image upload. Must be called after the file upload process completes. -pub async fn identity_complete_avatar_upload(configuration: &configuration::Configuration, upload_id: &str) -> Result<(), Error> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/identity/identities/avatar-upload/{upload_id}/complete", local_var_configuration.base_path, upload_id=crate::apis::urlencode(upload_id)); - let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); - - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - - let local_var_req = local_var_req_builder.build()?; - let local_var_resp = local_var_client.execute(local_var_req).await?; - - let local_var_status = local_var_resp.status(); - let local_var_content = local_var_resp.text().await?; - - if !local_var_status.is_client_error() && !local_var_status.is_server_error() { - 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)) - } +pub async fn identity_complete_avatar_upload( + configuration: &configuration::Configuration, + upload_id: &str, +) -> Result<(), Error> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/identity/identities/avatar-upload/{upload_id}/complete", + local_var_configuration.base_path, + upload_id = crate::apis::urlencode(upload_id) + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + 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)) + } } /// Fetches a list of identity handles. -pub async fn identity_get_handles(configuration: &configuration::Configuration, identity_ids: &str) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/identity/identities/batch/handle", local_var_configuration.base_path); - let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str()); - - local_var_req_builder = local_var_req_builder.query(&[("identity_ids", &identity_ids.to_string())]); - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - - 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)) - } +pub async fn identity_get_handles( + configuration: &configuration::Configuration, + identity_ids: &str, +) -> Result> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/identity/identities/batch/handle", + local_var_configuration.base_path + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str()); + + local_var_req_builder = + local_var_req_builder.query(&[("identity_ids", &identity_ids.to_string())]); + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + + 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)) + } } /// Fetches an identity profile. -pub async fn identity_get_profile(configuration: &configuration::Configuration, identity_id: &str, watch_index: Option<&str>) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/identity/identities/{identity_id}/profile", local_var_configuration.base_path, identity_id=crate::apis::urlencode(identity_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_str) = watch_index { - local_var_req_builder = local_var_req_builder.query(&[("watch_index", &local_var_str.to_string())]); - } - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - - 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)) - } +pub async fn identity_get_profile( + configuration: &configuration::Configuration, + identity_id: &str, + watch_index: Option<&str>, +) -> Result> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/identity/identities/{identity_id}/profile", + local_var_configuration.base_path, + identity_id = crate::apis::urlencode(identity_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_str) = watch_index { + local_var_req_builder = + local_var_req_builder.query(&[("watch_index", &local_var_str.to_string())]); + } + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + + 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)) + } } /// Fetches the current identity's profile. -pub async fn identity_get_self_profile(configuration: &configuration::Configuration, watch_index: Option<&str>) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/identity/identities/self/profile", local_var_configuration.base_path); - 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_str) = watch_index { - local_var_req_builder = local_var_req_builder.query(&[("watch_index", &local_var_str.to_string())]); - } - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - - 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)) - } +pub async fn identity_get_self_profile( + configuration: &configuration::Configuration, + watch_index: Option<&str>, +) -> Result> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/identity/identities/self/profile", + local_var_configuration.base_path + ); + 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_str) = watch_index { + local_var_req_builder = + local_var_req_builder.query(&[("watch_index", &local_var_str.to_string())]); + } + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + + 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)) + } } /// Fetches a list of identity summaries. -pub async fn identity_get_summaries(configuration: &configuration::Configuration, identity_ids: &str) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/identity/identities/batch/summary", local_var_configuration.base_path); - let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str()); - - local_var_req_builder = local_var_req_builder.query(&[("identity_ids", &identity_ids.to_string())]); - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - - 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)) - } +pub async fn identity_get_summaries( + configuration: &configuration::Configuration, + identity_ids: &str, +) -> Result> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/identity/identities/batch/summary", + local_var_configuration.base_path + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str()); + + local_var_req_builder = + local_var_req_builder.query(&[("identity_ids", &identity_ids.to_string())]); + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + + 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)) + } } -pub async fn identity_mark_deletion(configuration: &configuration::Configuration, ) -> Result<(), Error> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/identity/identities/self/delete-request", 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()); - }; - - 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)) - } +pub async fn identity_mark_deletion( + configuration: &configuration::Configuration, +) -> Result<(), Error> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/identity/identities/self/delete-request", + 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()); + }; + + 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)) + } } /// Prepares an avatar image upload. Complete upload with `CompleteIdentityAvatarUpload`. -pub async fn identity_prepare_avatar_upload(configuration: &configuration::Configuration, identity_prepare_avatar_upload_request: crate::models::IdentityPrepareAvatarUploadRequest) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/identity/identities/avatar-upload/prepare", 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(&identity_prepare_avatar_upload_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)) - } +pub async fn identity_prepare_avatar_upload( + configuration: &configuration::Configuration, + identity_prepare_avatar_upload_request: crate::models::IdentityPrepareAvatarUploadRequest, +) -> Result< + crate::models::IdentityPrepareAvatarUploadResponse, + Error, +> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/identity/identities/avatar-upload/prepare", + 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(&identity_prepare_avatar_upload_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)) + } } /// Removes the current identity's game activity. -pub async fn identity_remove_game_activity(configuration: &configuration::Configuration, ) -> Result<(), Error> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/identity/identities/self/activity", local_var_configuration.base_path); - 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()); - }; - - 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)) - } +pub async fn identity_remove_game_activity( + configuration: &configuration::Configuration, +) -> Result<(), Error> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/identity/identities/self/activity", + local_var_configuration.base_path + ); + 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()); + }; + + 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)) + } } /// Sets the current identity's game activity. This activity will automatically be removed when the identity goes offline. -pub async fn identity_set_game_activity(configuration: &configuration::Configuration, identity_set_game_activity_request: crate::models::IdentitySetGameActivityRequest) -> Result<(), Error> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/identity/identities/self/activity", 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(&identity_set_game_activity_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)) - } +pub async fn identity_set_game_activity( + configuration: &configuration::Configuration, + identity_set_game_activity_request: crate::models::IdentitySetGameActivityRequest, +) -> Result<(), Error> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/identity/identities/self/activity", + 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(&identity_set_game_activity_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)) + } } /// Gets or creates an identity. Passing an existing identity token in the body refreshes the token. Temporary Accounts Until the identity is linked with the Rivet Hub (see `PrepareGameLink`), this identity will be temporary but still behave like all other identities. This is intended to allow users to play the game without signing up while still having the benefits of having an account. When they are ready to save their account, they should be instructed to link their account (see `PrepareGameLink`). Storing Token `identity_token` should be stored in some form of persistent storage. The token should be read from storage and passed to `Setup` every time the client starts. -pub async fn identity_setup(configuration: &configuration::Configuration, identity_setup_request: crate::models::IdentitySetupRequest) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/identity/identities", 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(&identity_setup_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)) - } +pub async fn identity_setup( + configuration: &configuration::Configuration, + identity_setup_request: crate::models::IdentitySetupRequest, +) -> Result> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!("{}/identity/identities", 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(&identity_setup_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)) + } } /// Completes an avatar image upload. Must be called after the file upload process completes. -pub async fn identity_signup_for_beta(configuration: &configuration::Configuration, identity_signup_for_beta_request: crate::models::IdentitySignupForBetaRequest) -> Result<(), Error> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/identity/identities/self/beta-signup", 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(&identity_signup_for_beta_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)) - } +pub async fn identity_signup_for_beta( + configuration: &configuration::Configuration, + identity_signup_for_beta_request: crate::models::IdentitySignupForBetaRequest, +) -> Result<(), Error> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/identity/identities/self/beta-signup", + 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(&identity_signup_for_beta_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)) + } } -pub async fn identity_unmark_deletion(configuration: &configuration::Configuration, ) -> Result<(), Error> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/identity/identities/self/delete-request", local_var_configuration.base_path); - 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()); - }; - - 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)) - } +pub async fn identity_unmark_deletion( + configuration: &configuration::Configuration, +) -> Result<(), Error> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/identity/identities/self/delete-request", + local_var_configuration.base_path + ); + 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()); + }; + + 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)) + } } /// Updates profile of the current identity. -pub async fn identity_update_profile(configuration: &configuration::Configuration, identity_update_profile_request: crate::models::IdentityUpdateProfileRequest) -> Result<(), Error> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/identity/identities/self/profile", 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(&identity_update_profile_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)) - } +pub async fn identity_update_profile( + configuration: &configuration::Configuration, + identity_update_profile_request: crate::models::IdentityUpdateProfileRequest, +) -> Result<(), Error> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/identity/identities/self/profile", + 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(&identity_update_profile_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)) + } } /// Updates the current identity's status. -pub async fn identity_update_status(configuration: &configuration::Configuration, identity_update_status_request: crate::models::IdentityUpdateStatusRequest) -> Result<(), Error> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/identity/identities/identities/self/status", 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(&identity_update_status_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)) - } +pub async fn identity_update_status( + configuration: &configuration::Configuration, + identity_update_status_request: crate::models::IdentityUpdateStatusRequest, +) -> Result<(), Error> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/identity/identities/identities/self/status", + 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(&identity_update_status_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)) + } } /// Validate contents of identity profile. Use to provide immediate feedback on profile changes before committing them. -pub async fn identity_validate_profile(configuration: &configuration::Configuration, identity_update_profile_request: crate::models::IdentityUpdateProfileRequest) -> Result<(), Error> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/identity/identities/self/profile/validate", 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(&identity_update_profile_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)) - } +pub async fn identity_validate_profile( + configuration: &configuration::Configuration, + identity_update_profile_request: crate::models::IdentityUpdateProfileRequest, +) -> Result<(), Error> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/identity/identities/self/profile/validate", + 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(&identity_update_profile_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/identity_events_api.rs b/sdks/full/rust/src/apis/identity_events_api.rs index db247b63fe..f31335222c 100644 --- a/sdks/full/rust/src/apis/identity_events_api.rs +++ b/sdks/full/rust/src/apis/identity_events_api.rs @@ -4,62 +4,69 @@ * 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 super::{configuration, Error}; use crate::apis::ResponseContent; -use super::{Error, configuration}; - /// struct for typed errors of method [`identity_events_watch`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum IdentityEventsWatchError { - 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), + 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), } - /// Returns all events relative to the current identity. -pub async fn identity_events_watch(configuration: &configuration::Configuration, watch_index: Option<&str>) -> Result> { - let local_var_configuration = configuration; +pub async fn identity_events_watch( + configuration: &configuration::Configuration, + watch_index: Option<&str>, +) -> Result> { + let local_var_configuration = configuration; - let local_var_client = &local_var_configuration.client; + let local_var_client = &local_var_configuration.client; - let local_var_uri_str = format!("{}/identity/events/live", local_var_configuration.base_path); - let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str()); + let local_var_uri_str = format!("{}/identity/events/live", local_var_configuration.base_path); + 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_str) = watch_index { - local_var_req_builder = local_var_req_builder.query(&[("watch_index", &local_var_str.to_string())]); - } - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; + if let Some(ref local_var_str) = watch_index { + local_var_req_builder = + local_var_req_builder.query(&[("watch_index", &local_var_str.to_string())]); + } + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; - let local_var_req = local_var_req_builder.build()?; - let local_var_resp = local_var_client.execute(local_var_req).await?; + 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?; + 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)) - } + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + serde_json::from_str(&local_var_content).map_err(Error::from) + } else { + let local_var_entity: Option = + serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { + status: local_var_status, + content: local_var_content, + entity: local_var_entity, + }; + Err(Error::ResponseError(local_var_error)) + } } - diff --git a/sdks/full/rust/src/apis/job_run_api.rs b/sdks/full/rust/src/apis/job_run_api.rs index a67c3ad575..de8bad1fd2 100644 --- a/sdks/full/rust/src/apis/job_run_api.rs +++ b/sdks/full/rust/src/apis/job_run_api.rs @@ -4,58 +4,63 @@ * 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 super::{configuration, Error}; use crate::apis::ResponseContent; -use super::{Error, configuration}; - /// struct for typed errors of method [`job_run_cleanup`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum JobRunCleanupError { - 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), + 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), } +pub async fn job_run_cleanup( + configuration: &configuration::Configuration, +) -> Result<(), Error> { + let local_var_configuration = configuration; -pub async fn job_run_cleanup(configuration: &configuration::Configuration, ) -> Result<(), Error> { - let local_var_configuration = configuration; + let local_var_client = &local_var_configuration.client; - let local_var_client = &local_var_configuration.client; + let local_var_uri_str = format!("{}/job/runs/cleanup", local_var_configuration.base_path); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); - let local_var_uri_str = format!("{}/job/runs/cleanup", 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()); + }; - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; - let local_var_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?; - 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)) - } + 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/matchmaker_lobbies_api.rs b/sdks/full/rust/src/apis/matchmaker_lobbies_api.rs index 50c2f0f0c6..44a4ce10e5 100644 --- a/sdks/full/rust/src/apis/matchmaker_lobbies_api.rs +++ b/sdks/full/rust/src/apis/matchmaker_lobbies_api.rs @@ -4,378 +4,481 @@ * 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 super::{configuration, Error}; use crate::apis::ResponseContent; -use super::{Error, configuration}; - /// struct for typed errors of method [`matchmaker_lobbies_create`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum MatchmakerLobbiesCreateError { - 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), + 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 [`matchmaker_lobbies_find`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum MatchmakerLobbiesFindError { - 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), + 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 [`matchmaker_lobbies_get_state`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum MatchmakerLobbiesGetStateError { - 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), + 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 [`matchmaker_lobbies_join`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum MatchmakerLobbiesJoinError { - 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), + 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 [`matchmaker_lobbies_list`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum MatchmakerLobbiesListError { - 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), + 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 [`matchmaker_lobbies_ready`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum MatchmakerLobbiesReadyError { - 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), + 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 [`matchmaker_lobbies_set_closed`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum MatchmakerLobbiesSetClosedError { - 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), + 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 [`matchmaker_lobbies_set_state`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum MatchmakerLobbiesSetStateError { - 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), + Status400(crate::models::ErrorBody), + Status403(crate::models::ErrorBody), + Status404(crate::models::ErrorBody), + Status408(crate::models::ErrorBody), + Status429(crate::models::ErrorBody), + Status500(crate::models::ErrorBody), + UnknownValue(serde_json::Value), } - /// Creates a custom lobby. When [tokenless authentication](/docs/general/concepts/tokenless-authentication/web) is enabled in your game namespace, this endpoint does not require a token to authenticate. Otherwise, a [development namespace token](/docs/general/concepts/token-types#namespace-development) can be used for mock responses and a [public namespace token](/docs/general/concepts/token-types#namespace-public) can be used for general authentication. -pub async fn matchmaker_lobbies_create(configuration: &configuration::Configuration, matchmaker_lobbies_create_request: crate::models::MatchmakerLobbiesCreateRequest) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/matchmaker/lobbies/create", 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(&matchmaker_lobbies_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)) - } +pub async fn matchmaker_lobbies_create( + configuration: &configuration::Configuration, + matchmaker_lobbies_create_request: crate::models::MatchmakerLobbiesCreateRequest, +) -> Result> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/matchmaker/lobbies/create", + 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(&matchmaker_lobbies_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)) + } } /// Finds a lobby based on the given criteria. If a lobby is not found and `prevent_auto_create_lobby` is `false`, a new lobby will be created. When [tokenless authentication](/docs/general/concepts/tokenless-authentication/web) is enabled in your game namespace, this endpoint does not require a token to authenticate. Otherwise, a [development namespace token](/docs/general/concepts/token-types#namespace-development) can be used for mock responses and a [public namespace token](/docs/general/concepts/token-types#namespace-public) can be used for general authentication. -pub async fn matchmaker_lobbies_find(configuration: &configuration::Configuration, matchmaker_lobbies_find_request: crate::models::MatchmakerLobbiesFindRequest, origin: Option<&str>) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/matchmaker/lobbies/find", 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(local_var_param_value) = origin { - local_var_req_builder = local_var_req_builder.header("origin", local_var_param_value.to_string()); - } - 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(&matchmaker_lobbies_find_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)) - } +pub async fn matchmaker_lobbies_find( + configuration: &configuration::Configuration, + matchmaker_lobbies_find_request: crate::models::MatchmakerLobbiesFindRequest, + origin: Option<&str>, +) -> Result> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/matchmaker/lobbies/find", + 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(local_var_param_value) = origin { + local_var_req_builder = + local_var_req_builder.header("origin", local_var_param_value.to_string()); + } + 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(&matchmaker_lobbies_find_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)) + } } /// Get the state of any lobby. This endpoint requires a [lobby token](/docs/general/concepts/token-types#matchmaker-lobby) for authentication, or a [development namespace token](/docs/general/concepts/token-types#namespace-development) for mock responses. When running on Rivet servers, you can access the given lobby token from the [`RIVET_TOKEN`](/docs/matchmaker/concepts/lobby-env) environment variable. -pub async fn matchmaker_lobbies_get_state(configuration: &configuration::Configuration, lobby_id: &str) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/matchmaker/lobbies/{lobby_id}/state", local_var_configuration.base_path, lobby_id=crate::apis::urlencode(lobby_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 { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - - let local_var_req = local_var_req_builder.build()?; - let local_var_resp = local_var_client.execute(local_var_req).await?; - - let local_var_status = local_var_resp.status(); - let local_var_content = local_var_resp.text().await?; - - if !local_var_status.is_client_error() && !local_var_status.is_server_error() { - serde_json::from_str(&local_var_content).map_err(Error::from) - } else { - let local_var_entity: Option = serde_json::from_str(&local_var_content).ok(); - let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity }; - Err(Error::ResponseError(local_var_error)) - } +pub async fn matchmaker_lobbies_get_state( + configuration: &configuration::Configuration, + lobby_id: &str, +) -> Result> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/matchmaker/lobbies/{lobby_id}/state", + local_var_configuration.base_path, + lobby_id = crate::apis::urlencode(lobby_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 { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + serde_json::from_str(&local_var_content).map_err(Error::from) + } else { + let local_var_entity: Option = + serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { + status: local_var_status, + content: local_var_content, + entity: local_var_entity, + }; + Err(Error::ResponseError(local_var_error)) + } } /// Joins a specific lobby. This request will use the direct player count configured for the lobby group. When [tokenless authentication](/docs/general/concepts/tokenless-authentication/web) is enabled in your game namespace, this endpoint does not require a token to authenticate. Otherwise, a [development namespace token](/docs/general/concepts/token-types#namespace-development) can be used for mock responses and a [public namespace token](/docs/general/concepts/token-types#namespace-public) can be used for general authentication. -pub async fn matchmaker_lobbies_join(configuration: &configuration::Configuration, matchmaker_lobbies_join_request: crate::models::MatchmakerLobbiesJoinRequest) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/matchmaker/lobbies/join", 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(&matchmaker_lobbies_join_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)) - } +pub async fn matchmaker_lobbies_join( + configuration: &configuration::Configuration, + matchmaker_lobbies_join_request: crate::models::MatchmakerLobbiesJoinRequest, +) -> Result> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/matchmaker/lobbies/join", + 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(&matchmaker_lobbies_join_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)) + } } /// Lists all open lobbies. When [tokenless authentication](/docs/general/concepts/tokenless-authentication/web) is enabled in your game namespace, this endpoint does not require a token to authenticate. Otherwise, a [development namespace token](/docs/general/concepts/token-types#namespace-development) can be used for mock responses and a [public namespace token](/docs/general/concepts/token-types#namespace-public) can be used for general authentication. -pub async fn matchmaker_lobbies_list(configuration: &configuration::Configuration, include_state: Option) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/matchmaker/lobbies/list", local_var_configuration.base_path); - 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_str) = include_state { - local_var_req_builder = local_var_req_builder.query(&[("include_state", &local_var_str.to_string())]); - } - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - - 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)) - } +pub async fn matchmaker_lobbies_list( + configuration: &configuration::Configuration, + include_state: Option, +) -> Result> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/matchmaker/lobbies/list", + local_var_configuration.base_path + ); + 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_str) = include_state { + local_var_req_builder = + local_var_req_builder.query(&[("include_state", &local_var_str.to_string())]); + } + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + + 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)) + } } /// Marks the current lobby as ready to accept connections. Players will not be able to connect to this lobby until the lobby is flagged as ready. This endpoint requires a [lobby token](/docs/general/concepts/token-types#matchmaker-lobby) for authentication, or a [development namespace token](/docs/general/concepts/token-types#namespace-development) for mock responses. When running on Rivet servers, you can access the given lobby token from the [`RIVET_TOKEN`](/docs/matchmaker/concepts/lobby-env) environment variable. -pub async fn matchmaker_lobbies_ready(configuration: &configuration::Configuration, ) -> Result<(), Error> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/matchmaker/lobbies/ready", 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()); - }; - - 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)) - } +pub async fn matchmaker_lobbies_ready( + configuration: &configuration::Configuration, +) -> Result<(), Error> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/matchmaker/lobbies/ready", + 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()); + }; + + 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)) + } } /// If `is_closed` is `true`, the matchmaker will no longer route players to the lobby. Players can still join using the /join endpoint (this can be disabled by the developer by rejecting all new connections after setting the lobby to closed). Does not shutdown the lobby. This endpoint requires a [lobby token](/docs/general/concepts/token-types#matchmaker-lobby) for authentication, or a [development namespace token](/docs/general/concepts/token-types#namespace-development) for mock responses. When running on Rivet servers, you can access the given lobby token from the [`RIVET_TOKEN`](/docs/matchmaker/concepts/lobby-env) environment variable. -pub async fn matchmaker_lobbies_set_closed(configuration: &configuration::Configuration, matchmaker_lobbies_set_closed_request: crate::models::MatchmakerLobbiesSetClosedRequest) -> Result<(), Error> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/matchmaker/lobbies/closed", local_var_configuration.base_path); - let mut local_var_req_builder = local_var_client.request(reqwest::Method::PUT, 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(&matchmaker_lobbies_set_closed_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)) - } +pub async fn matchmaker_lobbies_set_closed( + configuration: &configuration::Configuration, + matchmaker_lobbies_set_closed_request: crate::models::MatchmakerLobbiesSetClosedRequest, +) -> Result<(), Error> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/matchmaker/lobbies/closed", + local_var_configuration.base_path + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::PUT, 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(&matchmaker_lobbies_set_closed_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)) + } } /// Sets the state JSON of the current lobby. This endpoint requires a [lobby token](/docs/general/concepts/token-types#matchmaker-lobby) for authentication, or a [development namespace token](/docs/general/concepts/token-types#namespace-development) for mock responses. When running on Rivet servers, you can access the given lobby token from the [`RIVET_TOKEN`](/docs/matchmaker/concepts/lobby-env) environment variable. -pub async fn matchmaker_lobbies_set_state(configuration: &configuration::Configuration, body: Option) -> Result<(), Error> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/matchmaker/lobbies/state", local_var_configuration.base_path); - let mut local_var_req_builder = local_var_client.request(reqwest::Method::PUT, 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(&body); - - 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)) - } +pub async fn matchmaker_lobbies_set_state( + configuration: &configuration::Configuration, + body: Option, +) -> Result<(), Error> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/matchmaker/lobbies/state", + local_var_configuration.base_path + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::PUT, 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(&body); + + 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/matchmaker_players_api.rs b/sdks/full/rust/src/apis/matchmaker_players_api.rs index e0cb52729e..7121a0a8f8 100644 --- a/sdks/full/rust/src/apis/matchmaker_players_api.rs +++ b/sdks/full/rust/src/apis/matchmaker_players_api.rs @@ -4,149 +4,186 @@ * 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 super::{configuration, Error}; use crate::apis::ResponseContent; -use super::{Error, configuration}; - /// struct for typed errors of method [`matchmaker_players_connected`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum MatchmakerPlayersConnectedError { - 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), + 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 [`matchmaker_players_disconnected`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum MatchmakerPlayersDisconnectedError { - 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), + 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 [`matchmaker_players_get_statistics`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum MatchmakerPlayersGetStatisticsError { - 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), + 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), } - /// Validates the player token is valid and has not already been consumed then marks the player as connected. # Player Tokens and Reserved Slots Player tokens reserve a spot in the lobby until they expire. This allows for precise matchmaking up to exactly the lobby's player limit, which is important for games with small lobbies and a high influx of players. By calling this endpoint with the player token, the player's spot is marked as connected and will not expire. If this endpoint is never called, the player's token will expire and this spot will be filled by another player. # Anti-Botting Player tokens are only issued by caling `lobbies.join`, calling `lobbies.find`, or from the `GlobalEventMatchmakerLobbyJoin` event. These endpoints have anti-botting measures (i.e. enforcing max player limits, captchas, and detecting bots), so valid player tokens provide some confidence that the player is not a bot. Therefore, it's important to make sure the token is valid by waiting for this endpoint to return OK before allowing the connected socket to do anything else. If this endpoint returns an error, the socket should be disconnected immediately. # How to Transmit the Player Token The client is responsible for acquiring the player token by caling `lobbies.join`, calling `lobbies.find`, or from the `GlobalEventMatchmakerLobbyJoin` event. Beyond that, it's up to the developer how the player token is transmitted to the lobby. If using WebSockets, the player token can be transmitted as a query parameter. Otherwise, the player token will likely be automatically sent by the client once the socket opens. As mentioned above, nothing else should happen until the player token is validated. -pub async fn matchmaker_players_connected(configuration: &configuration::Configuration, matchmaker_players_connected_request: crate::models::MatchmakerPlayersConnectedRequest) -> Result<(), Error> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/matchmaker/players/connected", 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(&matchmaker_players_connected_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)) - } +pub async fn matchmaker_players_connected( + configuration: &configuration::Configuration, + matchmaker_players_connected_request: crate::models::MatchmakerPlayersConnectedRequest, +) -> Result<(), Error> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/matchmaker/players/connected", + 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(&matchmaker_players_connected_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)) + } } /// Marks a player as disconnected. # Ghost Players If players are not marked as disconnected, lobbies will result with \"ghost players\" that the matchmaker thinks exist but are no longer connected to the lobby. -pub async fn matchmaker_players_disconnected(configuration: &configuration::Configuration, matchmaker_players_connected_request: crate::models::MatchmakerPlayersConnectedRequest) -> Result<(), Error> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/matchmaker/players/disconnected", 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(&matchmaker_players_connected_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)) - } +pub async fn matchmaker_players_disconnected( + configuration: &configuration::Configuration, + matchmaker_players_connected_request: crate::models::MatchmakerPlayersConnectedRequest, +) -> Result<(), Error> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/matchmaker/players/disconnected", + 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(&matchmaker_players_connected_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)) + } } /// Gives matchmaker statistics about the players in game. -pub async fn matchmaker_players_get_statistics(configuration: &configuration::Configuration, ) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/matchmaker/players/statistics", local_var_configuration.base_path); - 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 { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - - let local_var_req = local_var_req_builder.build()?; - let local_var_resp = local_var_client.execute(local_var_req).await?; - - let local_var_status = local_var_resp.status(); - let local_var_content = local_var_resp.text().await?; - - if !local_var_status.is_client_error() && !local_var_status.is_server_error() { - serde_json::from_str(&local_var_content).map_err(Error::from) - } else { - let local_var_entity: Option = serde_json::from_str(&local_var_content).ok(); - let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity }; - Err(Error::ResponseError(local_var_error)) - } +pub async fn matchmaker_players_get_statistics( + configuration: &configuration::Configuration, +) -> Result< + crate::models::MatchmakerGetStatisticsResponse, + Error, +> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/matchmaker/players/statistics", + local_var_configuration.base_path + ); + 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 { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + serde_json::from_str(&local_var_content).map_err(Error::from) + } else { + let local_var_entity: Option = + serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { + status: local_var_status, + content: local_var_content, + entity: local_var_entity, + }; + Err(Error::ResponseError(local_var_error)) + } } - diff --git a/sdks/full/rust/src/apis/matchmaker_regions_api.rs b/sdks/full/rust/src/apis/matchmaker_regions_api.rs index f70241924f..b7b1b4172c 100644 --- a/sdks/full/rust/src/apis/matchmaker_regions_api.rs +++ b/sdks/full/rust/src/apis/matchmaker_regions_api.rs @@ -4,59 +4,64 @@ * 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 super::{configuration, Error}; use crate::apis::ResponseContent; -use super::{Error, configuration}; - /// struct for typed errors of method [`matchmaker_regions_list`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum MatchmakerRegionsListError { - 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), + 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), } - /// Returns a list of regions available to this namespace. Regions are sorted by most optimal to least optimal. The player's IP address is used to calculate the regions' optimality. -pub async fn matchmaker_regions_list(configuration: &configuration::Configuration, ) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/matchmaker/regions", local_var_configuration.base_path); - 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 { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - - let local_var_req = local_var_req_builder.build()?; - let local_var_resp = local_var_client.execute(local_var_req).await?; - - let local_var_status = local_var_resp.status(); - let local_var_content = local_var_resp.text().await?; - - if !local_var_status.is_client_error() && !local_var_status.is_server_error() { - serde_json::from_str(&local_var_content).map_err(Error::from) - } else { - let local_var_entity: Option = serde_json::from_str(&local_var_content).ok(); - let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity }; - Err(Error::ResponseError(local_var_error)) - } -} +pub async fn matchmaker_regions_list( + configuration: &configuration::Configuration, +) -> Result> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + let local_var_uri_str = format!("{}/matchmaker/regions", local_var_configuration.base_path); + 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 { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + serde_json::from_str(&local_var_content).map_err(Error::from) + } else { + let local_var_entity: Option = + serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { + status: local_var_status, + content: local_var_content, + entity: local_var_entity, + }; + Err(Error::ResponseError(local_var_error)) + } +} diff --git a/sdks/full/rust/src/apis/mod.rs b/sdks/full/rust/src/apis/mod.rs index ca5b181c44..308accea03 100644 --- a/sdks/full/rust/src/apis/mod.rs +++ b/sdks/full/rust/src/apis/mod.rs @@ -3,91 +3,93 @@ use std::fmt; #[derive(Debug, Clone)] pub struct ResponseContent { - pub status: reqwest::StatusCode, - pub content: String, - pub entity: Option, + pub status: reqwest::StatusCode, + pub content: String, + pub entity: Option, } #[derive(Debug)] pub enum Error { - Reqwest(reqwest::Error), - Serde(serde_json::Error), - Io(std::io::Error), - ResponseError(ResponseContent), + Reqwest(reqwest::Error), + Serde(serde_json::Error), + Io(std::io::Error), + ResponseError(ResponseContent), } -impl fmt::Display for Error { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - let (module, e) = match self { - Error::Reqwest(e) => ("reqwest", e.to_string()), - Error::Serde(e) => ("serde", e.to_string()), - Error::Io(e) => ("IO", e.to_string()), - Error::ResponseError(e) => ("response", format!("status code {}", e.status)), - }; - write!(f, "error in {}: {}", module, e) - } +impl fmt::Display for Error { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let (module, e) = match self { + Error::Reqwest(e) => ("reqwest", e.to_string()), + Error::Serde(e) => ("serde", e.to_string()), + Error::Io(e) => ("IO", e.to_string()), + Error::ResponseError(e) => ("response", format!("status code {}", e.status)), + }; + write!(f, "error in {}: {}", module, e) + } } -impl error::Error for Error { - fn source(&self) -> Option<&(dyn error::Error + 'static)> { - Some(match self { - Error::Reqwest(e) => e, - Error::Serde(e) => e, - Error::Io(e) => e, - Error::ResponseError(_) => return None, - }) - } +impl error::Error for Error { + fn source(&self) -> Option<&(dyn error::Error + 'static)> { + Some(match self { + Error::Reqwest(e) => e, + Error::Serde(e) => e, + Error::Io(e) => e, + Error::ResponseError(_) => return None, + }) + } } -impl From for Error { - fn from(e: reqwest::Error) -> Self { - Error::Reqwest(e) - } +impl From for Error { + fn from(e: reqwest::Error) -> Self { + Error::Reqwest(e) + } } -impl From for Error { - fn from(e: serde_json::Error) -> Self { - Error::Serde(e) - } +impl From for Error { + fn from(e: serde_json::Error) -> Self { + Error::Serde(e) + } } -impl From for Error { - fn from(e: std::io::Error) -> Self { - Error::Io(e) - } +impl From for Error { + fn from(e: std::io::Error) -> Self { + Error::Io(e) + } } pub fn urlencode>(s: T) -> String { - ::url::form_urlencoded::byte_serialize(s.as_ref().as_bytes()).collect() + ::url::form_urlencoded::byte_serialize(s.as_ref().as_bytes()).collect() } pub fn parse_deep_object(prefix: &str, value: &serde_json::Value) -> Vec<(String, String)> { - if let serde_json::Value::Object(object) = value { - let mut params = vec![]; + if let serde_json::Value::Object(object) = value { + let mut params = vec![]; - for (key, value) in object { - match value { - serde_json::Value::Object(_) => params.append(&mut parse_deep_object( - &format!("{}[{}]", prefix, key), - value, - )), - serde_json::Value::Array(array) => { - for (i, value) in array.iter().enumerate() { - params.append(&mut parse_deep_object( - &format!("{}[{}][{}]", prefix, key, i), - value, - )); - } - }, - serde_json::Value::String(s) => params.push((format!("{}[{}]", prefix, key), s.clone())), - _ => params.push((format!("{}[{}]", prefix, key), value.to_string())), - } - } + for (key, value) in object { + match value { + serde_json::Value::Object(_) => params.append(&mut parse_deep_object( + &format!("{}[{}]", prefix, key), + value, + )), + serde_json::Value::Array(array) => { + for (i, value) in array.iter().enumerate() { + params.append(&mut parse_deep_object( + &format!("{}[{}][{}]", prefix, key, i), + value, + )); + } + } + serde_json::Value::String(s) => { + params.push((format!("{}[{}]", prefix, key), s.clone())) + } + _ => params.push((format!("{}[{}]", prefix, key), value.to_string())), + } + } - return params; - } + return params; + } - unimplemented!("Only objects are supported with style=deepObject") + unimplemented!("Only objects are supported with style=deepObject") } pub mod actor_api; @@ -104,8 +106,8 @@ pub mod cloud_games_avatars_api; pub mod cloud_games_builds_api; pub mod cloud_games_cdn_api; pub mod cloud_games_matchmaker_api; -pub mod cloud_games_namespaces_api; pub mod cloud_games_namespaces_analytics_api; +pub mod cloud_games_namespaces_api; pub mod cloud_games_namespaces_logs_api; pub mod cloud_games_tokens_api; pub mod cloud_games_versions_api; @@ -117,8 +119,8 @@ pub mod games_environments_tokens_api; pub mod group_api; pub mod group_invites_api; pub mod group_join_requests_api; -pub mod identity_api; pub mod identity_activities_api; +pub mod identity_api; pub mod identity_events_api; pub mod job_run_api; pub mod matchmaker_lobbies_api; diff --git a/sdks/full/rust/src/apis/portal_games_api.rs b/sdks/full/rust/src/apis/portal_games_api.rs index 731e627d6b..c7d12c164d 100644 --- a/sdks/full/rust/src/apis/portal_games_api.rs +++ b/sdks/full/rust/src/apis/portal_games_api.rs @@ -4,62 +4,74 @@ * 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 super::{configuration, Error}; use crate::apis::ResponseContent; -use super::{Error, configuration}; - /// struct for typed errors of method [`portal_games_get_game_profile`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum PortalGamesGetGameProfileError { - 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), + 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), } - /// Returns a game profile. -pub async fn portal_games_get_game_profile(configuration: &configuration::Configuration, game_name_id: &str, watch_index: Option<&str>) -> Result> { - let local_var_configuration = configuration; +pub async fn portal_games_get_game_profile( + configuration: &configuration::Configuration, + game_name_id: &str, + watch_index: Option<&str>, +) -> Result> { + let local_var_configuration = configuration; - let local_var_client = &local_var_configuration.client; + let local_var_client = &local_var_configuration.client; - let local_var_uri_str = format!("{}/portal/games/{game_name_id}/profile", local_var_configuration.base_path, game_name_id=crate::apis::urlencode(game_name_id)); - let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str()); + let local_var_uri_str = format!( + "{}/portal/games/{game_name_id}/profile", + local_var_configuration.base_path, + game_name_id = crate::apis::urlencode(game_name_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_str) = watch_index { - local_var_req_builder = local_var_req_builder.query(&[("watch_index", &local_var_str.to_string())]); - } - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; + if let Some(ref local_var_str) = watch_index { + local_var_req_builder = + local_var_req_builder.query(&[("watch_index", &local_var_str.to_string())]); + } + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; - let local_var_req = local_var_req_builder.build()?; - let local_var_resp = local_var_client.execute(local_var_req).await?; + 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?; + 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)) - } + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + serde_json::from_str(&local_var_content).map_err(Error::from) + } else { + let local_var_entity: Option = + serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { + status: local_var_status, + content: local_var_content, + entity: local_var_entity, + }; + Err(Error::ResponseError(local_var_error)) + } } - diff --git a/sdks/full/rust/src/apis/provision_datacenters_api.rs b/sdks/full/rust/src/apis/provision_datacenters_api.rs index f65a93e263..7d5f9673ae 100644 --- a/sdks/full/rust/src/apis/provision_datacenters_api.rs +++ b/sdks/full/rust/src/apis/provision_datacenters_api.rs @@ -4,58 +4,69 @@ * 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 super::{configuration, Error}; use crate::apis::ResponseContent; -use super::{Error, configuration}; - /// struct for typed errors of method [`provision_datacenters_get_tls`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum ProvisionDatacentersGetTlsError { - 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), + 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), } +pub async fn provision_datacenters_get_tls( + configuration: &configuration::Configuration, + datacenter_id: &str, +) -> Result> +{ + let local_var_configuration = configuration; -pub async fn provision_datacenters_get_tls(configuration: &configuration::Configuration, datacenter_id: &str) -> Result> { - let local_var_configuration = configuration; + let local_var_client = &local_var_configuration.client; - let local_var_client = &local_var_configuration.client; + let local_var_uri_str = format!( + "{}/datacenters/{datacenter_id}/tls", + local_var_configuration.base_path, + datacenter_id = crate::apis::urlencode(datacenter_id) + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str()); - let local_var_uri_str = format!("{}/datacenters/{datacenter_id}/tls", local_var_configuration.base_path, datacenter_id=crate::apis::urlencode(datacenter_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 { + 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()); + }; - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; - let local_var_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?; - 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)) - } + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + serde_json::from_str(&local_var_content).map_err(Error::from) + } else { + let local_var_entity: Option = + serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { + status: local_var_status, + content: local_var_content, + entity: local_var_entity, + }; + Err(Error::ResponseError(local_var_error)) + } } - diff --git a/sdks/full/rust/src/apis/provision_servers_api.rs b/sdks/full/rust/src/apis/provision_servers_api.rs index c2aab2852d..7ef19287a8 100644 --- a/sdks/full/rust/src/apis/provision_servers_api.rs +++ b/sdks/full/rust/src/apis/provision_servers_api.rs @@ -4,58 +4,68 @@ * 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 super::{configuration, Error}; use crate::apis::ResponseContent; -use super::{Error, configuration}; - /// struct for typed errors of method [`provision_servers_get_info`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum ProvisionServersGetInfoError { - 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), + 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), } +pub async fn provision_servers_get_info( + configuration: &configuration::Configuration, + ip: &str, +) -> Result> { + let local_var_configuration = configuration; -pub async fn provision_servers_get_info(configuration: &configuration::Configuration, ip: &str) -> Result> { - let local_var_configuration = configuration; + let local_var_client = &local_var_configuration.client; - let local_var_client = &local_var_configuration.client; + let local_var_uri_str = format!( + "{}/servers/{ip}", + local_var_configuration.base_path, + ip = crate::apis::urlencode(ip) + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str()); - let local_var_uri_str = format!("{}/servers/{ip}", local_var_configuration.base_path, ip=crate::apis::urlencode(ip)); - 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 { + 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()); + }; - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; - let local_var_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?; - 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)) - } + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + serde_json::from_str(&local_var_content).map_err(Error::from) + } else { + let local_var_entity: Option = + serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { + status: local_var_status, + content: local_var_content, + entity: local_var_entity, + }; + Err(Error::ResponseError(local_var_error)) + } } - diff --git a/sdks/full/rust/src/apis/servers_api.rs b/sdks/full/rust/src/apis/servers_api.rs index 3ae454a3c5..a9703b6b99 100644 --- a/sdks/full/rust/src/apis/servers_api.rs +++ b/sdks/full/rust/src/apis/servers_api.rs @@ -4,204 +4,277 @@ * 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 super::{configuration, Error}; use crate::apis::ResponseContent; -use super::{Error, configuration}; - /// struct for typed errors of method [`servers_create`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum ServersCreateError { - 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), + 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_destroy`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum ServersDestroyError { - 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), + 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_get`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum ServersGetError { - 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), + 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_list`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum ServersListError { - 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), + 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_create(configuration: &configuration::Configuration, game_id: &str, environment_id: &str, servers_create_server_request: crate::models::ServersCreateServerRequest) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/games/{game_id}/environments/{environment_id}/servers", local_var_configuration.base_path, game_id=crate::apis::urlencode(game_id), environment_id=crate::apis::urlencode(environment_id)); - let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); - - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - local_var_req_builder = local_var_req_builder.json(&servers_create_server_request); - - let local_var_req = local_var_req_builder.build()?; - let local_var_resp = local_var_client.execute(local_var_req).await?; - - 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)) - } +pub async fn servers_create( + configuration: &configuration::Configuration, + game_id: &str, + environment_id: &str, + servers_create_server_request: crate::models::ServersCreateServerRequest, +) -> Result> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/games/{game_id}/environments/{environment_id}/servers", + local_var_configuration.base_path, + game_id = crate::apis::urlencode(game_id), + environment_id = crate::apis::urlencode(environment_id) + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + local_var_req_builder = local_var_req_builder.json(&servers_create_server_request); + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + 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_destroy(configuration: &configuration::Configuration, game_id: &str, environment_id: &str, server_id: &str, override_kill_timeout: Option) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/games/{game_id}/environments/{environment_id}/servers/{server_id}", local_var_configuration.base_path, game_id=crate::apis::urlencode(game_id), environment_id=crate::apis::urlencode(environment_id), server_id=crate::apis::urlencode(server_id)); - let mut local_var_req_builder = local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str()); - - if let Some(ref local_var_str) = override_kill_timeout { - local_var_req_builder = local_var_req_builder.query(&[("override_kill_timeout", &local_var_str.to_string())]); - } - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - - 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)) - } +pub async fn servers_destroy( + configuration: &configuration::Configuration, + game_id: &str, + environment_id: &str, + server_id: &str, + override_kill_timeout: Option, +) -> Result> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/games/{game_id}/environments/{environment_id}/servers/{server_id}", + local_var_configuration.base_path, + game_id = crate::apis::urlencode(game_id), + environment_id = crate::apis::urlencode(environment_id), + server_id = crate::apis::urlencode(server_id) + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str()); + + if let Some(ref local_var_str) = override_kill_timeout { + local_var_req_builder = + local_var_req_builder.query(&[("override_kill_timeout", &local_var_str.to_string())]); + } + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + + 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)) + } } /// Gets a dynamic server. -pub async fn servers_get(configuration: &configuration::Configuration, game_id: &str, environment_id: &str, server_id: &str) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/games/{game_id}/environments/{environment_id}/servers/{server_id}", local_var_configuration.base_path, game_id=crate::apis::urlencode(game_id), environment_id=crate::apis::urlencode(environment_id), server_id=crate::apis::urlencode(server_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 { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - - let local_var_req = local_var_req_builder.build()?; - let local_var_resp = local_var_client.execute(local_var_req).await?; - - let local_var_status = local_var_resp.status(); - let local_var_content = local_var_resp.text().await?; - - if !local_var_status.is_client_error() && !local_var_status.is_server_error() { - serde_json::from_str(&local_var_content).map_err(Error::from) - } else { - let local_var_entity: Option = serde_json::from_str(&local_var_content).ok(); - let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity }; - Err(Error::ResponseError(local_var_error)) - } +pub async fn servers_get( + configuration: &configuration::Configuration, + game_id: &str, + environment_id: &str, + server_id: &str, +) -> Result> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/games/{game_id}/environments/{environment_id}/servers/{server_id}", + local_var_configuration.base_path, + game_id = crate::apis::urlencode(game_id), + environment_id = crate::apis::urlencode(environment_id), + server_id = crate::apis::urlencode(server_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 { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + serde_json::from_str(&local_var_content).map_err(Error::from) + } else { + let local_var_entity: Option = + serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { + status: local_var_status, + content: local_var_content, + entity: local_var_entity, + }; + Err(Error::ResponseError(local_var_error)) + } } /// Lists all servers associated with the token used. Can be filtered by tags in the query string. -pub async fn servers_list(configuration: &configuration::Configuration, game_id: &str, environment_id: &str, tags_json: Option<&str>, include_destroyed: Option, cursor: Option<&str>) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/games/{game_id}/environments/{environment_id}/servers", local_var_configuration.base_path, game_id=crate::apis::urlencode(game_id), environment_id=crate::apis::urlencode(environment_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_str) = tags_json { - local_var_req_builder = local_var_req_builder.query(&[("tags_json", &local_var_str.to_string())]); - } - if let Some(ref local_var_str) = include_destroyed { - local_var_req_builder = local_var_req_builder.query(&[("include_destroyed", &local_var_str.to_string())]); - } - if let Some(ref local_var_str) = cursor { - local_var_req_builder = local_var_req_builder.query(&[("cursor", &local_var_str.to_string())]); - } - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - - 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)) - } +pub async fn servers_list( + configuration: &configuration::Configuration, + game_id: &str, + environment_id: &str, + tags_json: Option<&str>, + include_destroyed: Option, + cursor: Option<&str>, +) -> Result> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/games/{game_id}/environments/{environment_id}/servers", + local_var_configuration.base_path, + game_id = crate::apis::urlencode(game_id), + environment_id = crate::apis::urlencode(environment_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_str) = tags_json { + local_var_req_builder = + local_var_req_builder.query(&[("tags_json", &local_var_str.to_string())]); + } + if let Some(ref local_var_str) = include_destroyed { + local_var_req_builder = + local_var_req_builder.query(&[("include_destroyed", &local_var_str.to_string())]); + } + if let Some(ref local_var_str) = cursor { + local_var_req_builder = + local_var_req_builder.query(&[("cursor", &local_var_str.to_string())]); + } + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + serde_json::from_str(&local_var_content).map_err(Error::from) + } else { + let local_var_entity: Option = + serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { + status: local_var_status, + content: local_var_content, + entity: local_var_entity, + }; + Err(Error::ResponseError(local_var_error)) + } } - diff --git a/sdks/full/rust/src/apis/servers_builds_api.rs b/sdks/full/rust/src/apis/servers_builds_api.rs index 1dcd704434..97ec771029 100644 --- a/sdks/full/rust/src/apis/servers_builds_api.rs +++ b/sdks/full/rust/src/apis/servers_builds_api.rs @@ -4,242 +4,330 @@ * 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 super::{configuration, Error}; use crate::apis::ResponseContent; -use super::{Error, configuration}; - /// struct for typed errors of method [`servers_builds_complete`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum ServersBuildsCompleteError { - 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), + 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_builds_get`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum ServersBuildsGetError { - 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), + 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_builds_list`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum ServersBuildsListError { - 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), + 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_builds_patch_tags`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum ServersBuildsPatchTagsError { - 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), + 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_builds_prepare`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum ServersBuildsPrepareError { - 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), + 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), } - /// Marks an upload as complete. -pub async fn servers_builds_complete(configuration: &configuration::Configuration, game_id: &str, environment_id: &str, build_id: &str) -> Result<(), Error> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/games/{game_id}/environments/{environment_id}/builds/{build_id}/complete", local_var_configuration.base_path, game_id=crate::apis::urlencode(game_id), environment_id=crate::apis::urlencode(environment_id), build_id=crate::apis::urlencode(build_id)); - let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); - - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - - let local_var_req = local_var_req_builder.build()?; - let local_var_resp = local_var_client.execute(local_var_req).await?; - - let local_var_status = local_var_resp.status(); - let local_var_content = local_var_resp.text().await?; - - if !local_var_status.is_client_error() && !local_var_status.is_server_error() { - 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)) - } +pub async fn servers_builds_complete( + configuration: &configuration::Configuration, + game_id: &str, + environment_id: &str, + build_id: &str, +) -> Result<(), Error> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/games/{game_id}/environments/{environment_id}/builds/{build_id}/complete", + local_var_configuration.base_path, + game_id = crate::apis::urlencode(game_id), + environment_id = crate::apis::urlencode(environment_id), + build_id = crate::apis::urlencode(build_id) + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + 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)) + } } /// Lists all builds of the game associated with the token used. Can be filtered by tags in the query string. -pub async fn servers_builds_get(configuration: &configuration::Configuration, game_id: &str, environment_id: &str, build_id: &str, tags_json: Option<&str>) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/games/{game_id}/environments/{environment_id}/builds/{build_id}", local_var_configuration.base_path, game_id=crate::apis::urlencode(game_id), environment_id=crate::apis::urlencode(environment_id), build_id=crate::apis::urlencode(build_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_str) = tags_json { - local_var_req_builder = local_var_req_builder.query(&[("tags_json", &local_var_str.to_string())]); - } - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - - 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)) - } +pub async fn servers_builds_get( + configuration: &configuration::Configuration, + game_id: &str, + environment_id: &str, + build_id: &str, + tags_json: Option<&str>, +) -> Result> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/games/{game_id}/environments/{environment_id}/builds/{build_id}", + local_var_configuration.base_path, + game_id = crate::apis::urlencode(game_id), + environment_id = crate::apis::urlencode(environment_id), + build_id = crate::apis::urlencode(build_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_str) = tags_json { + local_var_req_builder = + local_var_req_builder.query(&[("tags_json", &local_var_str.to_string())]); + } + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + + 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)) + } } /// Lists all builds of the game associated with the token used. Can be filtered by tags in the query string. -pub async fn servers_builds_list(configuration: &configuration::Configuration, game_id: &str, environment_id: &str, tags_json: Option<&str>) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/games/{game_id}/environments/{environment_id}/builds", local_var_configuration.base_path, game_id=crate::apis::urlencode(game_id), environment_id=crate::apis::urlencode(environment_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_str) = tags_json { - local_var_req_builder = local_var_req_builder.query(&[("tags_json", &local_var_str.to_string())]); - } - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - - 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)) - } +pub async fn servers_builds_list( + configuration: &configuration::Configuration, + game_id: &str, + environment_id: &str, + tags_json: Option<&str>, +) -> Result> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/games/{game_id}/environments/{environment_id}/builds", + local_var_configuration.base_path, + game_id = crate::apis::urlencode(game_id), + environment_id = crate::apis::urlencode(environment_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_str) = tags_json { + local_var_req_builder = + local_var_req_builder.query(&[("tags_json", &local_var_str.to_string())]); + } + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + + 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)) + } } -pub async fn servers_builds_patch_tags(configuration: &configuration::Configuration, game_id: &str, environment_id: &str, build_id: &str, servers_patch_build_tags_request: crate::models::ServersPatchBuildTagsRequest) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/games/{game_id}/environments/{environment_id}/builds/{build_id}/tags", local_var_configuration.base_path, game_id=crate::apis::urlencode(game_id), environment_id=crate::apis::urlencode(environment_id), build_id=crate::apis::urlencode(build_id)); - let mut local_var_req_builder = local_var_client.request(reqwest::Method::PATCH, 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_patch_build_tags_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)) - } +pub async fn servers_builds_patch_tags( + configuration: &configuration::Configuration, + game_id: &str, + environment_id: &str, + build_id: &str, + servers_patch_build_tags_request: crate::models::ServersPatchBuildTagsRequest, +) -> Result> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/games/{game_id}/environments/{environment_id}/builds/{build_id}/tags", + local_var_configuration.base_path, + game_id = crate::apis::urlencode(game_id), + environment_id = crate::apis::urlencode(environment_id), + build_id = crate::apis::urlencode(build_id) + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::PATCH, 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_patch_build_tags_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)) + } } /// Creates a new game build for the given game. -pub async fn servers_builds_prepare(configuration: &configuration::Configuration, game_id: &str, environment_id: &str, servers_create_build_request: crate::models::ServersCreateBuildRequest) -> Result> { - let local_var_configuration = configuration; - - let local_var_client = &local_var_configuration.client; - - let local_var_uri_str = format!("{}/games/{game_id}/environments/{environment_id}/builds/prepare", local_var_configuration.base_path, game_id=crate::apis::urlencode(game_id), environment_id=crate::apis::urlencode(environment_id)); - let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); - - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; - local_var_req_builder = local_var_req_builder.json(&servers_create_build_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)) - } +pub async fn servers_builds_prepare( + configuration: &configuration::Configuration, + game_id: &str, + environment_id: &str, + servers_create_build_request: crate::models::ServersCreateBuildRequest, +) -> Result> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/games/{game_id}/environments/{environment_id}/builds/prepare", + local_var_configuration.base_path, + game_id = crate::apis::urlencode(game_id), + environment_id = crate::apis::urlencode(environment_id) + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + local_var_req_builder = local_var_req_builder.json(&servers_create_build_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)) + } } - diff --git a/sdks/full/rust/src/apis/servers_datacenters_api.rs b/sdks/full/rust/src/apis/servers_datacenters_api.rs index 5bb388081f..11e8490029 100644 --- a/sdks/full/rust/src/apis/servers_datacenters_api.rs +++ b/sdks/full/rust/src/apis/servers_datacenters_api.rs @@ -4,58 +4,70 @@ * 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 super::{configuration, Error}; use crate::apis::ResponseContent; -use super::{Error, configuration}; - /// struct for typed errors of method [`servers_datacenters_list`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum ServersDatacentersListError { - 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), + 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), } +pub async fn servers_datacenters_list( + configuration: &configuration::Configuration, + game_id: &str, + environment_id: &str, +) -> Result> { + let local_var_configuration = configuration; -pub async fn servers_datacenters_list(configuration: &configuration::Configuration, game_id: &str, environment_id: &str) -> Result> { - let local_var_configuration = configuration; + let local_var_client = &local_var_configuration.client; - let local_var_client = &local_var_configuration.client; + let local_var_uri_str = format!( + "{}/games/{game_id}/environments/{environment_id}/datacenters", + local_var_configuration.base_path, + game_id = crate::apis::urlencode(game_id), + environment_id = crate::apis::urlencode(environment_id) + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str()); - let local_var_uri_str = format!("{}/games/{game_id}/environments/{environment_id}/datacenters", local_var_configuration.base_path, game_id=crate::apis::urlencode(game_id), environment_id=crate::apis::urlencode(environment_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 { + 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()); + }; - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; - let local_var_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?; - 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)) - } + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + serde_json::from_str(&local_var_content).map_err(Error::from) + } else { + let local_var_entity: Option = + serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { + status: local_var_status, + content: local_var_content, + entity: local_var_entity, + }; + Err(Error::ResponseError(local_var_error)) + } } - diff --git a/sdks/full/rust/src/apis/servers_logs_api.rs b/sdks/full/rust/src/apis/servers_logs_api.rs index d0233ea3a7..5d1eb5f386 100644 --- a/sdks/full/rust/src/apis/servers_logs_api.rs +++ b/sdks/full/rust/src/apis/servers_logs_api.rs @@ -4,63 +4,80 @@ * 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 super::{configuration, Error}; use crate::apis::ResponseContent; -use super::{Error, configuration}; - /// struct for typed errors of method [`servers_logs_get`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum ServersLogsGetError { - 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), + 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), } - /// Returns the logs for a given server. -pub async fn servers_logs_get(configuration: &configuration::Configuration, game_id: &str, environment_id: &str, server_id: &str, stream: crate::models::ServersLogStream, watch_index: Option<&str>) -> Result> { - let local_var_configuration = configuration; +pub async fn servers_logs_get( + configuration: &configuration::Configuration, + game_id: &str, + environment_id: &str, + server_id: &str, + stream: crate::models::ServersLogStream, + watch_index: Option<&str>, +) -> Result> { + let local_var_configuration = configuration; - let local_var_client = &local_var_configuration.client; + let local_var_client = &local_var_configuration.client; - let local_var_uri_str = format!("{}/games/{game_id}/environments/{environment_id}/servers/{server_id}/logs", local_var_configuration.base_path, game_id=crate::apis::urlencode(game_id), environment_id=crate::apis::urlencode(environment_id), server_id=crate::apis::urlencode(server_id)); - let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str()); + let local_var_uri_str = format!( + "{}/games/{game_id}/environments/{environment_id}/servers/{server_id}/logs", + local_var_configuration.base_path, + game_id = crate::apis::urlencode(game_id), + environment_id = crate::apis::urlencode(environment_id), + server_id = crate::apis::urlencode(server_id) + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str()); - local_var_req_builder = local_var_req_builder.query(&[("stream", &stream.to_string())]); - if let Some(ref local_var_str) = watch_index { - local_var_req_builder = local_var_req_builder.query(&[("watch_index", &local_var_str.to_string())]); - } - if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); - } - if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { - local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); - }; + local_var_req_builder = local_var_req_builder.query(&[("stream", &stream.to_string())]); + if let Some(ref local_var_str) = watch_index { + local_var_req_builder = + local_var_req_builder.query(&[("watch_index", &local_var_str.to_string())]); + } + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; - let local_var_req = local_var_req_builder.build()?; - let local_var_resp = local_var_client.execute(local_var_req).await?; + 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?; + 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)) - } + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + serde_json::from_str(&local_var_content).map_err(Error::from) + } else { + let local_var_entity: Option = + serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { + status: local_var_status, + content: local_var_content, + entity: local_var_entity, + }; + Err(Error::ResponseError(local_var_error)) + } } - diff --git a/sdks/full/rust/src/lib.rs b/sdks/full/rust/src/lib.rs index c1dd666f79..fc22e4e4b9 100644 --- a/sdks/full/rust/src/lib.rs +++ b/sdks/full/rust/src/lib.rs @@ -1,10 +1,10 @@ #[macro_use] extern crate serde_derive; +extern crate reqwest; extern crate serde; extern crate serde_json; extern crate url; -extern crate reqwest; pub mod apis; pub mod models; diff --git a/sdks/full/rust/src/models/actor_actor.rs b/sdks/full/rust/src/models/actor_actor.rs index 15bbcbdf6b..1a2833dd58 100644 --- a/sdks/full/rust/src/models/actor_actor.rs +++ b/sdks/full/rust/src/models/actor_actor.rs @@ -4,52 +4,56 @@ * 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 ActorActor { - #[serde(rename = "created_at")] - pub created_at: i64, - #[serde(rename = "destroyed_at", skip_serializing_if = "Option::is_none")] - pub destroyed_at: Option, - #[serde(rename = "id")] - pub id: uuid::Uuid, - #[serde(rename = "lifecycle")] - pub lifecycle: Box, - #[serde(rename = "network")] - pub network: Box, - #[serde(rename = "region")] - pub region: String, - #[serde(rename = "resources")] - pub resources: Box, - #[serde(rename = "runtime")] - pub runtime: Box, - #[serde(rename = "started_at", skip_serializing_if = "Option::is_none")] - pub started_at: Option, - #[serde(rename = "tags", deserialize_with = "Option::deserialize")] - pub tags: Option, + #[serde(rename = "created_at")] + pub created_at: i64, + #[serde(rename = "destroyed_at", skip_serializing_if = "Option::is_none")] + pub destroyed_at: Option, + #[serde(rename = "id")] + pub id: uuid::Uuid, + #[serde(rename = "lifecycle")] + pub lifecycle: Box, + #[serde(rename = "network")] + pub network: Box, + #[serde(rename = "region")] + pub region: String, + #[serde(rename = "resources")] + pub resources: Box, + #[serde(rename = "runtime")] + pub runtime: Box, + #[serde(rename = "started_at", skip_serializing_if = "Option::is_none")] + pub started_at: Option, + #[serde(rename = "tags", deserialize_with = "Option::deserialize")] + pub tags: Option, } impl ActorActor { - pub fn new(created_at: i64, id: uuid::Uuid, lifecycle: crate::models::ActorLifecycle, network: crate::models::ActorNetwork, region: String, resources: crate::models::ActorResources, runtime: crate::models::ActorRuntime, tags: Option) -> ActorActor { - ActorActor { - created_at, - destroyed_at: None, - id, - lifecycle: Box::new(lifecycle), - network: Box::new(network), - region, - resources: Box::new(resources), - runtime: Box::new(runtime), - started_at: None, - tags, - } - } + pub fn new( + created_at: i64, + id: uuid::Uuid, + lifecycle: crate::models::ActorLifecycle, + network: crate::models::ActorNetwork, + region: String, + resources: crate::models::ActorResources, + runtime: crate::models::ActorRuntime, + tags: Option, + ) -> ActorActor { + ActorActor { + created_at, + destroyed_at: None, + id, + lifecycle: Box::new(lifecycle), + network: Box::new(network), + region, + resources: Box::new(resources), + runtime: Box::new(runtime), + started_at: None, + tags, + } + } } - - diff --git a/sdks/full/rust/src/models/actor_build.rs b/sdks/full/rust/src/models/actor_build.rs index 15122033fb..22d4e34bdc 100644 --- a/sdks/full/rust/src/models/actor_build.rs +++ b/sdks/full/rust/src/models/actor_build.rs @@ -4,40 +4,41 @@ * 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 ActorBuild { - /// Unsigned 64 bit integer. - #[serde(rename = "content_length")] - pub content_length: i64, - /// RFC3339 timestamp - #[serde(rename = "created_at")] - pub created_at: String, - #[serde(rename = "id")] - pub id: uuid::Uuid, - #[serde(rename = "name")] - pub name: String, - /// Tags of this build - #[serde(rename = "tags")] - pub tags: ::std::collections::HashMap, + /// Unsigned 64 bit integer. + #[serde(rename = "content_length")] + pub content_length: i64, + /// RFC3339 timestamp + #[serde(rename = "created_at")] + pub created_at: String, + #[serde(rename = "id")] + pub id: uuid::Uuid, + #[serde(rename = "name")] + pub name: String, + /// Tags of this build + #[serde(rename = "tags")] + pub tags: ::std::collections::HashMap, } impl ActorBuild { - pub fn new(content_length: i64, created_at: String, id: uuid::Uuid, name: String, tags: ::std::collections::HashMap) -> ActorBuild { - ActorBuild { - content_length, - created_at, - id, - name, - tags, - } - } + pub fn new( + content_length: i64, + created_at: String, + id: uuid::Uuid, + name: String, + tags: ::std::collections::HashMap, + ) -> ActorBuild { + ActorBuild { + content_length, + created_at, + id, + name, + tags, + } + } } - - diff --git a/sdks/full/rust/src/models/actor_build_compression.rs b/sdks/full/rust/src/models/actor_build_compression.rs index 9554afe9c0..fa57788e02 100644 --- a/sdks/full/rust/src/models/actor_build_compression.rs +++ b/sdks/full/rust/src/models/actor_build_compression.rs @@ -4,36 +4,30 @@ * 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 ActorBuildCompression { - #[serde(rename = "none")] - None, - #[serde(rename = "lz4")] - Lz4, - + #[serde(rename = "none")] + None, + #[serde(rename = "lz4")] + Lz4, } impl ToString for ActorBuildCompression { - fn to_string(&self) -> String { - match self { - Self::None => String::from("none"), - Self::Lz4 => String::from("lz4"), - } - } + fn to_string(&self) -> String { + match self { + Self::None => String::from("none"), + Self::Lz4 => String::from("lz4"), + } + } } impl Default for ActorBuildCompression { - fn default() -> ActorBuildCompression { - Self::None - } + fn default() -> ActorBuildCompression { + Self::None + } } - - - - diff --git a/sdks/full/rust/src/models/actor_build_kind.rs b/sdks/full/rust/src/models/actor_build_kind.rs index 9e9fd07ff3..6b26fe8fd7 100644 --- a/sdks/full/rust/src/models/actor_build_kind.rs +++ b/sdks/full/rust/src/models/actor_build_kind.rs @@ -4,39 +4,33 @@ * 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 ActorBuildKind { - #[serde(rename = "docker_image")] - DockerImage, - #[serde(rename = "oci_bundle")] - OciBundle, - #[serde(rename = "javascript")] - Javascript, - + #[serde(rename = "docker_image")] + DockerImage, + #[serde(rename = "oci_bundle")] + OciBundle, + #[serde(rename = "javascript")] + Javascript, } impl ToString for ActorBuildKind { - fn to_string(&self) -> String { - match self { - Self::DockerImage => String::from("docker_image"), - Self::OciBundle => String::from("oci_bundle"), - Self::Javascript => String::from("javascript"), - } - } + fn to_string(&self) -> String { + match self { + Self::DockerImage => String::from("docker_image"), + Self::OciBundle => String::from("oci_bundle"), + Self::Javascript => String::from("javascript"), + } + } } impl Default for ActorBuildKind { - fn default() -> ActorBuildKind { - Self::DockerImage - } + fn default() -> ActorBuildKind { + Self::DockerImage + } } - - - - diff --git a/sdks/full/rust/src/models/actor_create_actor_network_request.rs b/sdks/full/rust/src/models/actor_create_actor_network_request.rs index 41c09e11af..81cd677d80 100644 --- a/sdks/full/rust/src/models/actor_create_actor_network_request.rs +++ b/sdks/full/rust/src/models/actor_create_actor_network_request.rs @@ -4,28 +4,22 @@ * 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 ActorCreateActorNetworkRequest { - #[serde(rename = "mode", skip_serializing_if = "Option::is_none")] - pub mode: Option, - #[serde(rename = "ports")] - pub ports: ::std::collections::HashMap, + #[serde(rename = "mode", skip_serializing_if = "Option::is_none")] + pub mode: Option, + #[serde(rename = "ports")] + pub ports: ::std::collections::HashMap, } impl ActorCreateActorNetworkRequest { - pub fn new(ports: ::std::collections::HashMap) -> ActorCreateActorNetworkRequest { - ActorCreateActorNetworkRequest { - mode: None, - ports, - } - } + pub fn new( + ports: ::std::collections::HashMap, + ) -> ActorCreateActorNetworkRequest { + ActorCreateActorNetworkRequest { mode: None, ports } + } } - - diff --git a/sdks/full/rust/src/models/actor_create_actor_port_request.rs b/sdks/full/rust/src/models/actor_create_actor_port_request.rs index 74497965ba..37b0d352a0 100644 --- a/sdks/full/rust/src/models/actor_create_actor_port_request.rs +++ b/sdks/full/rust/src/models/actor_create_actor_port_request.rs @@ -4,31 +4,26 @@ * 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 ActorCreateActorPortRequest { - #[serde(rename = "internal_port", skip_serializing_if = "Option::is_none")] - pub internal_port: Option, - #[serde(rename = "protocol")] - pub protocol: crate::models::ActorPortProtocol, - #[serde(rename = "routing", skip_serializing_if = "Option::is_none")] - pub routing: Option>, + #[serde(rename = "internal_port", skip_serializing_if = "Option::is_none")] + pub internal_port: Option, + #[serde(rename = "protocol")] + pub protocol: crate::models::ActorPortProtocol, + #[serde(rename = "routing", skip_serializing_if = "Option::is_none")] + pub routing: Option>, } impl ActorCreateActorPortRequest { - pub fn new(protocol: crate::models::ActorPortProtocol) -> ActorCreateActorPortRequest { - ActorCreateActorPortRequest { - internal_port: None, - protocol, - routing: None, - } - } + pub fn new(protocol: crate::models::ActorPortProtocol) -> ActorCreateActorPortRequest { + ActorCreateActorPortRequest { + internal_port: None, + protocol, + routing: None, + } + } } - - diff --git a/sdks/full/rust/src/models/actor_create_actor_request.rs b/sdks/full/rust/src/models/actor_create_actor_request.rs index 3dd801b337..544bcb9055 100644 --- a/sdks/full/rust/src/models/actor_create_actor_request.rs +++ b/sdks/full/rust/src/models/actor_create_actor_request.rs @@ -4,40 +4,41 @@ * 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 ActorCreateActorRequest { - #[serde(rename = "lifecycle", skip_serializing_if = "Option::is_none")] - pub lifecycle: Option>, - #[serde(rename = "network")] - pub network: Box, - #[serde(rename = "region")] - pub region: String, - #[serde(rename = "resources")] - pub resources: Box, - #[serde(rename = "runtime")] - pub runtime: Box, - #[serde(rename = "tags", deserialize_with = "Option::deserialize")] - pub tags: Option, + #[serde(rename = "lifecycle", skip_serializing_if = "Option::is_none")] + pub lifecycle: Option>, + #[serde(rename = "network")] + pub network: Box, + #[serde(rename = "region")] + pub region: String, + #[serde(rename = "resources")] + pub resources: Box, + #[serde(rename = "runtime")] + pub runtime: Box, + #[serde(rename = "tags", deserialize_with = "Option::deserialize")] + pub tags: Option, } impl ActorCreateActorRequest { - pub fn new(network: crate::models::ActorCreateActorNetworkRequest, region: String, resources: crate::models::ActorResources, runtime: crate::models::ActorCreateActorRuntimeRequest, tags: Option) -> ActorCreateActorRequest { - ActorCreateActorRequest { - lifecycle: None, - network: Box::new(network), - region, - resources: Box::new(resources), - runtime: Box::new(runtime), - tags, - } - } + pub fn new( + network: crate::models::ActorCreateActorNetworkRequest, + region: String, + resources: crate::models::ActorResources, + runtime: crate::models::ActorCreateActorRuntimeRequest, + tags: Option, + ) -> ActorCreateActorRequest { + ActorCreateActorRequest { + lifecycle: None, + network: Box::new(network), + region, + resources: Box::new(resources), + runtime: Box::new(runtime), + tags, + } + } } - - diff --git a/sdks/full/rust/src/models/actor_create_actor_response.rs b/sdks/full/rust/src/models/actor_create_actor_response.rs index bed37f45b7..3a00d20196 100644 --- a/sdks/full/rust/src/models/actor_create_actor_response.rs +++ b/sdks/full/rust/src/models/actor_create_actor_response.rs @@ -4,25 +4,20 @@ * 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 ActorCreateActorResponse { - #[serde(rename = "actor")] - pub actor: Box, + #[serde(rename = "actor")] + pub actor: Box, } impl ActorCreateActorResponse { - pub fn new(actor: crate::models::ActorActor) -> ActorCreateActorResponse { - ActorCreateActorResponse { - actor: Box::new(actor), - } - } + pub fn new(actor: crate::models::ActorActor) -> ActorCreateActorResponse { + ActorCreateActorResponse { + actor: Box::new(actor), + } + } } - - diff --git a/sdks/full/rust/src/models/actor_create_actor_runtime_request.rs b/sdks/full/rust/src/models/actor_create_actor_runtime_request.rs index 502cbdc320..3a22ee1402 100644 --- a/sdks/full/rust/src/models/actor_create_actor_runtime_request.rs +++ b/sdks/full/rust/src/models/actor_create_actor_runtime_request.rs @@ -4,31 +4,26 @@ * 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 ActorCreateActorRuntimeRequest { - #[serde(rename = "arguments", skip_serializing_if = "Option::is_none")] - pub arguments: Option>, - #[serde(rename = "build")] - pub build: uuid::Uuid, - #[serde(rename = "environment", skip_serializing_if = "Option::is_none")] - pub environment: Option<::std::collections::HashMap>, + #[serde(rename = "arguments", skip_serializing_if = "Option::is_none")] + pub arguments: Option>, + #[serde(rename = "build")] + pub build: uuid::Uuid, + #[serde(rename = "environment", skip_serializing_if = "Option::is_none")] + pub environment: Option<::std::collections::HashMap>, } impl ActorCreateActorRuntimeRequest { - pub fn new(build: uuid::Uuid) -> ActorCreateActorRuntimeRequest { - ActorCreateActorRuntimeRequest { - arguments: None, - build, - environment: None, - } - } + pub fn new(build: uuid::Uuid) -> ActorCreateActorRuntimeRequest { + ActorCreateActorRuntimeRequest { + arguments: None, + build, + environment: None, + } + } } - - diff --git a/sdks/full/rust/src/models/actor_game_guard_routing.rs b/sdks/full/rust/src/models/actor_game_guard_routing.rs index b1a29406e2..f997f43aae 100644 --- a/sdks/full/rust/src/models/actor_game_guard_routing.rs +++ b/sdks/full/rust/src/models/actor_game_guard_routing.rs @@ -4,25 +4,20 @@ * 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 ActorGameGuardRouting { - #[serde(rename = "authorization", skip_serializing_if = "Option::is_none")] - pub authorization: Option>, + #[serde(rename = "authorization", skip_serializing_if = "Option::is_none")] + pub authorization: Option>, } impl ActorGameGuardRouting { - pub fn new() -> ActorGameGuardRouting { - ActorGameGuardRouting { - authorization: None, - } - } + pub fn new() -> ActorGameGuardRouting { + ActorGameGuardRouting { + authorization: None, + } + } } - - diff --git a/sdks/full/rust/src/models/actor_get_actor_logs_response.rs b/sdks/full/rust/src/models/actor_get_actor_logs_response.rs index 7475d6b35b..29050dd2be 100644 --- a/sdks/full/rust/src/models/actor_get_actor_logs_response.rs +++ b/sdks/full/rust/src/models/actor_get_actor_logs_response.rs @@ -4,33 +4,32 @@ * 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 ActorGetActorLogsResponse { - /// Sorted old to new. - #[serde(rename = "lines")] - pub lines: Vec, - /// Sorted old to new. - #[serde(rename = "timestamps")] - pub timestamps: Vec, - #[serde(rename = "watch")] - pub watch: Box, + /// Sorted old to new. + #[serde(rename = "lines")] + pub lines: Vec, + /// Sorted old to new. + #[serde(rename = "timestamps")] + pub timestamps: Vec, + #[serde(rename = "watch")] + pub watch: Box, } impl ActorGetActorLogsResponse { - pub fn new(lines: Vec, timestamps: Vec, watch: crate::models::WatchResponse) -> ActorGetActorLogsResponse { - ActorGetActorLogsResponse { - lines, - timestamps, - watch: Box::new(watch), - } - } + pub fn new( + lines: Vec, + timestamps: Vec, + watch: crate::models::WatchResponse, + ) -> ActorGetActorLogsResponse { + ActorGetActorLogsResponse { + lines, + timestamps, + watch: Box::new(watch), + } + } } - - diff --git a/sdks/full/rust/src/models/actor_get_actor_response.rs b/sdks/full/rust/src/models/actor_get_actor_response.rs index 39f675add9..3ed148b70a 100644 --- a/sdks/full/rust/src/models/actor_get_actor_response.rs +++ b/sdks/full/rust/src/models/actor_get_actor_response.rs @@ -4,25 +4,20 @@ * 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 ActorGetActorResponse { - #[serde(rename = "actor")] - pub actor: Box, + #[serde(rename = "actor")] + pub actor: Box, } impl ActorGetActorResponse { - pub fn new(actor: crate::models::ActorActor) -> ActorGetActorResponse { - ActorGetActorResponse { - actor: Box::new(actor), - } - } + pub fn new(actor: crate::models::ActorActor) -> ActorGetActorResponse { + ActorGetActorResponse { + actor: Box::new(actor), + } + } } - - diff --git a/sdks/full/rust/src/models/actor_get_build_response.rs b/sdks/full/rust/src/models/actor_get_build_response.rs index 6b3176958d..05f748e69c 100644 --- a/sdks/full/rust/src/models/actor_get_build_response.rs +++ b/sdks/full/rust/src/models/actor_get_build_response.rs @@ -4,25 +4,20 @@ * 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 ActorGetBuildResponse { - #[serde(rename = "build")] - pub build: Box, + #[serde(rename = "build")] + pub build: Box, } impl ActorGetBuildResponse { - pub fn new(build: crate::models::ActorBuild) -> ActorGetBuildResponse { - ActorGetBuildResponse { - build: Box::new(build), - } - } + pub fn new(build: crate::models::ActorBuild) -> ActorGetBuildResponse { + ActorGetBuildResponse { + build: Box::new(build), + } + } } - - diff --git a/sdks/full/rust/src/models/actor_lifecycle.rs b/sdks/full/rust/src/models/actor_lifecycle.rs index bb91f243a0..42e1da1398 100644 --- a/sdks/full/rust/src/models/actor_lifecycle.rs +++ b/sdks/full/rust/src/models/actor_lifecycle.rs @@ -4,26 +4,19 @@ * 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 ActorLifecycle { - /// The duration to wait for in milliseconds before killing the actor. This should be set to a safe default, and can be overridden during a DELETE request if needed. - #[serde(rename = "kill_timeout", skip_serializing_if = "Option::is_none")] - pub kill_timeout: Option, + /// The duration to wait for in milliseconds before killing the actor. This should be set to a safe default, and can be overridden during a DELETE request if needed. + #[serde(rename = "kill_timeout", skip_serializing_if = "Option::is_none")] + pub kill_timeout: Option, } impl ActorLifecycle { - pub fn new() -> ActorLifecycle { - ActorLifecycle { - kill_timeout: None, - } - } + pub fn new() -> ActorLifecycle { + ActorLifecycle { kill_timeout: None } + } } - - diff --git a/sdks/full/rust/src/models/actor_list_actors_response.rs b/sdks/full/rust/src/models/actor_list_actors_response.rs index 36c315efc1..b3b58db82b 100644 --- a/sdks/full/rust/src/models/actor_list_actors_response.rs +++ b/sdks/full/rust/src/models/actor_list_actors_response.rs @@ -4,26 +4,19 @@ * 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 ActorListActorsResponse { - /// A list of actors for the project associated with the token. - #[serde(rename = "actors")] - pub actors: Vec, + /// A list of actors for the project associated with the token. + #[serde(rename = "actors")] + pub actors: Vec, } impl ActorListActorsResponse { - pub fn new(actors: Vec) -> ActorListActorsResponse { - ActorListActorsResponse { - actors, - } - } + pub fn new(actors: Vec) -> ActorListActorsResponse { + ActorListActorsResponse { actors } + } } - - diff --git a/sdks/full/rust/src/models/actor_list_builds_response.rs b/sdks/full/rust/src/models/actor_list_builds_response.rs index d7aa8fc073..33d4f7f426 100644 --- a/sdks/full/rust/src/models/actor_list_builds_response.rs +++ b/sdks/full/rust/src/models/actor_list_builds_response.rs @@ -4,26 +4,19 @@ * 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 ActorListBuildsResponse { - /// A list of builds for the project associated with the token. - #[serde(rename = "builds")] - pub builds: Vec, + /// A list of builds for the project associated with the token. + #[serde(rename = "builds")] + pub builds: Vec, } impl ActorListBuildsResponse { - pub fn new(builds: Vec) -> ActorListBuildsResponse { - ActorListBuildsResponse { - builds, - } - } + pub fn new(builds: Vec) -> ActorListBuildsResponse { + ActorListBuildsResponse { builds } + } } - - diff --git a/sdks/full/rust/src/models/actor_list_regions_response.rs b/sdks/full/rust/src/models/actor_list_regions_response.rs index cee15d56f7..1176e11a7e 100644 --- a/sdks/full/rust/src/models/actor_list_regions_response.rs +++ b/sdks/full/rust/src/models/actor_list_regions_response.rs @@ -4,25 +4,18 @@ * 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 ActorListRegionsResponse { - #[serde(rename = "regions")] - pub regions: Vec, + #[serde(rename = "regions")] + pub regions: Vec, } impl ActorListRegionsResponse { - pub fn new(regions: Vec) -> ActorListRegionsResponse { - ActorListRegionsResponse { - regions, - } - } + pub fn new(regions: Vec) -> ActorListRegionsResponse { + ActorListRegionsResponse { regions } + } } - - diff --git a/sdks/full/rust/src/models/actor_log_stream.rs b/sdks/full/rust/src/models/actor_log_stream.rs index e4ec433d4f..613798dbdb 100644 --- a/sdks/full/rust/src/models/actor_log_stream.rs +++ b/sdks/full/rust/src/models/actor_log_stream.rs @@ -4,36 +4,30 @@ * 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 ActorLogStream { - #[serde(rename = "std_out")] - StdOut, - #[serde(rename = "std_err")] - StdErr, - + #[serde(rename = "std_out")] + StdOut, + #[serde(rename = "std_err")] + StdErr, } impl ToString for ActorLogStream { - fn to_string(&self) -> String { - match self { - Self::StdOut => String::from("std_out"), - Self::StdErr => String::from("std_err"), - } - } + fn to_string(&self) -> String { + match self { + Self::StdOut => String::from("std_out"), + Self::StdErr => String::from("std_err"), + } + } } impl Default for ActorLogStream { - fn default() -> ActorLogStream { - Self::StdOut - } + fn default() -> ActorLogStream { + Self::StdOut + } } - - - - diff --git a/sdks/full/rust/src/models/actor_network.rs b/sdks/full/rust/src/models/actor_network.rs index a420d77c0c..5e63064871 100644 --- a/sdks/full/rust/src/models/actor_network.rs +++ b/sdks/full/rust/src/models/actor_network.rs @@ -4,28 +4,22 @@ * 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 ActorNetwork { - #[serde(rename = "mode", skip_serializing_if = "Option::is_none")] - pub mode: Option, - #[serde(rename = "ports")] - pub ports: ::std::collections::HashMap, + #[serde(rename = "mode", skip_serializing_if = "Option::is_none")] + pub mode: Option, + #[serde(rename = "ports")] + pub ports: ::std::collections::HashMap, } impl ActorNetwork { - pub fn new(ports: ::std::collections::HashMap) -> ActorNetwork { - ActorNetwork { - mode: None, - ports, - } - } + pub fn new( + ports: ::std::collections::HashMap, + ) -> ActorNetwork { + ActorNetwork { mode: None, ports } + } } - - diff --git a/sdks/full/rust/src/models/actor_network_mode.rs b/sdks/full/rust/src/models/actor_network_mode.rs index db460774fb..505cdbb6fe 100644 --- a/sdks/full/rust/src/models/actor_network_mode.rs +++ b/sdks/full/rust/src/models/actor_network_mode.rs @@ -4,36 +4,30 @@ * 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 ActorNetworkMode { - #[serde(rename = "bridge")] - Bridge, - #[serde(rename = "host")] - Host, - + #[serde(rename = "bridge")] + Bridge, + #[serde(rename = "host")] + Host, } impl ToString for ActorNetworkMode { - fn to_string(&self) -> String { - match self { - Self::Bridge => String::from("bridge"), - Self::Host => String::from("host"), - } - } + fn to_string(&self) -> String { + match self { + Self::Bridge => String::from("bridge"), + Self::Host => String::from("host"), + } + } } impl Default for ActorNetworkMode { - fn default() -> ActorNetworkMode { - Self::Bridge - } + fn default() -> ActorNetworkMode { + Self::Bridge + } } - - - - diff --git a/sdks/full/rust/src/models/actor_patch_build_tags_request.rs b/sdks/full/rust/src/models/actor_patch_build_tags_request.rs index 26ec7f51b9..5957395ec4 100644 --- a/sdks/full/rust/src/models/actor_patch_build_tags_request.rs +++ b/sdks/full/rust/src/models/actor_patch_build_tags_request.rs @@ -4,29 +4,24 @@ * 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 ActorPatchBuildTagsRequest { - /// Removes the given tag keys from all other builds. - #[serde(rename = "exclusive_tags", skip_serializing_if = "Option::is_none")] - pub exclusive_tags: Option>, - #[serde(rename = "tags", deserialize_with = "Option::deserialize")] - pub tags: Option, + /// Removes the given tag keys from all other builds. + #[serde(rename = "exclusive_tags", skip_serializing_if = "Option::is_none")] + pub exclusive_tags: Option>, + #[serde(rename = "tags", deserialize_with = "Option::deserialize")] + pub tags: Option, } impl ActorPatchBuildTagsRequest { - pub fn new(tags: Option) -> ActorPatchBuildTagsRequest { - ActorPatchBuildTagsRequest { - exclusive_tags: None, - tags, - } - } + pub fn new(tags: Option) -> ActorPatchBuildTagsRequest { + ActorPatchBuildTagsRequest { + exclusive_tags: None, + tags, + } + } } - - diff --git a/sdks/full/rust/src/models/actor_port.rs b/sdks/full/rust/src/models/actor_port.rs index a217927b23..0f090c51e0 100644 --- a/sdks/full/rust/src/models/actor_port.rs +++ b/sdks/full/rust/src/models/actor_port.rs @@ -4,37 +4,35 @@ * 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 ActorPort { - #[serde(rename = "internal_port", skip_serializing_if = "Option::is_none")] - pub internal_port: Option, - #[serde(rename = "protocol")] - pub protocol: crate::models::ActorPortProtocol, - #[serde(rename = "public_hostname", skip_serializing_if = "Option::is_none")] - pub public_hostname: Option, - #[serde(rename = "public_port", skip_serializing_if = "Option::is_none")] - pub public_port: Option, - #[serde(rename = "routing")] - pub routing: Box, + #[serde(rename = "internal_port", skip_serializing_if = "Option::is_none")] + pub internal_port: Option, + #[serde(rename = "protocol")] + pub protocol: crate::models::ActorPortProtocol, + #[serde(rename = "public_hostname", skip_serializing_if = "Option::is_none")] + pub public_hostname: Option, + #[serde(rename = "public_port", skip_serializing_if = "Option::is_none")] + pub public_port: Option, + #[serde(rename = "routing")] + pub routing: Box, } impl ActorPort { - pub fn new(protocol: crate::models::ActorPortProtocol, routing: crate::models::ActorPortRouting) -> ActorPort { - ActorPort { - internal_port: None, - protocol, - public_hostname: None, - public_port: None, - routing: Box::new(routing), - } - } + pub fn new( + protocol: crate::models::ActorPortProtocol, + routing: crate::models::ActorPortRouting, + ) -> ActorPort { + ActorPort { + internal_port: None, + protocol, + public_hostname: None, + public_port: None, + routing: Box::new(routing), + } + } } - - diff --git a/sdks/full/rust/src/models/actor_port_authorization.rs b/sdks/full/rust/src/models/actor_port_authorization.rs index c3962e01ac..f49785d6a2 100644 --- a/sdks/full/rust/src/models/actor_port_authorization.rs +++ b/sdks/full/rust/src/models/actor_port_authorization.rs @@ -4,28 +4,23 @@ * 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 ActorPortAuthorization { - #[serde(rename = "bearer", skip_serializing_if = "Option::is_none")] - pub bearer: Option, - #[serde(rename = "query", skip_serializing_if = "Option::is_none")] - pub query: Option>, + #[serde(rename = "bearer", skip_serializing_if = "Option::is_none")] + pub bearer: Option, + #[serde(rename = "query", skip_serializing_if = "Option::is_none")] + pub query: Option>, } impl ActorPortAuthorization { - pub fn new() -> ActorPortAuthorization { - ActorPortAuthorization { - bearer: None, - query: None, - } - } + pub fn new() -> ActorPortAuthorization { + ActorPortAuthorization { + bearer: None, + query: None, + } + } } - - diff --git a/sdks/full/rust/src/models/actor_port_protocol.rs b/sdks/full/rust/src/models/actor_port_protocol.rs index 06ef550fe2..c5e9d49c1e 100644 --- a/sdks/full/rust/src/models/actor_port_protocol.rs +++ b/sdks/full/rust/src/models/actor_port_protocol.rs @@ -4,45 +4,39 @@ * 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 ActorPortProtocol { - #[serde(rename = "http")] - Http, - #[serde(rename = "https")] - Https, - #[serde(rename = "tcp")] - Tcp, - #[serde(rename = "tcp_tls")] - TcpTls, - #[serde(rename = "udp")] - Udp, - + #[serde(rename = "http")] + Http, + #[serde(rename = "https")] + Https, + #[serde(rename = "tcp")] + Tcp, + #[serde(rename = "tcp_tls")] + TcpTls, + #[serde(rename = "udp")] + Udp, } impl ToString for ActorPortProtocol { - 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"), - } - } + 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 ActorPortProtocol { - fn default() -> ActorPortProtocol { - Self::Http - } + fn default() -> ActorPortProtocol { + Self::Http + } } - - - - diff --git a/sdks/full/rust/src/models/actor_port_query_authorization.rs b/sdks/full/rust/src/models/actor_port_query_authorization.rs index ea8b447713..a559e7adc3 100644 --- a/sdks/full/rust/src/models/actor_port_query_authorization.rs +++ b/sdks/full/rust/src/models/actor_port_query_authorization.rs @@ -4,28 +4,20 @@ * 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 ActorPortQueryAuthorization { - #[serde(rename = "key")] - pub key: String, - #[serde(rename = "value")] - pub value: String, + #[serde(rename = "key")] + pub key: String, + #[serde(rename = "value")] + pub value: String, } impl ActorPortQueryAuthorization { - pub fn new(key: String, value: String) -> ActorPortQueryAuthorization { - ActorPortQueryAuthorization { - key, - value, - } - } + pub fn new(key: String, value: String) -> ActorPortQueryAuthorization { + ActorPortQueryAuthorization { key, value } + } } - - diff --git a/sdks/full/rust/src/models/actor_port_routing.rs b/sdks/full/rust/src/models/actor_port_routing.rs index 11da800ef7..e976434af8 100644 --- a/sdks/full/rust/src/models/actor_port_routing.rs +++ b/sdks/full/rust/src/models/actor_port_routing.rs @@ -4,28 +4,23 @@ * 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 ActorPortRouting { - #[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, + #[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 ActorPortRouting { - pub fn new() -> ActorPortRouting { - ActorPortRouting { - game_guard: None, - host: None, - } - } + pub fn new() -> ActorPortRouting { + ActorPortRouting { + game_guard: None, + host: None, + } + } } - - diff --git a/sdks/full/rust/src/models/actor_prepare_build_request.rs b/sdks/full/rust/src/models/actor_prepare_build_request.rs index 176029b913..91e5729885 100644 --- a/sdks/full/rust/src/models/actor_prepare_build_request.rs +++ b/sdks/full/rust/src/models/actor_prepare_build_request.rs @@ -4,44 +4,43 @@ * 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 ActorPrepareBuildRequest { - #[serde(rename = "compression", skip_serializing_if = "Option::is_none")] - pub compression: Option, - #[serde(rename = "image_file")] - pub image_file: Box, - /// A tag given to the project build. - #[serde(rename = "image_tag")] - pub image_tag: String, - #[serde(rename = "kind", skip_serializing_if = "Option::is_none")] - pub kind: Option, - #[serde(rename = "multipart_upload", skip_serializing_if = "Option::is_none")] - pub multipart_upload: Option, - #[serde(rename = "name")] - pub name: String, - #[serde(rename = "prewarm_regions", skip_serializing_if = "Option::is_none")] - pub prewarm_regions: Option>, + #[serde(rename = "compression", skip_serializing_if = "Option::is_none")] + pub compression: Option, + #[serde(rename = "image_file")] + pub image_file: Box, + /// A tag given to the project build. + #[serde(rename = "image_tag")] + pub image_tag: String, + #[serde(rename = "kind", skip_serializing_if = "Option::is_none")] + pub kind: Option, + #[serde(rename = "multipart_upload", skip_serializing_if = "Option::is_none")] + pub multipart_upload: Option, + #[serde(rename = "name")] + pub name: String, + #[serde(rename = "prewarm_regions", skip_serializing_if = "Option::is_none")] + pub prewarm_regions: Option>, } impl ActorPrepareBuildRequest { - pub fn new(image_file: crate::models::UploadPrepareFile, image_tag: String, name: String) -> ActorPrepareBuildRequest { - ActorPrepareBuildRequest { - compression: None, - image_file: Box::new(image_file), - image_tag, - kind: None, - multipart_upload: None, - name, - prewarm_regions: None, - } - } + pub fn new( + image_file: crate::models::UploadPrepareFile, + image_tag: String, + name: String, + ) -> ActorPrepareBuildRequest { + ActorPrepareBuildRequest { + compression: None, + image_file: Box::new(image_file), + image_tag, + kind: None, + multipart_upload: None, + name, + prewarm_regions: None, + } + } } - - diff --git a/sdks/full/rust/src/models/actor_prepare_build_response.rs b/sdks/full/rust/src/models/actor_prepare_build_response.rs index 9dd9f19ece..67aacbb8a1 100644 --- a/sdks/full/rust/src/models/actor_prepare_build_response.rs +++ b/sdks/full/rust/src/models/actor_prepare_build_response.rs @@ -4,31 +4,32 @@ * 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 ActorPrepareBuildResponse { - #[serde(rename = "build")] - pub build: uuid::Uuid, - #[serde(rename = "image_presigned_request", skip_serializing_if = "Option::is_none")] - pub image_presigned_request: Option>, - #[serde(rename = "image_presigned_requests", skip_serializing_if = "Option::is_none")] - pub image_presigned_requests: Option>, + #[serde(rename = "build")] + pub build: uuid::Uuid, + #[serde( + rename = "image_presigned_request", + skip_serializing_if = "Option::is_none" + )] + pub image_presigned_request: Option>, + #[serde( + rename = "image_presigned_requests", + skip_serializing_if = "Option::is_none" + )] + pub image_presigned_requests: Option>, } impl ActorPrepareBuildResponse { - pub fn new(build: uuid::Uuid) -> ActorPrepareBuildResponse { - ActorPrepareBuildResponse { - build, - image_presigned_request: None, - image_presigned_requests: None, - } - } + pub fn new(build: uuid::Uuid) -> ActorPrepareBuildResponse { + ActorPrepareBuildResponse { + build, + image_presigned_request: None, + image_presigned_requests: None, + } + } } - - diff --git a/sdks/full/rust/src/models/actor_region.rs b/sdks/full/rust/src/models/actor_region.rs index 9d89f0371e..f22e5492f2 100644 --- a/sdks/full/rust/src/models/actor_region.rs +++ b/sdks/full/rust/src/models/actor_region.rs @@ -4,28 +4,20 @@ * 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 ActorRegion { - #[serde(rename = "id")] - pub id: String, - #[serde(rename = "name")] - pub name: String, + #[serde(rename = "id")] + pub id: String, + #[serde(rename = "name")] + pub name: String, } impl ActorRegion { - pub fn new(id: String, name: String) -> ActorRegion { - ActorRegion { - id, - name, - } - } + pub fn new(id: String, name: String) -> ActorRegion { + ActorRegion { id, name } + } } - - diff --git a/sdks/full/rust/src/models/actor_resources.rs b/sdks/full/rust/src/models/actor_resources.rs index 57d7dc7ed4..7d8d3661aa 100644 --- a/sdks/full/rust/src/models/actor_resources.rs +++ b/sdks/full/rust/src/models/actor_resources.rs @@ -4,30 +4,22 @@ * 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 ActorResources { - /// The number of CPU cores in millicores, or 1/1000 of a core. For example, 1/8 of a core would be 125 millicores, and 1 core would be 1000 millicores. - #[serde(rename = "cpu")] - pub cpu: i32, - /// The amount of memory in megabytes - #[serde(rename = "memory")] - pub memory: i32, + /// The number of CPU cores in millicores, or 1/1000 of a core. For example, 1/8 of a core would be 125 millicores, and 1 core would be 1000 millicores. + #[serde(rename = "cpu")] + pub cpu: i32, + /// The amount of memory in megabytes + #[serde(rename = "memory")] + pub memory: i32, } impl ActorResources { - pub fn new(cpu: i32, memory: i32) -> ActorResources { - ActorResources { - cpu, - memory, - } - } + pub fn new(cpu: i32, memory: i32) -> ActorResources { + ActorResources { cpu, memory } + } } - - diff --git a/sdks/full/rust/src/models/actor_runtime.rs b/sdks/full/rust/src/models/actor_runtime.rs index 63ba97b4e7..80e8ddcda9 100644 --- a/sdks/full/rust/src/models/actor_runtime.rs +++ b/sdks/full/rust/src/models/actor_runtime.rs @@ -4,31 +4,26 @@ * 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 ActorRuntime { - #[serde(rename = "arguments", skip_serializing_if = "Option::is_none")] - pub arguments: Option>, - #[serde(rename = "build")] - pub build: uuid::Uuid, - #[serde(rename = "environment", skip_serializing_if = "Option::is_none")] - pub environment: Option<::std::collections::HashMap>, + #[serde(rename = "arguments", skip_serializing_if = "Option::is_none")] + pub arguments: Option>, + #[serde(rename = "build")] + pub build: uuid::Uuid, + #[serde(rename = "environment", skip_serializing_if = "Option::is_none")] + pub environment: Option<::std::collections::HashMap>, } impl ActorRuntime { - pub fn new(build: uuid::Uuid) -> ActorRuntime { - ActorRuntime { - arguments: None, - build, - environment: None, - } - } + pub fn new(build: uuid::Uuid) -> ActorRuntime { + ActorRuntime { + arguments: None, + build, + environment: None, + } + } } - - diff --git a/sdks/full/rust/src/models/auth_complete_status.rs b/sdks/full/rust/src/models/auth_complete_status.rs index f2d9876170..a7fca96169 100644 --- a/sdks/full/rust/src/models/auth_complete_status.rs +++ b/sdks/full/rust/src/models/auth_complete_status.rs @@ -4,7 +4,7 @@ * 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 */ @@ -13,40 +13,35 @@ /// Represents the state of an external account linking process. #[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] pub enum AuthCompleteStatus { - #[serde(rename = "switch_identity")] - SwitchIdentity, - #[serde(rename = "linked_account_added")] - LinkedAccountAdded, - #[serde(rename = "already_complete")] - AlreadyComplete, - #[serde(rename = "expired")] - Expired, - #[serde(rename = "too_many_attempts")] - TooManyAttempts, - #[serde(rename = "incorrect")] - Incorrect, - + #[serde(rename = "switch_identity")] + SwitchIdentity, + #[serde(rename = "linked_account_added")] + LinkedAccountAdded, + #[serde(rename = "already_complete")] + AlreadyComplete, + #[serde(rename = "expired")] + Expired, + #[serde(rename = "too_many_attempts")] + TooManyAttempts, + #[serde(rename = "incorrect")] + Incorrect, } impl ToString for AuthCompleteStatus { - fn to_string(&self) -> String { - match self { - Self::SwitchIdentity => String::from("switch_identity"), - Self::LinkedAccountAdded => String::from("linked_account_added"), - Self::AlreadyComplete => String::from("already_complete"), - Self::Expired => String::from("expired"), - Self::TooManyAttempts => String::from("too_many_attempts"), - Self::Incorrect => String::from("incorrect"), - } - } + fn to_string(&self) -> String { + match self { + Self::SwitchIdentity => String::from("switch_identity"), + Self::LinkedAccountAdded => String::from("linked_account_added"), + Self::AlreadyComplete => String::from("already_complete"), + Self::Expired => String::from("expired"), + Self::TooManyAttempts => String::from("too_many_attempts"), + Self::Incorrect => String::from("incorrect"), + } + } } impl Default for AuthCompleteStatus { - fn default() -> AuthCompleteStatus { - Self::SwitchIdentity - } + fn default() -> AuthCompleteStatus { + Self::SwitchIdentity + } } - - - - diff --git a/sdks/full/rust/src/models/auth_identity_complete_email_verification_request.rs b/sdks/full/rust/src/models/auth_identity_complete_email_verification_request.rs index 5fb77a7dd3..eb650fc87a 100644 --- a/sdks/full/rust/src/models/auth_identity_complete_email_verification_request.rs +++ b/sdks/full/rust/src/models/auth_identity_complete_email_verification_request.rs @@ -4,29 +4,27 @@ * 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 AuthIdentityCompleteEmailVerificationRequest { - /// The code sent to the requestee's email. - #[serde(rename = "code")] - pub code: String, - #[serde(rename = "verification_id")] - pub verification_id: uuid::Uuid, + /// The code sent to the requestee's email. + #[serde(rename = "code")] + pub code: String, + #[serde(rename = "verification_id")] + pub verification_id: uuid::Uuid, } impl AuthIdentityCompleteEmailVerificationRequest { - pub fn new(code: String, verification_id: uuid::Uuid) -> AuthIdentityCompleteEmailVerificationRequest { - AuthIdentityCompleteEmailVerificationRequest { - code, - verification_id, - } - } + pub fn new( + code: String, + verification_id: uuid::Uuid, + ) -> AuthIdentityCompleteEmailVerificationRequest { + AuthIdentityCompleteEmailVerificationRequest { + code, + verification_id, + } + } } - - diff --git a/sdks/full/rust/src/models/auth_identity_complete_email_verification_response.rs b/sdks/full/rust/src/models/auth_identity_complete_email_verification_response.rs index 557811bb75..0a7176f4b0 100644 --- a/sdks/full/rust/src/models/auth_identity_complete_email_verification_response.rs +++ b/sdks/full/rust/src/models/auth_identity_complete_email_verification_response.rs @@ -4,25 +4,20 @@ * 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 AuthIdentityCompleteEmailVerificationResponse { - #[serde(rename = "status")] - pub status: crate::models::AuthCompleteStatus, + #[serde(rename = "status")] + pub status: crate::models::AuthCompleteStatus, } impl AuthIdentityCompleteEmailVerificationResponse { - pub fn new(status: crate::models::AuthCompleteStatus) -> AuthIdentityCompleteEmailVerificationResponse { - AuthIdentityCompleteEmailVerificationResponse { - status, - } - } + pub fn new( + status: crate::models::AuthCompleteStatus, + ) -> AuthIdentityCompleteEmailVerificationResponse { + AuthIdentityCompleteEmailVerificationResponse { status } + } } - - diff --git a/sdks/full/rust/src/models/auth_identity_start_email_verification_request.rs b/sdks/full/rust/src/models/auth_identity_start_email_verification_request.rs index d11fbea291..3f9a2cdc91 100644 --- a/sdks/full/rust/src/models/auth_identity_start_email_verification_request.rs +++ b/sdks/full/rust/src/models/auth_identity_start_email_verification_request.rs @@ -4,31 +4,26 @@ * 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 AuthIdentityStartEmailVerificationRequest { - #[serde(rename = "captcha", skip_serializing_if = "Option::is_none")] - pub captcha: Option>, - #[serde(rename = "email")] - pub email: String, - #[serde(rename = "game_id", skip_serializing_if = "Option::is_none")] - pub game_id: Option, + #[serde(rename = "captcha", skip_serializing_if = "Option::is_none")] + pub captcha: Option>, + #[serde(rename = "email")] + pub email: String, + #[serde(rename = "game_id", skip_serializing_if = "Option::is_none")] + pub game_id: Option, } impl AuthIdentityStartEmailVerificationRequest { - pub fn new(email: String) -> AuthIdentityStartEmailVerificationRequest { - AuthIdentityStartEmailVerificationRequest { - captcha: None, - email, - game_id: None, - } - } + pub fn new(email: String) -> AuthIdentityStartEmailVerificationRequest { + AuthIdentityStartEmailVerificationRequest { + captcha: None, + email, + game_id: None, + } + } } - - diff --git a/sdks/full/rust/src/models/auth_identity_start_email_verification_response.rs b/sdks/full/rust/src/models/auth_identity_start_email_verification_response.rs index 78533e77b2..a071908725 100644 --- a/sdks/full/rust/src/models/auth_identity_start_email_verification_response.rs +++ b/sdks/full/rust/src/models/auth_identity_start_email_verification_response.rs @@ -4,25 +4,18 @@ * 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 AuthIdentityStartEmailVerificationResponse { - #[serde(rename = "verification_id")] - pub verification_id: uuid::Uuid, + #[serde(rename = "verification_id")] + pub verification_id: uuid::Uuid, } impl AuthIdentityStartEmailVerificationResponse { - pub fn new(verification_id: uuid::Uuid) -> AuthIdentityStartEmailVerificationResponse { - AuthIdentityStartEmailVerificationResponse { - verification_id, - } - } + pub fn new(verification_id: uuid::Uuid) -> AuthIdentityStartEmailVerificationResponse { + AuthIdentityStartEmailVerificationResponse { verification_id } + } } - - diff --git a/sdks/full/rust/src/models/auth_refresh_identity_token_request.rs b/sdks/full/rust/src/models/auth_refresh_identity_token_request.rs index bfaf83a1f3..3312ac7ea8 100644 --- a/sdks/full/rust/src/models/auth_refresh_identity_token_request.rs +++ b/sdks/full/rust/src/models/auth_refresh_identity_token_request.rs @@ -4,26 +4,19 @@ * 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 AuthRefreshIdentityTokenRequest { - /// When `true`, the current identity for the provided cookie will be logged out and a new identity will be returned. - #[serde(rename = "logout", skip_serializing_if = "Option::is_none")] - pub logout: Option, + /// When `true`, the current identity for the provided cookie will be logged out and a new identity will be returned. + #[serde(rename = "logout", skip_serializing_if = "Option::is_none")] + pub logout: Option, } impl AuthRefreshIdentityTokenRequest { - pub fn new() -> AuthRefreshIdentityTokenRequest { - AuthRefreshIdentityTokenRequest { - logout: None, - } - } + pub fn new() -> AuthRefreshIdentityTokenRequest { + AuthRefreshIdentityTokenRequest { logout: None } + } } - - diff --git a/sdks/full/rust/src/models/auth_refresh_identity_token_response.rs b/sdks/full/rust/src/models/auth_refresh_identity_token_response.rs index 04fc595d97..e83886c5f0 100644 --- a/sdks/full/rust/src/models/auth_refresh_identity_token_response.rs +++ b/sdks/full/rust/src/models/auth_refresh_identity_token_response.rs @@ -4,33 +4,32 @@ * 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 AuthRefreshIdentityTokenResponse { - /// Token expiration time (in milliseconds). - #[serde(rename = "exp")] - pub exp: String, - #[serde(rename = "identity_id")] - pub identity_id: uuid::Uuid, - /// A JSON Web Token. Slightly modified to include a description prefix and use Protobufs of JSON. - #[serde(rename = "token")] - pub token: String, + /// Token expiration time (in milliseconds). + #[serde(rename = "exp")] + pub exp: String, + #[serde(rename = "identity_id")] + pub identity_id: uuid::Uuid, + /// A JSON Web Token. Slightly modified to include a description prefix and use Protobufs of JSON. + #[serde(rename = "token")] + pub token: String, } impl AuthRefreshIdentityTokenResponse { - pub fn new(exp: String, identity_id: uuid::Uuid, token: String) -> AuthRefreshIdentityTokenResponse { - AuthRefreshIdentityTokenResponse { - exp, - identity_id, - token, - } - } + pub fn new( + exp: String, + identity_id: uuid::Uuid, + token: String, + ) -> AuthRefreshIdentityTokenResponse { + AuthRefreshIdentityTokenResponse { + exp, + identity_id, + token, + } + } } - - diff --git a/sdks/full/rust/src/models/captcha_config.rs b/sdks/full/rust/src/models/captcha_config.rs index d285073ecd..edbb05f410 100644 --- a/sdks/full/rust/src/models/captcha_config.rs +++ b/sdks/full/rust/src/models/captcha_config.rs @@ -4,30 +4,26 @@ * 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 */ /// CaptchaConfig : Methods to verify a captcha - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct CaptchaConfig { - #[serde(rename = "hcaptcha", skip_serializing_if = "Option::is_none")] - pub hcaptcha: Option>, - #[serde(rename = "turnstile", skip_serializing_if = "Option::is_none")] - pub turnstile: Option>, + #[serde(rename = "hcaptcha", skip_serializing_if = "Option::is_none")] + pub hcaptcha: Option>, + #[serde(rename = "turnstile", skip_serializing_if = "Option::is_none")] + pub turnstile: Option>, } impl CaptchaConfig { - /// Methods to verify a captcha - pub fn new() -> CaptchaConfig { - CaptchaConfig { - hcaptcha: None, - turnstile: None, - } - } + /// Methods to verify a captcha + pub fn new() -> CaptchaConfig { + CaptchaConfig { + hcaptcha: None, + turnstile: None, + } + } } - - diff --git a/sdks/full/rust/src/models/captcha_config_hcaptcha.rs b/sdks/full/rust/src/models/captcha_config_hcaptcha.rs index a342255d1d..f229d0e40f 100644 --- a/sdks/full/rust/src/models/captcha_config_hcaptcha.rs +++ b/sdks/full/rust/src/models/captcha_config_hcaptcha.rs @@ -4,27 +4,21 @@ * 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 */ /// CaptchaConfigHcaptcha : Captcha configuration. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct CaptchaConfigHcaptcha { - #[serde(rename = "client_response")] - pub client_response: String, + #[serde(rename = "client_response")] + pub client_response: String, } impl CaptchaConfigHcaptcha { - /// Captcha configuration. - pub fn new(client_response: String) -> CaptchaConfigHcaptcha { - CaptchaConfigHcaptcha { - client_response, - } - } + /// Captcha configuration. + pub fn new(client_response: String) -> CaptchaConfigHcaptcha { + CaptchaConfigHcaptcha { client_response } + } } - - diff --git a/sdks/full/rust/src/models/captcha_config_turnstile.rs b/sdks/full/rust/src/models/captcha_config_turnstile.rs index ca74d127c0..2c464d4433 100644 --- a/sdks/full/rust/src/models/captcha_config_turnstile.rs +++ b/sdks/full/rust/src/models/captcha_config_turnstile.rs @@ -4,27 +4,21 @@ * 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 */ /// CaptchaConfigTurnstile : Captcha configuration. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct CaptchaConfigTurnstile { - #[serde(rename = "client_response")] - pub client_response: String, + #[serde(rename = "client_response")] + pub client_response: String, } impl CaptchaConfigTurnstile { - /// Captcha configuration. - pub fn new(client_response: String) -> CaptchaConfigTurnstile { - CaptchaConfigTurnstile { - client_response, - } - } + /// Captcha configuration. + pub fn new(client_response: String) -> CaptchaConfigTurnstile { + CaptchaConfigTurnstile { client_response } + } } - - diff --git a/sdks/full/rust/src/models/cloud_auth_agent.rs b/sdks/full/rust/src/models/cloud_auth_agent.rs index 5ab694c6ad..d48a3aaa51 100644 --- a/sdks/full/rust/src/models/cloud_auth_agent.rs +++ b/sdks/full/rust/src/models/cloud_auth_agent.rs @@ -4,30 +4,26 @@ * 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 */ /// CloudAuthAgent : The current authenticated agent. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct CloudAuthAgent { - #[serde(rename = "game_cloud", skip_serializing_if = "Option::is_none")] - pub game_cloud: Option>, - #[serde(rename = "identity", skip_serializing_if = "Option::is_none")] - pub identity: Option>, + #[serde(rename = "game_cloud", skip_serializing_if = "Option::is_none")] + pub game_cloud: Option>, + #[serde(rename = "identity", skip_serializing_if = "Option::is_none")] + pub identity: Option>, } impl CloudAuthAgent { - /// The current authenticated agent. - pub fn new() -> CloudAuthAgent { - CloudAuthAgent { - game_cloud: None, - identity: None, - } - } + /// The current authenticated agent. + pub fn new() -> CloudAuthAgent { + CloudAuthAgent { + game_cloud: None, + identity: None, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_auth_agent_game_cloud.rs b/sdks/full/rust/src/models/cloud_auth_agent_game_cloud.rs index 4698420b34..29859b7b3f 100644 --- a/sdks/full/rust/src/models/cloud_auth_agent_game_cloud.rs +++ b/sdks/full/rust/src/models/cloud_auth_agent_game_cloud.rs @@ -4,27 +4,21 @@ * 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 */ /// CloudAuthAgentGameCloud : The current authenticated game cloud. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct CloudAuthAgentGameCloud { - #[serde(rename = "game_id")] - pub game_id: uuid::Uuid, + #[serde(rename = "game_id")] + pub game_id: uuid::Uuid, } impl CloudAuthAgentGameCloud { - /// The current authenticated game cloud. - pub fn new(game_id: uuid::Uuid) -> CloudAuthAgentGameCloud { - CloudAuthAgentGameCloud { - game_id, - } - } + /// The current authenticated game cloud. + pub fn new(game_id: uuid::Uuid) -> CloudAuthAgentGameCloud { + CloudAuthAgentGameCloud { game_id } + } } - - diff --git a/sdks/full/rust/src/models/cloud_auth_agent_identity.rs b/sdks/full/rust/src/models/cloud_auth_agent_identity.rs index 38dff8d0ec..799fe9ea84 100644 --- a/sdks/full/rust/src/models/cloud_auth_agent_identity.rs +++ b/sdks/full/rust/src/models/cloud_auth_agent_identity.rs @@ -4,27 +4,21 @@ * 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 */ /// CloudAuthAgentIdentity : The current authenticated identity. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct CloudAuthAgentIdentity { - #[serde(rename = "identity_id")] - pub identity_id: uuid::Uuid, + #[serde(rename = "identity_id")] + pub identity_id: uuid::Uuid, } impl CloudAuthAgentIdentity { - /// The current authenticated identity. - pub fn new(identity_id: uuid::Uuid) -> CloudAuthAgentIdentity { - CloudAuthAgentIdentity { - identity_id, - } - } + /// The current authenticated identity. + pub fn new(identity_id: uuid::Uuid) -> CloudAuthAgentIdentity { + CloudAuthAgentIdentity { identity_id } + } } - - diff --git a/sdks/full/rust/src/models/cloud_bootstrap_access.rs b/sdks/full/rust/src/models/cloud_bootstrap_access.rs index 30ad6842f2..6d5441c30e 100644 --- a/sdks/full/rust/src/models/cloud_bootstrap_access.rs +++ b/sdks/full/rust/src/models/cloud_bootstrap_access.rs @@ -4,39 +4,33 @@ * 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 CloudBootstrapAccess { - #[serde(rename = "public")] - Public, - #[serde(rename = "private")] - Private, - #[serde(rename = "development")] - Development, - + #[serde(rename = "public")] + Public, + #[serde(rename = "private")] + Private, + #[serde(rename = "development")] + Development, } impl ToString for CloudBootstrapAccess { - fn to_string(&self) -> String { - match self { - Self::Public => String::from("public"), - Self::Private => String::from("private"), - Self::Development => String::from("development"), - } - } + fn to_string(&self) -> String { + match self { + Self::Public => String::from("public"), + Self::Private => String::from("private"), + Self::Development => String::from("development"), + } + } } impl Default for CloudBootstrapAccess { - fn default() -> CloudBootstrapAccess { - Self::Public - } + fn default() -> CloudBootstrapAccess { + Self::Public + } } - - - - diff --git a/sdks/full/rust/src/models/cloud_bootstrap_captcha.rs b/sdks/full/rust/src/models/cloud_bootstrap_captcha.rs index 9f83ccbc73..af623c7661 100644 --- a/sdks/full/rust/src/models/cloud_bootstrap_captcha.rs +++ b/sdks/full/rust/src/models/cloud_bootstrap_captcha.rs @@ -4,25 +4,18 @@ * 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 CloudBootstrapCaptcha { - #[serde(rename = "turnstile", skip_serializing_if = "Option::is_none")] - pub turnstile: Option>, + #[serde(rename = "turnstile", skip_serializing_if = "Option::is_none")] + pub turnstile: Option>, } impl CloudBootstrapCaptcha { - pub fn new() -> CloudBootstrapCaptcha { - CloudBootstrapCaptcha { - turnstile: None, - } - } + pub fn new() -> CloudBootstrapCaptcha { + CloudBootstrapCaptcha { turnstile: None } + } } - - diff --git a/sdks/full/rust/src/models/cloud_bootstrap_captcha_turnstile.rs b/sdks/full/rust/src/models/cloud_bootstrap_captcha_turnstile.rs index 4e326bb691..04daf43ea0 100644 --- a/sdks/full/rust/src/models/cloud_bootstrap_captcha_turnstile.rs +++ b/sdks/full/rust/src/models/cloud_bootstrap_captcha_turnstile.rs @@ -4,25 +4,18 @@ * 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 CloudBootstrapCaptchaTurnstile { - #[serde(rename = "site_key")] - pub site_key: String, + #[serde(rename = "site_key")] + pub site_key: String, } impl CloudBootstrapCaptchaTurnstile { - pub fn new(site_key: String) -> CloudBootstrapCaptchaTurnstile { - CloudBootstrapCaptchaTurnstile { - site_key, - } - } + pub fn new(site_key: String) -> CloudBootstrapCaptchaTurnstile { + CloudBootstrapCaptchaTurnstile { site_key } + } } - - diff --git a/sdks/full/rust/src/models/cloud_bootstrap_cluster.rs b/sdks/full/rust/src/models/cloud_bootstrap_cluster.rs index 3152f22de5..103fbe8182 100644 --- a/sdks/full/rust/src/models/cloud_bootstrap_cluster.rs +++ b/sdks/full/rust/src/models/cloud_bootstrap_cluster.rs @@ -4,7 +4,7 @@ * 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 */ @@ -13,28 +13,23 @@ /// The type of cluster that the backend is currently running. #[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] pub enum CloudBootstrapCluster { - #[serde(rename = "enterprise")] - Enterprise, - #[serde(rename = "oss")] - Oss, - + #[serde(rename = "enterprise")] + Enterprise, + #[serde(rename = "oss")] + Oss, } impl ToString for CloudBootstrapCluster { - fn to_string(&self) -> String { - match self { - Self::Enterprise => String::from("enterprise"), - Self::Oss => String::from("oss"), - } - } + fn to_string(&self) -> String { + match self { + Self::Enterprise => String::from("enterprise"), + Self::Oss => String::from("oss"), + } + } } impl Default for CloudBootstrapCluster { - fn default() -> CloudBootstrapCluster { - Self::Enterprise - } + fn default() -> CloudBootstrapCluster { + Self::Enterprise + } } - - - - diff --git a/sdks/full/rust/src/models/cloud_bootstrap_domains.rs b/sdks/full/rust/src/models/cloud_bootstrap_domains.rs index 1ba4c25ae0..79f31cd630 100644 --- a/sdks/full/rust/src/models/cloud_bootstrap_domains.rs +++ b/sdks/full/rust/src/models/cloud_bootstrap_domains.rs @@ -4,33 +4,29 @@ * 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 */ /// CloudBootstrapDomains : Domains that host parts of Rivet - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct CloudBootstrapDomains { - #[serde(rename = "cdn", skip_serializing_if = "Option::is_none")] - pub cdn: Option, - #[serde(rename = "job", skip_serializing_if = "Option::is_none")] - pub job: Option, - #[serde(rename = "opengb", skip_serializing_if = "Option::is_none")] - pub opengb: Option, + #[serde(rename = "cdn", skip_serializing_if = "Option::is_none")] + pub cdn: Option, + #[serde(rename = "job", skip_serializing_if = "Option::is_none")] + pub job: Option, + #[serde(rename = "opengb", skip_serializing_if = "Option::is_none")] + pub opengb: Option, } impl CloudBootstrapDomains { - /// Domains that host parts of Rivet - pub fn new() -> CloudBootstrapDomains { - CloudBootstrapDomains { - cdn: None, - job: None, - opengb: None, - } - } + /// Domains that host parts of Rivet + pub fn new() -> CloudBootstrapDomains { + CloudBootstrapDomains { + cdn: None, + job: None, + opengb: None, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_bootstrap_login_methods.rs b/sdks/full/rust/src/models/cloud_bootstrap_login_methods.rs index f643f7fb3f..72a6bb5291 100644 --- a/sdks/full/rust/src/models/cloud_bootstrap_login_methods.rs +++ b/sdks/full/rust/src/models/cloud_bootstrap_login_methods.rs @@ -4,25 +4,18 @@ * 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 CloudBootstrapLoginMethods { - #[serde(rename = "email")] - pub email: bool, + #[serde(rename = "email")] + pub email: bool, } impl CloudBootstrapLoginMethods { - pub fn new(email: bool) -> CloudBootstrapLoginMethods { - CloudBootstrapLoginMethods { - email, - } - } + pub fn new(email: bool) -> CloudBootstrapLoginMethods { + CloudBootstrapLoginMethods { email } + } } - - diff --git a/sdks/full/rust/src/models/cloud_bootstrap_origins.rs b/sdks/full/rust/src/models/cloud_bootstrap_origins.rs index 4a26422571..f50a31c39c 100644 --- a/sdks/full/rust/src/models/cloud_bootstrap_origins.rs +++ b/sdks/full/rust/src/models/cloud_bootstrap_origins.rs @@ -4,27 +4,21 @@ * 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 */ /// CloudBootstrapOrigins : Origins used to build URLs from - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct CloudBootstrapOrigins { - #[serde(rename = "hub")] - pub hub: String, + #[serde(rename = "hub")] + pub hub: String, } impl CloudBootstrapOrigins { - /// Origins used to build URLs from - pub fn new(hub: String) -> CloudBootstrapOrigins { - CloudBootstrapOrigins { - hub, - } - } + /// Origins used to build URLs from + pub fn new(hub: String) -> CloudBootstrapOrigins { + CloudBootstrapOrigins { hub } + } } - - diff --git a/sdks/full/rust/src/models/cloud_bootstrap_response.rs b/sdks/full/rust/src/models/cloud_bootstrap_response.rs index a0a2c78897..b4848ed6c9 100644 --- a/sdks/full/rust/src/models/cloud_bootstrap_response.rs +++ b/sdks/full/rust/src/models/cloud_bootstrap_response.rs @@ -4,43 +4,46 @@ * 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 CloudBootstrapResponse { - #[serde(rename = "access")] - pub access: crate::models::CloudBootstrapAccess, - #[serde(rename = "captcha")] - pub captcha: Box, - #[serde(rename = "cluster")] - pub cluster: crate::models::CloudBootstrapCluster, - #[serde(rename = "deploy_hash")] - pub deploy_hash: String, - #[serde(rename = "domains")] - pub domains: Box, - #[serde(rename = "login_methods")] - pub login_methods: Box, - #[serde(rename = "origins")] - pub origins: Box, + #[serde(rename = "access")] + pub access: crate::models::CloudBootstrapAccess, + #[serde(rename = "captcha")] + pub captcha: Box, + #[serde(rename = "cluster")] + pub cluster: crate::models::CloudBootstrapCluster, + #[serde(rename = "deploy_hash")] + pub deploy_hash: String, + #[serde(rename = "domains")] + pub domains: Box, + #[serde(rename = "login_methods")] + pub login_methods: Box, + #[serde(rename = "origins")] + pub origins: Box, } impl CloudBootstrapResponse { - pub fn new(access: crate::models::CloudBootstrapAccess, captcha: crate::models::CloudBootstrapCaptcha, cluster: crate::models::CloudBootstrapCluster, deploy_hash: String, domains: crate::models::CloudBootstrapDomains, login_methods: crate::models::CloudBootstrapLoginMethods, origins: crate::models::CloudBootstrapOrigins) -> CloudBootstrapResponse { - CloudBootstrapResponse { - access, - captcha: Box::new(captcha), - cluster, - deploy_hash, - domains: Box::new(domains), - login_methods: Box::new(login_methods), - origins: Box::new(origins), - } - } + pub fn new( + access: crate::models::CloudBootstrapAccess, + captcha: crate::models::CloudBootstrapCaptcha, + cluster: crate::models::CloudBootstrapCluster, + deploy_hash: String, + domains: crate::models::CloudBootstrapDomains, + login_methods: crate::models::CloudBootstrapLoginMethods, + origins: crate::models::CloudBootstrapOrigins, + ) -> CloudBootstrapResponse { + CloudBootstrapResponse { + access, + captcha: Box::new(captcha), + cluster, + deploy_hash, + domains: Box::new(domains), + login_methods: Box::new(login_methods), + origins: Box::new(origins), + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_build_summary.rs b/sdks/full/rust/src/models/cloud_build_summary.rs index 2191748cf3..da48359dfe 100644 --- a/sdks/full/rust/src/models/cloud_build_summary.rs +++ b/sdks/full/rust/src/models/cloud_build_summary.rs @@ -4,50 +4,54 @@ * 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 */ /// CloudBuildSummary : A build summary. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct CloudBuildSummary { - #[serde(rename = "build_id")] - pub build_id: uuid::Uuid, - /// Whether or not this build has completely been uploaded. - #[serde(rename = "complete")] - pub complete: bool, - /// Unsigned 64 bit integer. - #[serde(rename = "content_length")] - pub content_length: i64, - /// RFC3339 timestamp - #[serde(rename = "create_ts")] - pub create_ts: String, - /// Represent a resource's readable display name. - #[serde(rename = "display_name")] - pub display_name: String, - /// Tags of this build - #[serde(rename = "tags")] - pub tags: ::std::collections::HashMap, - #[serde(rename = "upload_id")] - pub upload_id: uuid::Uuid, + #[serde(rename = "build_id")] + pub build_id: uuid::Uuid, + /// Whether or not this build has completely been uploaded. + #[serde(rename = "complete")] + pub complete: bool, + /// Unsigned 64 bit integer. + #[serde(rename = "content_length")] + pub content_length: i64, + /// RFC3339 timestamp + #[serde(rename = "create_ts")] + pub create_ts: String, + /// Represent a resource's readable display name. + #[serde(rename = "display_name")] + pub display_name: String, + /// Tags of this build + #[serde(rename = "tags")] + pub tags: ::std::collections::HashMap, + #[serde(rename = "upload_id")] + pub upload_id: uuid::Uuid, } impl CloudBuildSummary { - /// A build summary. - pub fn new(build_id: uuid::Uuid, complete: bool, content_length: i64, create_ts: String, display_name: String, tags: ::std::collections::HashMap, upload_id: uuid::Uuid) -> CloudBuildSummary { - CloudBuildSummary { - build_id, - complete, - content_length, - create_ts, - display_name, - tags, - upload_id, - } - } + /// A build summary. + pub fn new( + build_id: uuid::Uuid, + complete: bool, + content_length: i64, + create_ts: String, + display_name: String, + tags: ::std::collections::HashMap, + upload_id: uuid::Uuid, + ) -> CloudBuildSummary { + CloudBuildSummary { + build_id, + complete, + content_length, + create_ts, + display_name, + tags, + upload_id, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_cdn_auth_type.rs b/sdks/full/rust/src/models/cloud_cdn_auth_type.rs index bd9b926551..8175735bf6 100644 --- a/sdks/full/rust/src/models/cloud_cdn_auth_type.rs +++ b/sdks/full/rust/src/models/cloud_cdn_auth_type.rs @@ -4,7 +4,7 @@ * 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 */ @@ -13,28 +13,23 @@ /// A value denoting what type of authentication to use for a game namespace's CDN. #[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] pub enum CloudCdnAuthType { - #[serde(rename = "none")] - None, - #[serde(rename = "basic")] - Basic, - + #[serde(rename = "none")] + None, + #[serde(rename = "basic")] + Basic, } impl ToString for CloudCdnAuthType { - fn to_string(&self) -> String { - match self { - Self::None => String::from("none"), - Self::Basic => String::from("basic"), - } - } + fn to_string(&self) -> String { + match self { + Self::None => String::from("none"), + Self::Basic => String::from("basic"), + } + } } impl Default for CloudCdnAuthType { - fn default() -> CloudCdnAuthType { - Self::None - } + fn default() -> CloudCdnAuthType { + Self::None + } } - - - - diff --git a/sdks/full/rust/src/models/cloud_cdn_namespace_auth_user.rs b/sdks/full/rust/src/models/cloud_cdn_namespace_auth_user.rs index 21b67ffac2..a39ab114b4 100644 --- a/sdks/full/rust/src/models/cloud_cdn_namespace_auth_user.rs +++ b/sdks/full/rust/src/models/cloud_cdn_namespace_auth_user.rs @@ -4,28 +4,22 @@ * 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 */ /// CloudCdnNamespaceAuthUser : An authenticated CDN user for a given namespace. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct CloudCdnNamespaceAuthUser { - /// A user name. - #[serde(rename = "user")] - pub user: String, + /// A user name. + #[serde(rename = "user")] + pub user: String, } impl CloudCdnNamespaceAuthUser { - /// An authenticated CDN user for a given namespace. - pub fn new(user: String) -> CloudCdnNamespaceAuthUser { - CloudCdnNamespaceAuthUser { - user, - } - } + /// An authenticated CDN user for a given namespace. + pub fn new(user: String) -> CloudCdnNamespaceAuthUser { + CloudCdnNamespaceAuthUser { user } + } } - - diff --git a/sdks/full/rust/src/models/cloud_cdn_namespace_config.rs b/sdks/full/rust/src/models/cloud_cdn_namespace_config.rs index 438f4a8cc3..f5908c3393 100644 --- a/sdks/full/rust/src/models/cloud_cdn_namespace_config.rs +++ b/sdks/full/rust/src/models/cloud_cdn_namespace_config.rs @@ -4,39 +4,40 @@ * 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 */ /// CloudCdnNamespaceConfig : CDN configuration for a given namespace. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct CloudCdnNamespaceConfig { - #[serde(rename = "auth_type")] - pub auth_type: crate::models::CloudCdnAuthType, - /// A list of CDN authenticated users for a given namespace. - #[serde(rename = "auth_user_list")] - pub auth_user_list: Vec, - /// A list of CDN domains for a given namespace. - #[serde(rename = "domains")] - pub domains: Vec, - /// Whether or not to allow users to connect to the given namespace via domain name. - #[serde(rename = "enable_domain_public_auth")] - pub enable_domain_public_auth: bool, + #[serde(rename = "auth_type")] + pub auth_type: crate::models::CloudCdnAuthType, + /// A list of CDN authenticated users for a given namespace. + #[serde(rename = "auth_user_list")] + pub auth_user_list: Vec, + /// A list of CDN domains for a given namespace. + #[serde(rename = "domains")] + pub domains: Vec, + /// Whether or not to allow users to connect to the given namespace via domain name. + #[serde(rename = "enable_domain_public_auth")] + pub enable_domain_public_auth: bool, } impl CloudCdnNamespaceConfig { - /// CDN configuration for a given namespace. - pub fn new(auth_type: crate::models::CloudCdnAuthType, auth_user_list: Vec, domains: Vec, enable_domain_public_auth: bool) -> CloudCdnNamespaceConfig { - CloudCdnNamespaceConfig { - auth_type, - auth_user_list, - domains, - enable_domain_public_auth, - } - } + /// CDN configuration for a given namespace. + pub fn new( + auth_type: crate::models::CloudCdnAuthType, + auth_user_list: Vec, + domains: Vec, + enable_domain_public_auth: bool, + ) -> CloudCdnNamespaceConfig { + CloudCdnNamespaceConfig { + auth_type, + auth_user_list, + domains, + enable_domain_public_auth, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_cdn_namespace_domain.rs b/sdks/full/rust/src/models/cloud_cdn_namespace_domain.rs index db81a282e7..f19b425709 100644 --- a/sdks/full/rust/src/models/cloud_cdn_namespace_domain.rs +++ b/sdks/full/rust/src/models/cloud_cdn_namespace_domain.rs @@ -4,41 +4,43 @@ * 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 */ /// CloudCdnNamespaceDomain : A CDN domain for a given namespace. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct CloudCdnNamespaceDomain { - /// RFC3339 timestamp - #[serde(rename = "create_ts")] - pub create_ts: String, - /// A valid domain name (no protocol). - #[serde(rename = "domain")] - pub domain: String, - #[serde(rename = "verification_errors")] - pub verification_errors: Vec, - #[serde(rename = "verification_method")] - pub verification_method: Box, - #[serde(rename = "verification_status")] - pub verification_status: crate::models::CloudCdnNamespaceDomainVerificationStatus, + /// RFC3339 timestamp + #[serde(rename = "create_ts")] + pub create_ts: String, + /// A valid domain name (no protocol). + #[serde(rename = "domain")] + pub domain: String, + #[serde(rename = "verification_errors")] + pub verification_errors: Vec, + #[serde(rename = "verification_method")] + pub verification_method: Box, + #[serde(rename = "verification_status")] + pub verification_status: crate::models::CloudCdnNamespaceDomainVerificationStatus, } impl CloudCdnNamespaceDomain { - /// A CDN domain for a given namespace. - pub fn new(create_ts: String, domain: String, verification_errors: Vec, verification_method: crate::models::CloudCdnNamespaceDomainVerificationMethod, verification_status: crate::models::CloudCdnNamespaceDomainVerificationStatus) -> CloudCdnNamespaceDomain { - CloudCdnNamespaceDomain { - create_ts, - domain, - verification_errors, - verification_method: Box::new(verification_method), - verification_status, - } - } + /// A CDN domain for a given namespace. + pub fn new( + create_ts: String, + domain: String, + verification_errors: Vec, + verification_method: crate::models::CloudCdnNamespaceDomainVerificationMethod, + verification_status: crate::models::CloudCdnNamespaceDomainVerificationStatus, + ) -> CloudCdnNamespaceDomain { + CloudCdnNamespaceDomain { + create_ts, + domain, + verification_errors, + verification_method: Box::new(verification_method), + verification_status, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_cdn_namespace_domain_verification_method.rs b/sdks/full/rust/src/models/cloud_cdn_namespace_domain_verification_method.rs index b6dfced487..0d2b113286 100644 --- a/sdks/full/rust/src/models/cloud_cdn_namespace_domain_verification_method.rs +++ b/sdks/full/rust/src/models/cloud_cdn_namespace_domain_verification_method.rs @@ -4,30 +4,26 @@ * 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 */ /// CloudCdnNamespaceDomainVerificationMethod : A union representing the verification method used for this CDN domain. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct CloudCdnNamespaceDomainVerificationMethod { - #[serde(rename = "http", skip_serializing_if = "Option::is_none")] - pub http: Option>, - #[serde(rename = "invalid", skip_serializing_if = "Option::is_none")] - pub invalid: Option, + #[serde(rename = "http", skip_serializing_if = "Option::is_none")] + pub http: Option>, + #[serde(rename = "invalid", skip_serializing_if = "Option::is_none")] + pub invalid: Option, } impl CloudCdnNamespaceDomainVerificationMethod { - /// A union representing the verification method used for this CDN domain. - pub fn new() -> CloudCdnNamespaceDomainVerificationMethod { - CloudCdnNamespaceDomainVerificationMethod { - http: None, - invalid: None, - } - } + /// A union representing the verification method used for this CDN domain. + pub fn new() -> CloudCdnNamespaceDomainVerificationMethod { + CloudCdnNamespaceDomainVerificationMethod { + http: None, + invalid: None, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_cdn_namespace_domain_verification_method_http.rs b/sdks/full/rust/src/models/cloud_cdn_namespace_domain_verification_method_http.rs index 2e382e2dea..748a818f3d 100644 --- a/sdks/full/rust/src/models/cloud_cdn_namespace_domain_verification_method_http.rs +++ b/sdks/full/rust/src/models/cloud_cdn_namespace_domain_verification_method_http.rs @@ -4,25 +4,18 @@ * 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 CloudCdnNamespaceDomainVerificationMethodHttp { - #[serde(rename = "cname_record")] - pub cname_record: String, + #[serde(rename = "cname_record")] + pub cname_record: String, } impl CloudCdnNamespaceDomainVerificationMethodHttp { - pub fn new(cname_record: String) -> CloudCdnNamespaceDomainVerificationMethodHttp { - CloudCdnNamespaceDomainVerificationMethodHttp { - cname_record, - } - } + pub fn new(cname_record: String) -> CloudCdnNamespaceDomainVerificationMethodHttp { + CloudCdnNamespaceDomainVerificationMethodHttp { cname_record } + } } - - diff --git a/sdks/full/rust/src/models/cloud_cdn_namespace_domain_verification_status.rs b/sdks/full/rust/src/models/cloud_cdn_namespace_domain_verification_status.rs index c76e43bf9a..e99b8fec85 100644 --- a/sdks/full/rust/src/models/cloud_cdn_namespace_domain_verification_status.rs +++ b/sdks/full/rust/src/models/cloud_cdn_namespace_domain_verification_status.rs @@ -4,7 +4,7 @@ * 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 */ @@ -13,31 +13,26 @@ /// A value denoting the status of a CDN domain's verification status. #[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] pub enum CloudCdnNamespaceDomainVerificationStatus { - #[serde(rename = "active")] - Active, - #[serde(rename = "pending")] - Pending, - #[serde(rename = "failed")] - Failed, - + #[serde(rename = "active")] + Active, + #[serde(rename = "pending")] + Pending, + #[serde(rename = "failed")] + Failed, } impl ToString for CloudCdnNamespaceDomainVerificationStatus { - fn to_string(&self) -> String { - match self { - Self::Active => String::from("active"), - Self::Pending => String::from("pending"), - Self::Failed => String::from("failed"), - } - } + fn to_string(&self) -> String { + match self { + Self::Active => String::from("active"), + Self::Pending => String::from("pending"), + Self::Failed => String::from("failed"), + } + } } impl Default for CloudCdnNamespaceDomainVerificationStatus { - fn default() -> CloudCdnNamespaceDomainVerificationStatus { - Self::Active - } + fn default() -> CloudCdnNamespaceDomainVerificationStatus { + Self::Active + } } - - - - diff --git a/sdks/full/rust/src/models/cloud_cdn_site_summary.rs b/sdks/full/rust/src/models/cloud_cdn_site_summary.rs index 15f0418c57..c1f81da4f4 100644 --- a/sdks/full/rust/src/models/cloud_cdn_site_summary.rs +++ b/sdks/full/rust/src/models/cloud_cdn_site_summary.rs @@ -4,46 +4,49 @@ * 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 */ /// CloudCdnSiteSummary : A CDN site summary. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct CloudCdnSiteSummary { - /// Whether or not this site has completely been uploaded. - #[serde(rename = "complete")] - pub complete: bool, - /// Unsigned 64 bit integer. - #[serde(rename = "content_length")] - pub content_length: i64, - /// RFC3339 timestamp - #[serde(rename = "create_ts")] - pub create_ts: String, - /// Represent a resource's readable display name. - #[serde(rename = "display_name")] - pub display_name: String, - #[serde(rename = "site_id")] - pub site_id: uuid::Uuid, - #[serde(rename = "upload_id")] - pub upload_id: uuid::Uuid, + /// Whether or not this site has completely been uploaded. + #[serde(rename = "complete")] + pub complete: bool, + /// Unsigned 64 bit integer. + #[serde(rename = "content_length")] + pub content_length: i64, + /// RFC3339 timestamp + #[serde(rename = "create_ts")] + pub create_ts: String, + /// Represent a resource's readable display name. + #[serde(rename = "display_name")] + pub display_name: String, + #[serde(rename = "site_id")] + pub site_id: uuid::Uuid, + #[serde(rename = "upload_id")] + pub upload_id: uuid::Uuid, } impl CloudCdnSiteSummary { - /// A CDN site summary. - pub fn new(complete: bool, content_length: i64, create_ts: String, display_name: String, site_id: uuid::Uuid, upload_id: uuid::Uuid) -> CloudCdnSiteSummary { - CloudCdnSiteSummary { - complete, - content_length, - create_ts, - display_name, - site_id, - upload_id, - } - } + /// A CDN site summary. + pub fn new( + complete: bool, + content_length: i64, + create_ts: String, + display_name: String, + site_id: uuid::Uuid, + upload_id: uuid::Uuid, + ) -> CloudCdnSiteSummary { + CloudCdnSiteSummary { + complete, + content_length, + create_ts, + display_name, + site_id, + upload_id, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_custom_avatar_summary.rs b/sdks/full/rust/src/models/cloud_custom_avatar_summary.rs index e3716280da..ae427a4833 100644 --- a/sdks/full/rust/src/models/cloud_custom_avatar_summary.rs +++ b/sdks/full/rust/src/models/cloud_custom_avatar_summary.rs @@ -4,47 +4,49 @@ * 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 */ /// CloudCustomAvatarSummary : A custom avatar summary. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct CloudCustomAvatarSummary { - /// Whether or not this custom avatar has completely been uploaded. - #[serde(rename = "complete")] - pub complete: bool, - /// Unsigned 64 bit integer. - #[serde(rename = "content_length")] - pub content_length: i64, - /// RFC3339 timestamp - #[serde(rename = "create_ts")] - pub create_ts: String, - /// Represent a resource's readable display name. - #[serde(rename = "display_name")] - pub display_name: String, - #[serde(rename = "upload_id")] - pub upload_id: uuid::Uuid, - /// The URL of this custom avatar image. Only present if upload is complete. - #[serde(rename = "url", skip_serializing_if = "Option::is_none")] - pub url: Option, + /// Whether or not this custom avatar has completely been uploaded. + #[serde(rename = "complete")] + pub complete: bool, + /// Unsigned 64 bit integer. + #[serde(rename = "content_length")] + pub content_length: i64, + /// RFC3339 timestamp + #[serde(rename = "create_ts")] + pub create_ts: String, + /// Represent a resource's readable display name. + #[serde(rename = "display_name")] + pub display_name: String, + #[serde(rename = "upload_id")] + pub upload_id: uuid::Uuid, + /// The URL of this custom avatar image. Only present if upload is complete. + #[serde(rename = "url", skip_serializing_if = "Option::is_none")] + pub url: Option, } impl CloudCustomAvatarSummary { - /// A custom avatar summary. - pub fn new(complete: bool, content_length: i64, create_ts: String, display_name: String, upload_id: uuid::Uuid) -> CloudCustomAvatarSummary { - CloudCustomAvatarSummary { - complete, - content_length, - create_ts, - display_name, - upload_id, - url: None, - } - } + /// A custom avatar summary. + pub fn new( + complete: bool, + content_length: i64, + create_ts: String, + display_name: String, + upload_id: uuid::Uuid, + ) -> CloudCustomAvatarSummary { + CloudCustomAvatarSummary { + complete, + content_length, + create_ts, + display_name, + upload_id, + url: None, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_devices_complete_device_link_request.rs b/sdks/full/rust/src/models/cloud_devices_complete_device_link_request.rs index be88fe67ec..9d9567e981 100644 --- a/sdks/full/rust/src/models/cloud_devices_complete_device_link_request.rs +++ b/sdks/full/rust/src/models/cloud_devices_complete_device_link_request.rs @@ -4,29 +4,27 @@ * 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 CloudDevicesCompleteDeviceLinkRequest { - /// Documentation at https://jwt.io/ - #[serde(rename = "device_link_token")] - pub device_link_token: String, - #[serde(rename = "game_id")] - pub game_id: uuid::Uuid, + /// Documentation at https://jwt.io/ + #[serde(rename = "device_link_token")] + pub device_link_token: String, + #[serde(rename = "game_id")] + pub game_id: uuid::Uuid, } impl CloudDevicesCompleteDeviceLinkRequest { - pub fn new(device_link_token: String, game_id: uuid::Uuid) -> CloudDevicesCompleteDeviceLinkRequest { - CloudDevicesCompleteDeviceLinkRequest { - device_link_token, - game_id, - } - } + pub fn new( + device_link_token: String, + game_id: uuid::Uuid, + ) -> CloudDevicesCompleteDeviceLinkRequest { + CloudDevicesCompleteDeviceLinkRequest { + device_link_token, + game_id, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_devices_get_device_link_response.rs b/sdks/full/rust/src/models/cloud_devices_get_device_link_response.rs index 38a1f79d55..ed0dd748b0 100644 --- a/sdks/full/rust/src/models/cloud_devices_get_device_link_response.rs +++ b/sdks/full/rust/src/models/cloud_devices_get_device_link_response.rs @@ -4,28 +4,23 @@ * 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 CloudDevicesGetDeviceLinkResponse { - #[serde(rename = "cloud_token", skip_serializing_if = "Option::is_none")] - pub cloud_token: Option, - #[serde(rename = "watch")] - pub watch: Box, + #[serde(rename = "cloud_token", skip_serializing_if = "Option::is_none")] + pub cloud_token: Option, + #[serde(rename = "watch")] + pub watch: Box, } impl CloudDevicesGetDeviceLinkResponse { - pub fn new(watch: crate::models::WatchResponse) -> CloudDevicesGetDeviceLinkResponse { - CloudDevicesGetDeviceLinkResponse { - cloud_token: None, - watch: Box::new(watch), - } - } + pub fn new(watch: crate::models::WatchResponse) -> CloudDevicesGetDeviceLinkResponse { + CloudDevicesGetDeviceLinkResponse { + cloud_token: None, + watch: Box::new(watch), + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_devices_prepare_device_link_response.rs b/sdks/full/rust/src/models/cloud_devices_prepare_device_link_response.rs index 3e33ef2133..3615140d36 100644 --- a/sdks/full/rust/src/models/cloud_devices_prepare_device_link_response.rs +++ b/sdks/full/rust/src/models/cloud_devices_prepare_device_link_response.rs @@ -4,31 +4,30 @@ * 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 CloudDevicesPrepareDeviceLinkResponse { - #[serde(rename = "device_link_id")] - pub device_link_id: uuid::Uuid, - #[serde(rename = "device_link_token")] - pub device_link_token: String, - #[serde(rename = "device_link_url")] - pub device_link_url: String, + #[serde(rename = "device_link_id")] + pub device_link_id: uuid::Uuid, + #[serde(rename = "device_link_token")] + pub device_link_token: String, + #[serde(rename = "device_link_url")] + pub device_link_url: String, } impl CloudDevicesPrepareDeviceLinkResponse { - pub fn new(device_link_id: uuid::Uuid, device_link_token: String, device_link_url: String) -> CloudDevicesPrepareDeviceLinkResponse { - CloudDevicesPrepareDeviceLinkResponse { - device_link_id, - device_link_token, - device_link_url, - } - } + pub fn new( + device_link_id: uuid::Uuid, + device_link_token: String, + device_link_url: String, + ) -> CloudDevicesPrepareDeviceLinkResponse { + CloudDevicesPrepareDeviceLinkResponse { + device_link_id, + device_link_token, + device_link_url, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_game_full.rs b/sdks/full/rust/src/models/cloud_game_full.rs index a4ffd17835..7b58a6a1eb 100644 --- a/sdks/full/rust/src/models/cloud_game_full.rs +++ b/sdks/full/rust/src/models/cloud_game_full.rs @@ -4,66 +4,72 @@ * 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 */ /// CloudGameFull : A full game. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct CloudGameFull { - /// A list of region summaries. - #[serde(rename = "available_regions")] - pub available_regions: Vec, - /// The URL of this game's banner image. - #[serde(rename = "banner_url", skip_serializing_if = "Option::is_none")] - pub banner_url: Option, - /// RFC3339 timestamp - #[serde(rename = "create_ts")] - pub create_ts: String, - #[serde(rename = "developer_group_id")] - pub developer_group_id: uuid::Uuid, - /// Represent a resource's readable display name. - #[serde(rename = "display_name")] - pub display_name: String, - #[serde(rename = "game_id")] - pub game_id: uuid::Uuid, - /// The URL of this game's logo image. - #[serde(rename = "logo_url", skip_serializing_if = "Option::is_none")] - pub logo_url: Option, - /// A human readable short identifier used to references resources. Different than a `rivet.common#Uuid` because this is intended to be human readable. Different than `rivet.common#DisplayName` because this should not include special characters and be short. - #[serde(rename = "name_id")] - pub name_id: String, - /// A list of namespace summaries. - #[serde(rename = "namespaces")] - pub namespaces: Vec, - /// Unsigned 32 bit integer. - #[serde(rename = "total_player_count")] - pub total_player_count: i32, - /// A list of version summaries. - #[serde(rename = "versions")] - pub versions: Vec, + /// A list of region summaries. + #[serde(rename = "available_regions")] + pub available_regions: Vec, + /// The URL of this game's banner image. + #[serde(rename = "banner_url", skip_serializing_if = "Option::is_none")] + pub banner_url: Option, + /// RFC3339 timestamp + #[serde(rename = "create_ts")] + pub create_ts: String, + #[serde(rename = "developer_group_id")] + pub developer_group_id: uuid::Uuid, + /// Represent a resource's readable display name. + #[serde(rename = "display_name")] + pub display_name: String, + #[serde(rename = "game_id")] + pub game_id: uuid::Uuid, + /// The URL of this game's logo image. + #[serde(rename = "logo_url", skip_serializing_if = "Option::is_none")] + pub logo_url: Option, + /// A human readable short identifier used to references resources. Different than a `rivet.common#Uuid` because this is intended to be human readable. Different than `rivet.common#DisplayName` because this should not include special characters and be short. + #[serde(rename = "name_id")] + pub name_id: String, + /// A list of namespace summaries. + #[serde(rename = "namespaces")] + pub namespaces: Vec, + /// Unsigned 32 bit integer. + #[serde(rename = "total_player_count")] + pub total_player_count: i32, + /// A list of version summaries. + #[serde(rename = "versions")] + pub versions: Vec, } impl CloudGameFull { - /// A full game. - pub fn new(available_regions: Vec, create_ts: String, developer_group_id: uuid::Uuid, display_name: String, game_id: uuid::Uuid, name_id: String, namespaces: Vec, total_player_count: i32, versions: Vec) -> CloudGameFull { - CloudGameFull { - available_regions, - banner_url: None, - create_ts, - developer_group_id, - display_name, - game_id, - logo_url: None, - name_id, - namespaces, - total_player_count, - versions, - } - } + /// A full game. + pub fn new( + available_regions: Vec, + create_ts: String, + developer_group_id: uuid::Uuid, + display_name: String, + game_id: uuid::Uuid, + name_id: String, + namespaces: Vec, + total_player_count: i32, + versions: Vec, + ) -> CloudGameFull { + CloudGameFull { + available_regions, + banner_url: None, + create_ts, + developer_group_id, + display_name, + game_id, + logo_url: None, + name_id, + namespaces, + total_player_count, + versions, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_game_lobby_expenses.rs b/sdks/full/rust/src/models/cloud_game_lobby_expenses.rs index 8fd76e7e4e..0e9213b689 100644 --- a/sdks/full/rust/src/models/cloud_game_lobby_expenses.rs +++ b/sdks/full/rust/src/models/cloud_game_lobby_expenses.rs @@ -4,35 +4,35 @@ * 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 */ /// CloudGameLobbyExpenses : Game lobby expenses. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct CloudGameLobbyExpenses { - /// A list of multiple region tier expenses. - #[serde(rename = "expenses")] - pub expenses: Vec, - #[serde(rename = "game")] - pub game: Box, - /// A list of namespace summaries. - #[serde(rename = "namespaces")] - pub namespaces: Vec, + /// A list of multiple region tier expenses. + #[serde(rename = "expenses")] + pub expenses: Vec, + #[serde(rename = "game")] + pub game: Box, + /// A list of namespace summaries. + #[serde(rename = "namespaces")] + pub namespaces: Vec, } impl CloudGameLobbyExpenses { - /// Game lobby expenses. - pub fn new(expenses: Vec, game: crate::models::GameHandle, namespaces: Vec) -> CloudGameLobbyExpenses { - CloudGameLobbyExpenses { - expenses, - game: Box::new(game), - namespaces, - } - } + /// Game lobby expenses. + pub fn new( + expenses: Vec, + game: crate::models::GameHandle, + namespaces: Vec, + ) -> CloudGameLobbyExpenses { + CloudGameLobbyExpenses { + expenses, + game: Box::new(game), + namespaces, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_games_build_compression.rs b/sdks/full/rust/src/models/cloud_games_build_compression.rs index 9980cc9cb9..9cf09b955b 100644 --- a/sdks/full/rust/src/models/cloud_games_build_compression.rs +++ b/sdks/full/rust/src/models/cloud_games_build_compression.rs @@ -4,36 +4,30 @@ * 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 CloudGamesBuildCompression { - #[serde(rename = "none")] - None, - #[serde(rename = "lz4")] - Lz4, - + #[serde(rename = "none")] + None, + #[serde(rename = "lz4")] + Lz4, } impl ToString for CloudGamesBuildCompression { - fn to_string(&self) -> String { - match self { - Self::None => String::from("none"), - Self::Lz4 => String::from("lz4"), - } - } + fn to_string(&self) -> String { + match self { + Self::None => String::from("none"), + Self::Lz4 => String::from("lz4"), + } + } } impl Default for CloudGamesBuildCompression { - fn default() -> CloudGamesBuildCompression { - Self::None - } + fn default() -> CloudGamesBuildCompression { + Self::None + } } - - - - diff --git a/sdks/full/rust/src/models/cloud_games_build_kind.rs b/sdks/full/rust/src/models/cloud_games_build_kind.rs index 892db37414..4afc78adae 100644 --- a/sdks/full/rust/src/models/cloud_games_build_kind.rs +++ b/sdks/full/rust/src/models/cloud_games_build_kind.rs @@ -4,36 +4,30 @@ * 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 CloudGamesBuildKind { - #[serde(rename = "docker_image")] - DockerImage, - #[serde(rename = "oci_bundle")] - OciBundle, - + #[serde(rename = "docker_image")] + DockerImage, + #[serde(rename = "oci_bundle")] + OciBundle, } impl ToString for CloudGamesBuildKind { - fn to_string(&self) -> String { - match self { - Self::DockerImage => String::from("docker_image"), - Self::OciBundle => String::from("oci_bundle"), - } - } + fn to_string(&self) -> String { + match self { + Self::DockerImage => String::from("docker_image"), + Self::OciBundle => String::from("oci_bundle"), + } + } } impl Default for CloudGamesBuildKind { - fn default() -> CloudGamesBuildKind { - Self::DockerImage - } + fn default() -> CloudGamesBuildKind { + Self::DockerImage + } } - - - - diff --git a/sdks/full/rust/src/models/cloud_games_create_cloud_token_response.rs b/sdks/full/rust/src/models/cloud_games_create_cloud_token_response.rs index d6264302b4..c9cebaab4e 100644 --- a/sdks/full/rust/src/models/cloud_games_create_cloud_token_response.rs +++ b/sdks/full/rust/src/models/cloud_games_create_cloud_token_response.rs @@ -4,26 +4,19 @@ * 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 CloudGamesCreateCloudTokenResponse { - /// A JSON Web Token. Slightly modified to include a description prefix and use Protobufs of JSON. - #[serde(rename = "token")] - pub token: String, + /// A JSON Web Token. Slightly modified to include a description prefix and use Protobufs of JSON. + #[serde(rename = "token")] + pub token: String, } impl CloudGamesCreateCloudTokenResponse { - pub fn new(token: String) -> CloudGamesCreateCloudTokenResponse { - CloudGamesCreateCloudTokenResponse { - token, - } - } + pub fn new(token: String) -> CloudGamesCreateCloudTokenResponse { + CloudGamesCreateCloudTokenResponse { token } + } } - - diff --git a/sdks/full/rust/src/models/cloud_games_create_game_build_request.rs b/sdks/full/rust/src/models/cloud_games_create_game_build_request.rs index b25d286793..2ebbaed054 100644 --- a/sdks/full/rust/src/models/cloud_games_create_game_build_request.rs +++ b/sdks/full/rust/src/models/cloud_games_create_game_build_request.rs @@ -4,42 +4,41 @@ * 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 CloudGamesCreateGameBuildRequest { - #[serde(rename = "compression", skip_serializing_if = "Option::is_none")] - pub compression: Option, - /// Represent a resource's readable display name. - #[serde(rename = "display_name")] - pub display_name: String, - #[serde(rename = "image_file")] - pub image_file: Box, - /// A tag given to the game build. - #[serde(rename = "image_tag")] - pub image_tag: String, - #[serde(rename = "kind", skip_serializing_if = "Option::is_none")] - pub kind: Option, - #[serde(rename = "multipart_upload", skip_serializing_if = "Option::is_none")] - pub multipart_upload: Option, + #[serde(rename = "compression", skip_serializing_if = "Option::is_none")] + pub compression: Option, + /// Represent a resource's readable display name. + #[serde(rename = "display_name")] + pub display_name: String, + #[serde(rename = "image_file")] + pub image_file: Box, + /// A tag given to the game build. + #[serde(rename = "image_tag")] + pub image_tag: String, + #[serde(rename = "kind", skip_serializing_if = "Option::is_none")] + 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 { - compression: None, - display_name, - image_file: Box::new(image_file), - image_tag, - kind: None, - multipart_upload: None, - } - } + pub fn new( + display_name: String, + image_file: crate::models::UploadPrepareFile, + image_tag: String, + ) -> CloudGamesCreateGameBuildRequest { + CloudGamesCreateGameBuildRequest { + compression: None, + display_name, + image_file: Box::new(image_file), + image_tag, + kind: None, + multipart_upload: None, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_games_create_game_build_response.rs b/sdks/full/rust/src/models/cloud_games_create_game_build_response.rs index bf7ed65cca..607b999323 100644 --- a/sdks/full/rust/src/models/cloud_games_create_game_build_response.rs +++ b/sdks/full/rust/src/models/cloud_games_create_game_build_response.rs @@ -4,34 +4,35 @@ * 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 CloudGamesCreateGameBuildResponse { - #[serde(rename = "build_id")] - pub build_id: uuid::Uuid, - #[serde(rename = "image_presigned_request", skip_serializing_if = "Option::is_none")] - pub image_presigned_request: Option>, - #[serde(rename = "image_presigned_requests", skip_serializing_if = "Option::is_none")] - pub image_presigned_requests: Option>, - #[serde(rename = "upload_id")] - pub upload_id: uuid::Uuid, + #[serde(rename = "build_id")] + pub build_id: uuid::Uuid, + #[serde( + rename = "image_presigned_request", + skip_serializing_if = "Option::is_none" + )] + pub image_presigned_request: Option>, + #[serde( + rename = "image_presigned_requests", + skip_serializing_if = "Option::is_none" + )] + pub image_presigned_requests: Option>, + #[serde(rename = "upload_id")] + pub upload_id: uuid::Uuid, } impl CloudGamesCreateGameBuildResponse { - pub fn new(build_id: uuid::Uuid, upload_id: uuid::Uuid) -> CloudGamesCreateGameBuildResponse { - CloudGamesCreateGameBuildResponse { - build_id, - image_presigned_request: None, - image_presigned_requests: None, - upload_id, - } - } + pub fn new(build_id: uuid::Uuid, upload_id: uuid::Uuid) -> CloudGamesCreateGameBuildResponse { + CloudGamesCreateGameBuildResponse { + build_id, + image_presigned_request: None, + image_presigned_requests: None, + upload_id, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_games_create_game_cdn_site_request.rs b/sdks/full/rust/src/models/cloud_games_create_game_cdn_site_request.rs index 57d52bb0a7..313aee8065 100644 --- a/sdks/full/rust/src/models/cloud_games_create_game_cdn_site_request.rs +++ b/sdks/full/rust/src/models/cloud_games_create_game_cdn_site_request.rs @@ -4,30 +4,28 @@ * 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 CloudGamesCreateGameCdnSiteRequest { - /// Represent a resource's readable display name. - #[serde(rename = "display_name")] - pub display_name: String, - /// A list of files preparing to upload. - #[serde(rename = "files")] - pub files: Vec, + /// Represent a resource's readable display name. + #[serde(rename = "display_name")] + pub display_name: String, + /// A list of files preparing to upload. + #[serde(rename = "files")] + pub files: Vec, } impl CloudGamesCreateGameCdnSiteRequest { - pub fn new(display_name: String, files: Vec) -> CloudGamesCreateGameCdnSiteRequest { - CloudGamesCreateGameCdnSiteRequest { - display_name, - files, - } - } + pub fn new( + display_name: String, + files: Vec, + ) -> CloudGamesCreateGameCdnSiteRequest { + CloudGamesCreateGameCdnSiteRequest { + display_name, + files, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_games_create_game_cdn_site_response.rs b/sdks/full/rust/src/models/cloud_games_create_game_cdn_site_response.rs index 55458bf686..c78123eabc 100644 --- a/sdks/full/rust/src/models/cloud_games_create_game_cdn_site_response.rs +++ b/sdks/full/rust/src/models/cloud_games_create_game_cdn_site_response.rs @@ -4,31 +4,30 @@ * 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 CloudGamesCreateGameCdnSiteResponse { - #[serde(rename = "presigned_requests")] - pub presigned_requests: Vec, - #[serde(rename = "site_id")] - pub site_id: uuid::Uuid, - #[serde(rename = "upload_id")] - pub upload_id: uuid::Uuid, + #[serde(rename = "presigned_requests")] + pub presigned_requests: Vec, + #[serde(rename = "site_id")] + pub site_id: uuid::Uuid, + #[serde(rename = "upload_id")] + pub upload_id: uuid::Uuid, } impl CloudGamesCreateGameCdnSiteResponse { - pub fn new(presigned_requests: Vec, site_id: uuid::Uuid, upload_id: uuid::Uuid) -> CloudGamesCreateGameCdnSiteResponse { - CloudGamesCreateGameCdnSiteResponse { - presigned_requests, - site_id, - upload_id, - } - } + pub fn new( + presigned_requests: Vec, + site_id: uuid::Uuid, + upload_id: uuid::Uuid, + ) -> CloudGamesCreateGameCdnSiteResponse { + CloudGamesCreateGameCdnSiteResponse { + presigned_requests, + site_id, + upload_id, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_games_create_game_request.rs b/sdks/full/rust/src/models/cloud_games_create_game_request.rs index e5fd44a582..5e4d2a651e 100644 --- a/sdks/full/rust/src/models/cloud_games_create_game_request.rs +++ b/sdks/full/rust/src/models/cloud_games_create_game_request.rs @@ -4,33 +4,31 @@ * 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 CloudGamesCreateGameRequest { - #[serde(rename = "developer_group_id")] - pub developer_group_id: uuid::Uuid, - /// Represent a resource's readable display name. - #[serde(rename = "display_name")] - pub display_name: String, - /// A human readable short identifier used to references resources. Different than a `uuid` because this is intended to be human readable. Different than `DisplayName` because this should not include special characters and be short. - #[serde(rename = "name_id", skip_serializing_if = "Option::is_none")] - pub name_id: Option, + #[serde(rename = "developer_group_id")] + pub developer_group_id: uuid::Uuid, + /// Represent a resource's readable display name. + #[serde(rename = "display_name")] + pub display_name: String, + /// A human readable short identifier used to references resources. Different than a `uuid` because this is intended to be human readable. Different than `DisplayName` because this should not include special characters and be short. + #[serde(rename = "name_id", skip_serializing_if = "Option::is_none")] + pub name_id: Option, } impl CloudGamesCreateGameRequest { - pub fn new(developer_group_id: uuid::Uuid, display_name: String) -> CloudGamesCreateGameRequest { - CloudGamesCreateGameRequest { - developer_group_id, - display_name, - name_id: None, - } - } + pub fn new( + developer_group_id: uuid::Uuid, + display_name: String, + ) -> CloudGamesCreateGameRequest { + CloudGamesCreateGameRequest { + developer_group_id, + display_name, + name_id: None, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_games_create_game_response.rs b/sdks/full/rust/src/models/cloud_games_create_game_response.rs index 9cb95bbc78..55865a7004 100644 --- a/sdks/full/rust/src/models/cloud_games_create_game_response.rs +++ b/sdks/full/rust/src/models/cloud_games_create_game_response.rs @@ -4,25 +4,18 @@ * 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 CloudGamesCreateGameResponse { - #[serde(rename = "game_id")] - pub game_id: uuid::Uuid, + #[serde(rename = "game_id")] + pub game_id: uuid::Uuid, } impl CloudGamesCreateGameResponse { - pub fn new(game_id: uuid::Uuid) -> CloudGamesCreateGameResponse { - CloudGamesCreateGameResponse { - game_id, - } - } + pub fn new(game_id: uuid::Uuid) -> CloudGamesCreateGameResponse { + CloudGamesCreateGameResponse { game_id } + } } - - diff --git a/sdks/full/rust/src/models/cloud_games_create_game_version_request.rs b/sdks/full/rust/src/models/cloud_games_create_game_version_request.rs index 0fd1233300..8fe360c142 100644 --- a/sdks/full/rust/src/models/cloud_games_create_game_version_request.rs +++ b/sdks/full/rust/src/models/cloud_games_create_game_version_request.rs @@ -4,29 +4,27 @@ * 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 CloudGamesCreateGameVersionRequest { - #[serde(rename = "config")] - pub config: Box, - /// Represent a resource's readable display name. - #[serde(rename = "display_name")] - pub display_name: String, + #[serde(rename = "config")] + pub config: Box, + /// Represent a resource's readable display name. + #[serde(rename = "display_name")] + pub display_name: String, } impl CloudGamesCreateGameVersionRequest { - pub fn new(config: crate::models::CloudVersionConfig, display_name: String) -> CloudGamesCreateGameVersionRequest { - CloudGamesCreateGameVersionRequest { - config: Box::new(config), - display_name, - } - } + pub fn new( + config: crate::models::CloudVersionConfig, + display_name: String, + ) -> CloudGamesCreateGameVersionRequest { + CloudGamesCreateGameVersionRequest { + config: Box::new(config), + display_name, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_games_create_game_version_response.rs b/sdks/full/rust/src/models/cloud_games_create_game_version_response.rs index fdda808ad3..6faea83e92 100644 --- a/sdks/full/rust/src/models/cloud_games_create_game_version_response.rs +++ b/sdks/full/rust/src/models/cloud_games_create_game_version_response.rs @@ -4,25 +4,18 @@ * 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 CloudGamesCreateGameVersionResponse { - #[serde(rename = "version_id")] - pub version_id: uuid::Uuid, + #[serde(rename = "version_id")] + pub version_id: uuid::Uuid, } impl CloudGamesCreateGameVersionResponse { - pub fn new(version_id: uuid::Uuid) -> CloudGamesCreateGameVersionResponse { - CloudGamesCreateGameVersionResponse { - version_id, - } - } + pub fn new(version_id: uuid::Uuid) -> CloudGamesCreateGameVersionResponse { + CloudGamesCreateGameVersionResponse { version_id } + } } - - diff --git a/sdks/full/rust/src/models/cloud_games_delete_matchmaker_lobby_response.rs b/sdks/full/rust/src/models/cloud_games_delete_matchmaker_lobby_response.rs index d7fa01f123..2a9a1aa711 100644 --- a/sdks/full/rust/src/models/cloud_games_delete_matchmaker_lobby_response.rs +++ b/sdks/full/rust/src/models/cloud_games_delete_matchmaker_lobby_response.rs @@ -4,26 +4,19 @@ * 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 CloudGamesDeleteMatchmakerLobbyResponse { - /// Whether or not the lobby was successfully stopped. - #[serde(rename = "did_remove")] - pub did_remove: bool, + /// Whether or not the lobby was successfully stopped. + #[serde(rename = "did_remove")] + pub did_remove: bool, } impl CloudGamesDeleteMatchmakerLobbyResponse { - pub fn new(did_remove: bool) -> CloudGamesDeleteMatchmakerLobbyResponse { - CloudGamesDeleteMatchmakerLobbyResponse { - did_remove, - } - } + pub fn new(did_remove: bool) -> CloudGamesDeleteMatchmakerLobbyResponse { + CloudGamesDeleteMatchmakerLobbyResponse { did_remove } + } } - - diff --git a/sdks/full/rust/src/models/cloud_games_export_lobby_logs_request.rs b/sdks/full/rust/src/models/cloud_games_export_lobby_logs_request.rs index 6f095bf46c..1bcbea9fe2 100644 --- a/sdks/full/rust/src/models/cloud_games_export_lobby_logs_request.rs +++ b/sdks/full/rust/src/models/cloud_games_export_lobby_logs_request.rs @@ -4,25 +4,18 @@ * 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 CloudGamesExportLobbyLogsRequest { - #[serde(rename = "stream")] - pub stream: crate::models::CloudGamesLogStream, + #[serde(rename = "stream")] + pub stream: crate::models::CloudGamesLogStream, } impl CloudGamesExportLobbyLogsRequest { - pub fn new(stream: crate::models::CloudGamesLogStream) -> CloudGamesExportLobbyLogsRequest { - CloudGamesExportLobbyLogsRequest { - stream, - } - } + pub fn new(stream: crate::models::CloudGamesLogStream) -> CloudGamesExportLobbyLogsRequest { + CloudGamesExportLobbyLogsRequest { stream } + } } - - diff --git a/sdks/full/rust/src/models/cloud_games_export_lobby_logs_response.rs b/sdks/full/rust/src/models/cloud_games_export_lobby_logs_response.rs index 3d37548c73..537962e6a1 100644 --- a/sdks/full/rust/src/models/cloud_games_export_lobby_logs_response.rs +++ b/sdks/full/rust/src/models/cloud_games_export_lobby_logs_response.rs @@ -4,26 +4,19 @@ * 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 CloudGamesExportLobbyLogsResponse { - /// The URL to a CSV file for the given lobby history. - #[serde(rename = "url")] - pub url: String, + /// The URL to a CSV file for the given lobby history. + #[serde(rename = "url")] + pub url: String, } impl CloudGamesExportLobbyLogsResponse { - pub fn new(url: String) -> CloudGamesExportLobbyLogsResponse { - CloudGamesExportLobbyLogsResponse { - url, - } - } + pub fn new(url: String) -> CloudGamesExportLobbyLogsResponse { + CloudGamesExportLobbyLogsResponse { url } + } } - - diff --git a/sdks/full/rust/src/models/cloud_games_export_matchmaker_lobby_history_request.rs b/sdks/full/rust/src/models/cloud_games_export_matchmaker_lobby_history_request.rs index 87efdd49d2..730d41d3f8 100644 --- a/sdks/full/rust/src/models/cloud_games_export_matchmaker_lobby_history_request.rs +++ b/sdks/full/rust/src/models/cloud_games_export_matchmaker_lobby_history_request.rs @@ -4,30 +4,25 @@ * 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 CloudGamesExportMatchmakerLobbyHistoryRequest { - /// Unsigned 64 bit integer. - #[serde(rename = "query_end")] - pub query_end: i64, - /// Unsigned 64 bit integer. - #[serde(rename = "query_start")] - pub query_start: i64, + /// Unsigned 64 bit integer. + #[serde(rename = "query_end")] + pub query_end: i64, + /// Unsigned 64 bit integer. + #[serde(rename = "query_start")] + pub query_start: i64, } impl CloudGamesExportMatchmakerLobbyHistoryRequest { - pub fn new(query_end: i64, query_start: i64) -> CloudGamesExportMatchmakerLobbyHistoryRequest { - CloudGamesExportMatchmakerLobbyHistoryRequest { - query_end, - query_start, - } - } + pub fn new(query_end: i64, query_start: i64) -> CloudGamesExportMatchmakerLobbyHistoryRequest { + CloudGamesExportMatchmakerLobbyHistoryRequest { + query_end, + query_start, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_games_export_matchmaker_lobby_history_response.rs b/sdks/full/rust/src/models/cloud_games_export_matchmaker_lobby_history_response.rs index a526adcc88..b6f7026b4e 100644 --- a/sdks/full/rust/src/models/cloud_games_export_matchmaker_lobby_history_response.rs +++ b/sdks/full/rust/src/models/cloud_games_export_matchmaker_lobby_history_response.rs @@ -4,26 +4,19 @@ * 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 CloudGamesExportMatchmakerLobbyHistoryResponse { - /// The URL to a CSV file for the given lobby history. - #[serde(rename = "url")] - pub url: String, + /// The URL to a CSV file for the given lobby history. + #[serde(rename = "url")] + pub url: String, } impl CloudGamesExportMatchmakerLobbyHistoryResponse { - pub fn new(url: String) -> CloudGamesExportMatchmakerLobbyHistoryResponse { - CloudGamesExportMatchmakerLobbyHistoryResponse { - url, - } - } + pub fn new(url: String) -> CloudGamesExportMatchmakerLobbyHistoryResponse { + CloudGamesExportMatchmakerLobbyHistoryResponse { url } + } } - - diff --git a/sdks/full/rust/src/models/cloud_games_game_banner_upload_prepare_request.rs b/sdks/full/rust/src/models/cloud_games_game_banner_upload_prepare_request.rs index 46eb2ebf13..d4cfa4066d 100644 --- a/sdks/full/rust/src/models/cloud_games_game_banner_upload_prepare_request.rs +++ b/sdks/full/rust/src/models/cloud_games_game_banner_upload_prepare_request.rs @@ -4,34 +4,29 @@ * 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 CloudGamesGameBannerUploadPrepareRequest { - /// Unsigned 64 bit integer. - #[serde(rename = "content_length")] - pub content_length: i64, - /// The MIME type of the game banner. - #[serde(rename = "mime", skip_serializing_if = "Option::is_none")] - pub mime: Option, - /// The path/filename of the game banner. - #[serde(rename = "path")] - pub path: String, + /// Unsigned 64 bit integer. + #[serde(rename = "content_length")] + pub content_length: i64, + /// The MIME type of the game banner. + #[serde(rename = "mime", skip_serializing_if = "Option::is_none")] + pub mime: Option, + /// The path/filename of the game banner. + #[serde(rename = "path")] + pub path: String, } impl CloudGamesGameBannerUploadPrepareRequest { - pub fn new(content_length: i64, path: String) -> CloudGamesGameBannerUploadPrepareRequest { - CloudGamesGameBannerUploadPrepareRequest { - content_length, - mime: None, - path, - } - } + pub fn new(content_length: i64, path: String) -> CloudGamesGameBannerUploadPrepareRequest { + CloudGamesGameBannerUploadPrepareRequest { + content_length, + mime: None, + path, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_games_game_banner_upload_prepare_response.rs b/sdks/full/rust/src/models/cloud_games_game_banner_upload_prepare_response.rs index f93a11279d..81449fb91b 100644 --- a/sdks/full/rust/src/models/cloud_games_game_banner_upload_prepare_response.rs +++ b/sdks/full/rust/src/models/cloud_games_game_banner_upload_prepare_response.rs @@ -4,28 +4,26 @@ * 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 CloudGamesGameBannerUploadPrepareResponse { - #[serde(rename = "presigned_request")] - pub presigned_request: Box, - #[serde(rename = "upload_id")] - pub upload_id: uuid::Uuid, + #[serde(rename = "presigned_request")] + pub presigned_request: Box, + #[serde(rename = "upload_id")] + pub upload_id: uuid::Uuid, } impl CloudGamesGameBannerUploadPrepareResponse { - pub fn new(presigned_request: crate::models::UploadPresignedRequest, upload_id: uuid::Uuid) -> CloudGamesGameBannerUploadPrepareResponse { - CloudGamesGameBannerUploadPrepareResponse { - presigned_request: Box::new(presigned_request), - upload_id, - } - } + pub fn new( + presigned_request: crate::models::UploadPresignedRequest, + upload_id: uuid::Uuid, + ) -> CloudGamesGameBannerUploadPrepareResponse { + CloudGamesGameBannerUploadPrepareResponse { + presigned_request: Box::new(presigned_request), + upload_id, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_games_game_logo_upload_prepare_request.rs b/sdks/full/rust/src/models/cloud_games_game_logo_upload_prepare_request.rs index fb54a8713c..655c25fddb 100644 --- a/sdks/full/rust/src/models/cloud_games_game_logo_upload_prepare_request.rs +++ b/sdks/full/rust/src/models/cloud_games_game_logo_upload_prepare_request.rs @@ -4,34 +4,29 @@ * 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 CloudGamesGameLogoUploadPrepareRequest { - /// Unsigned 64 bit integer. - #[serde(rename = "content_length")] - pub content_length: i64, - /// The MIME type of the game logo. - #[serde(rename = "mime", skip_serializing_if = "Option::is_none")] - pub mime: Option, - /// The path/filename of the game logo. - #[serde(rename = "path")] - pub path: String, + /// Unsigned 64 bit integer. + #[serde(rename = "content_length")] + pub content_length: i64, + /// The MIME type of the game logo. + #[serde(rename = "mime", skip_serializing_if = "Option::is_none")] + pub mime: Option, + /// The path/filename of the game logo. + #[serde(rename = "path")] + pub path: String, } impl CloudGamesGameLogoUploadPrepareRequest { - pub fn new(content_length: i64, path: String) -> CloudGamesGameLogoUploadPrepareRequest { - CloudGamesGameLogoUploadPrepareRequest { - content_length, - mime: None, - path, - } - } + pub fn new(content_length: i64, path: String) -> CloudGamesGameLogoUploadPrepareRequest { + CloudGamesGameLogoUploadPrepareRequest { + content_length, + mime: None, + path, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_games_game_logo_upload_prepare_response.rs b/sdks/full/rust/src/models/cloud_games_game_logo_upload_prepare_response.rs index 9030027d3f..a873dfda35 100644 --- a/sdks/full/rust/src/models/cloud_games_game_logo_upload_prepare_response.rs +++ b/sdks/full/rust/src/models/cloud_games_game_logo_upload_prepare_response.rs @@ -4,28 +4,26 @@ * 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 CloudGamesGameLogoUploadPrepareResponse { - #[serde(rename = "presigned_request")] - pub presigned_request: Box, - #[serde(rename = "upload_id")] - pub upload_id: uuid::Uuid, + #[serde(rename = "presigned_request")] + pub presigned_request: Box, + #[serde(rename = "upload_id")] + pub upload_id: uuid::Uuid, } impl CloudGamesGameLogoUploadPrepareResponse { - pub fn new(presigned_request: crate::models::UploadPresignedRequest, upload_id: uuid::Uuid) -> CloudGamesGameLogoUploadPrepareResponse { - CloudGamesGameLogoUploadPrepareResponse { - presigned_request: Box::new(presigned_request), - upload_id, - } - } + pub fn new( + presigned_request: crate::models::UploadPresignedRequest, + upload_id: uuid::Uuid, + ) -> CloudGamesGameLogoUploadPrepareResponse { + CloudGamesGameLogoUploadPrepareResponse { + presigned_request: Box::new(presigned_request), + upload_id, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_games_get_game_by_id_response.rs b/sdks/full/rust/src/models/cloud_games_get_game_by_id_response.rs index 7b34a45026..02eb27ff5d 100644 --- a/sdks/full/rust/src/models/cloud_games_get_game_by_id_response.rs +++ b/sdks/full/rust/src/models/cloud_games_get_game_by_id_response.rs @@ -4,28 +4,26 @@ * 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 CloudGamesGetGameByIdResponse { - #[serde(rename = "game")] - pub game: Box, - #[serde(rename = "watch")] - pub watch: Box, + #[serde(rename = "game")] + pub game: Box, + #[serde(rename = "watch")] + pub watch: Box, } impl CloudGamesGetGameByIdResponse { - pub fn new(game: crate::models::CloudGameFull, watch: crate::models::WatchResponse) -> CloudGamesGetGameByIdResponse { - CloudGamesGetGameByIdResponse { - game: Box::new(game), - watch: Box::new(watch), - } - } + pub fn new( + game: crate::models::CloudGameFull, + watch: crate::models::WatchResponse, + ) -> CloudGamesGetGameByIdResponse { + CloudGamesGetGameByIdResponse { + game: Box::new(game), + watch: Box::new(watch), + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_games_get_game_version_by_id_response.rs b/sdks/full/rust/src/models/cloud_games_get_game_version_by_id_response.rs index 17d85fdb62..b95750a2cb 100644 --- a/sdks/full/rust/src/models/cloud_games_get_game_version_by_id_response.rs +++ b/sdks/full/rust/src/models/cloud_games_get_game_version_by_id_response.rs @@ -4,25 +4,20 @@ * 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 CloudGamesGetGameVersionByIdResponse { - #[serde(rename = "version")] - pub version: Box, + #[serde(rename = "version")] + pub version: Box, } impl CloudGamesGetGameVersionByIdResponse { - pub fn new(version: crate::models::CloudVersionFull) -> CloudGamesGetGameVersionByIdResponse { - CloudGamesGetGameVersionByIdResponse { - version: Box::new(version), - } - } + pub fn new(version: crate::models::CloudVersionFull) -> CloudGamesGetGameVersionByIdResponse { + CloudGamesGetGameVersionByIdResponse { + version: Box::new(version), + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_games_get_games_response.rs b/sdks/full/rust/src/models/cloud_games_get_games_response.rs index d6bf996615..a81d838fc3 100644 --- a/sdks/full/rust/src/models/cloud_games_get_games_response.rs +++ b/sdks/full/rust/src/models/cloud_games_get_games_response.rs @@ -4,33 +4,32 @@ * 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 CloudGamesGetGamesResponse { - /// A list of game summaries. - #[serde(rename = "games")] - pub games: Vec, - /// A list of group summaries. - #[serde(rename = "groups")] - pub groups: Vec, - #[serde(rename = "watch")] - pub watch: Box, + /// A list of game summaries. + #[serde(rename = "games")] + pub games: Vec, + /// A list of group summaries. + #[serde(rename = "groups")] + pub groups: Vec, + #[serde(rename = "watch")] + pub watch: Box, } impl CloudGamesGetGamesResponse { - pub fn new(games: Vec, groups: Vec, watch: crate::models::WatchResponse) -> CloudGamesGetGamesResponse { - CloudGamesGetGamesResponse { - games, - groups, - watch: Box::new(watch), - } - } + pub fn new( + games: Vec, + groups: Vec, + watch: crate::models::WatchResponse, + ) -> CloudGamesGetGamesResponse { + CloudGamesGetGamesResponse { + games, + groups, + watch: Box::new(watch), + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_games_get_lobby_logs_response.rs b/sdks/full/rust/src/models/cloud_games_get_lobby_logs_response.rs index 58f54377ac..d9afa54e1e 100644 --- a/sdks/full/rust/src/models/cloud_games_get_lobby_logs_response.rs +++ b/sdks/full/rust/src/models/cloud_games_get_lobby_logs_response.rs @@ -4,33 +4,32 @@ * 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 CloudGamesGetLobbyLogsResponse { - /// Sorted old to new. - #[serde(rename = "lines")] - pub lines: Vec, - /// Sorted old to new. - #[serde(rename = "timestamps")] - pub timestamps: Vec, - #[serde(rename = "watch")] - pub watch: Box, + /// Sorted old to new. + #[serde(rename = "lines")] + pub lines: Vec, + /// Sorted old to new. + #[serde(rename = "timestamps")] + pub timestamps: Vec, + #[serde(rename = "watch")] + pub watch: Box, } impl CloudGamesGetLobbyLogsResponse { - pub fn new(lines: Vec, timestamps: Vec, watch: crate::models::WatchResponse) -> CloudGamesGetLobbyLogsResponse { - CloudGamesGetLobbyLogsResponse { - lines, - timestamps, - watch: Box::new(watch), - } - } + pub fn new( + lines: Vec, + timestamps: Vec, + watch: crate::models::WatchResponse, + ) -> CloudGamesGetLobbyLogsResponse { + CloudGamesGetLobbyLogsResponse { + lines, + timestamps, + watch: Box::new(watch), + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_games_list_game_builds_response.rs b/sdks/full/rust/src/models/cloud_games_list_game_builds_response.rs index b1acc359db..f2bd888b0b 100644 --- a/sdks/full/rust/src/models/cloud_games_list_game_builds_response.rs +++ b/sdks/full/rust/src/models/cloud_games_list_game_builds_response.rs @@ -4,26 +4,19 @@ * 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 CloudGamesListGameBuildsResponse { - /// A list of build summaries. - #[serde(rename = "builds")] - pub builds: Vec, + /// A list of build summaries. + #[serde(rename = "builds")] + pub builds: Vec, } impl CloudGamesListGameBuildsResponse { - pub fn new(builds: Vec) -> CloudGamesListGameBuildsResponse { - CloudGamesListGameBuildsResponse { - builds, - } - } + pub fn new(builds: Vec) -> CloudGamesListGameBuildsResponse { + CloudGamesListGameBuildsResponse { builds } + } } - - diff --git a/sdks/full/rust/src/models/cloud_games_list_game_cdn_sites_response.rs b/sdks/full/rust/src/models/cloud_games_list_game_cdn_sites_response.rs index 6c6d5a0dc1..b3d42de100 100644 --- a/sdks/full/rust/src/models/cloud_games_list_game_cdn_sites_response.rs +++ b/sdks/full/rust/src/models/cloud_games_list_game_cdn_sites_response.rs @@ -4,26 +4,21 @@ * 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 CloudGamesListGameCdnSitesResponse { - /// A list of CDN site summaries. - #[serde(rename = "sites")] - pub sites: Vec, + /// A list of CDN site summaries. + #[serde(rename = "sites")] + pub sites: Vec, } impl CloudGamesListGameCdnSitesResponse { - pub fn new(sites: Vec) -> CloudGamesListGameCdnSitesResponse { - CloudGamesListGameCdnSitesResponse { - sites, - } - } + pub fn new( + sites: Vec, + ) -> CloudGamesListGameCdnSitesResponse { + CloudGamesListGameCdnSitesResponse { sites } + } } - - diff --git a/sdks/full/rust/src/models/cloud_games_list_game_custom_avatars_response.rs b/sdks/full/rust/src/models/cloud_games_list_game_custom_avatars_response.rs index 12d3443345..569fef54b4 100644 --- a/sdks/full/rust/src/models/cloud_games_list_game_custom_avatars_response.rs +++ b/sdks/full/rust/src/models/cloud_games_list_game_custom_avatars_response.rs @@ -4,26 +4,21 @@ * 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 CloudGamesListGameCustomAvatarsResponse { - /// A list of custom avatar summaries. - #[serde(rename = "custom_avatars")] - pub custom_avatars: Vec, + /// A list of custom avatar summaries. + #[serde(rename = "custom_avatars")] + pub custom_avatars: Vec, } impl CloudGamesListGameCustomAvatarsResponse { - pub fn new(custom_avatars: Vec) -> CloudGamesListGameCustomAvatarsResponse { - CloudGamesListGameCustomAvatarsResponse { - custom_avatars, - } - } + pub fn new( + custom_avatars: Vec, + ) -> CloudGamesListGameCustomAvatarsResponse { + CloudGamesListGameCustomAvatarsResponse { custom_avatars } + } } - - diff --git a/sdks/full/rust/src/models/cloud_games_log_stream.rs b/sdks/full/rust/src/models/cloud_games_log_stream.rs index 64bc9afaf3..7baa7ce2e1 100644 --- a/sdks/full/rust/src/models/cloud_games_log_stream.rs +++ b/sdks/full/rust/src/models/cloud_games_log_stream.rs @@ -4,36 +4,30 @@ * 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 CloudGamesLogStream { - #[serde(rename = "std_out")] - StdOut, - #[serde(rename = "std_err")] - StdErr, - + #[serde(rename = "std_out")] + StdOut, + #[serde(rename = "std_err")] + StdErr, } impl ToString for CloudGamesLogStream { - fn to_string(&self) -> String { - match self { - Self::StdOut => String::from("std_out"), - Self::StdErr => String::from("std_err"), - } - } + fn to_string(&self) -> String { + match self { + Self::StdOut => String::from("std_out"), + Self::StdErr => String::from("std_err"), + } + } } impl Default for CloudGamesLogStream { - fn default() -> CloudGamesLogStream { - Self::StdOut - } + fn default() -> CloudGamesLogStream { + Self::StdOut + } } - - - - diff --git a/sdks/full/rust/src/models/cloud_games_namespaces_add_namespace_domain_request.rs b/sdks/full/rust/src/models/cloud_games_namespaces_add_namespace_domain_request.rs index 444ef1c6a1..2d1a3bbee5 100644 --- a/sdks/full/rust/src/models/cloud_games_namespaces_add_namespace_domain_request.rs +++ b/sdks/full/rust/src/models/cloud_games_namespaces_add_namespace_domain_request.rs @@ -4,26 +4,19 @@ * 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 CloudGamesNamespacesAddNamespaceDomainRequest { - /// A valid domain name (no protocol). - #[serde(rename = "domain")] - pub domain: String, + /// A valid domain name (no protocol). + #[serde(rename = "domain")] + pub domain: String, } impl CloudGamesNamespacesAddNamespaceDomainRequest { - pub fn new(domain: String) -> CloudGamesNamespacesAddNamespaceDomainRequest { - CloudGamesNamespacesAddNamespaceDomainRequest { - domain, - } - } + pub fn new(domain: String) -> CloudGamesNamespacesAddNamespaceDomainRequest { + CloudGamesNamespacesAddNamespaceDomainRequest { domain } + } } - - diff --git a/sdks/full/rust/src/models/cloud_games_namespaces_create_game_namespace_request.rs b/sdks/full/rust/src/models/cloud_games_namespaces_create_game_namespace_request.rs index 39f79522d1..e7dac7cb97 100644 --- a/sdks/full/rust/src/models/cloud_games_namespaces_create_game_namespace_request.rs +++ b/sdks/full/rust/src/models/cloud_games_namespaces_create_game_namespace_request.rs @@ -4,33 +4,32 @@ * 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 CloudGamesNamespacesCreateGameNamespaceRequest { - /// Represent a resource's readable display name. - #[serde(rename = "display_name")] - pub display_name: String, - /// A human readable short identifier used to references resources. Different than a `rivet.common#Uuid` because this is intended to be human readable. Different than `rivet.common#DisplayName` because this should not include special characters and be short. - #[serde(rename = "name_id")] - pub name_id: String, - #[serde(rename = "version_id")] - pub version_id: uuid::Uuid, + /// Represent a resource's readable display name. + #[serde(rename = "display_name")] + pub display_name: String, + /// A human readable short identifier used to references resources. Different than a `rivet.common#Uuid` because this is intended to be human readable. Different than `rivet.common#DisplayName` because this should not include special characters and be short. + #[serde(rename = "name_id")] + pub name_id: String, + #[serde(rename = "version_id")] + pub version_id: uuid::Uuid, } impl CloudGamesNamespacesCreateGameNamespaceRequest { - pub fn new(display_name: String, name_id: String, version_id: uuid::Uuid) -> CloudGamesNamespacesCreateGameNamespaceRequest { - CloudGamesNamespacesCreateGameNamespaceRequest { - display_name, - name_id, - version_id, - } - } + pub fn new( + display_name: String, + name_id: String, + version_id: uuid::Uuid, + ) -> CloudGamesNamespacesCreateGameNamespaceRequest { + CloudGamesNamespacesCreateGameNamespaceRequest { + display_name, + name_id, + version_id, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_games_namespaces_create_game_namespace_response.rs b/sdks/full/rust/src/models/cloud_games_namespaces_create_game_namespace_response.rs index 816d4796b3..a1351cfb99 100644 --- a/sdks/full/rust/src/models/cloud_games_namespaces_create_game_namespace_response.rs +++ b/sdks/full/rust/src/models/cloud_games_namespaces_create_game_namespace_response.rs @@ -4,25 +4,18 @@ * 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 CloudGamesNamespacesCreateGameNamespaceResponse { - #[serde(rename = "namespace_id")] - pub namespace_id: uuid::Uuid, + #[serde(rename = "namespace_id")] + pub namespace_id: uuid::Uuid, } impl CloudGamesNamespacesCreateGameNamespaceResponse { - pub fn new(namespace_id: uuid::Uuid) -> CloudGamesNamespacesCreateGameNamespaceResponse { - CloudGamesNamespacesCreateGameNamespaceResponse { - namespace_id, - } - } + pub fn new(namespace_id: uuid::Uuid) -> CloudGamesNamespacesCreateGameNamespaceResponse { + CloudGamesNamespacesCreateGameNamespaceResponse { namespace_id } + } } - - diff --git a/sdks/full/rust/src/models/cloud_games_namespaces_create_game_namespace_token_development_request.rs b/sdks/full/rust/src/models/cloud_games_namespaces_create_game_namespace_token_development_request.rs index d494b88b33..506a52f6b7 100644 --- a/sdks/full/rust/src/models/cloud_games_namespaces_create_game_namespace_token_development_request.rs +++ b/sdks/full/rust/src/models/cloud_games_namespaces_create_game_namespace_token_development_request.rs @@ -4,33 +4,29 @@ * 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 CloudGamesNamespacesCreateGameNamespaceTokenDevelopmentRequest { - /// The hostname used for the token. - #[serde(rename = "hostname")] - pub hostname: String, - /// **Deprecated** A list of docker ports. - #[serde(rename = "lobby_ports", skip_serializing_if = "Option::is_none")] - pub lobby_ports: Option>, - #[serde(rename = "ports", skip_serializing_if = "Option::is_none")] - pub ports: Option<::std::collections::HashMap>, + /// The hostname used for the token. + #[serde(rename = "hostname")] + pub hostname: String, + /// **Deprecated** A list of docker ports. + #[serde(rename = "lobby_ports", skip_serializing_if = "Option::is_none")] + pub lobby_ports: Option>, + #[serde(rename = "ports", skip_serializing_if = "Option::is_none")] + pub ports: + Option<::std::collections::HashMap>, } impl CloudGamesNamespacesCreateGameNamespaceTokenDevelopmentRequest { - pub fn new(hostname: String) -> CloudGamesNamespacesCreateGameNamespaceTokenDevelopmentRequest { - CloudGamesNamespacesCreateGameNamespaceTokenDevelopmentRequest { - hostname, - lobby_ports: None, - ports: None, - } - } + pub fn new(hostname: String) -> CloudGamesNamespacesCreateGameNamespaceTokenDevelopmentRequest { + CloudGamesNamespacesCreateGameNamespaceTokenDevelopmentRequest { + hostname, + lobby_ports: None, + ports: None, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_games_namespaces_create_game_namespace_token_development_response.rs b/sdks/full/rust/src/models/cloud_games_namespaces_create_game_namespace_token_development_response.rs index 1e607255f1..c4f1e06b9f 100644 --- a/sdks/full/rust/src/models/cloud_games_namespaces_create_game_namespace_token_development_response.rs +++ b/sdks/full/rust/src/models/cloud_games_namespaces_create_game_namespace_token_development_response.rs @@ -4,26 +4,19 @@ * 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 CloudGamesNamespacesCreateGameNamespaceTokenDevelopmentResponse { - /// A JSON Web Token. Slightly modified to include a description prefix and use Protobufs of JSON. - #[serde(rename = "token")] - pub token: String, + /// A JSON Web Token. Slightly modified to include a description prefix and use Protobufs of JSON. + #[serde(rename = "token")] + pub token: String, } impl CloudGamesNamespacesCreateGameNamespaceTokenDevelopmentResponse { - pub fn new(token: String) -> CloudGamesNamespacesCreateGameNamespaceTokenDevelopmentResponse { - CloudGamesNamespacesCreateGameNamespaceTokenDevelopmentResponse { - token, - } - } + pub fn new(token: String) -> CloudGamesNamespacesCreateGameNamespaceTokenDevelopmentResponse { + CloudGamesNamespacesCreateGameNamespaceTokenDevelopmentResponse { token } + } } - - diff --git a/sdks/full/rust/src/models/cloud_games_namespaces_create_game_namespace_token_public_response.rs b/sdks/full/rust/src/models/cloud_games_namespaces_create_game_namespace_token_public_response.rs index 9d6dd8b1ed..629019dc8c 100644 --- a/sdks/full/rust/src/models/cloud_games_namespaces_create_game_namespace_token_public_response.rs +++ b/sdks/full/rust/src/models/cloud_games_namespaces_create_game_namespace_token_public_response.rs @@ -4,26 +4,19 @@ * 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 CloudGamesNamespacesCreateGameNamespaceTokenPublicResponse { - /// A JSON Web Token. Slightly modified to include a description prefix and use Protobufs of JSON. - #[serde(rename = "token")] - pub token: String, + /// A JSON Web Token. Slightly modified to include a description prefix and use Protobufs of JSON. + #[serde(rename = "token")] + pub token: String, } impl CloudGamesNamespacesCreateGameNamespaceTokenPublicResponse { - pub fn new(token: String) -> CloudGamesNamespacesCreateGameNamespaceTokenPublicResponse { - CloudGamesNamespacesCreateGameNamespaceTokenPublicResponse { - token, - } - } + pub fn new(token: String) -> CloudGamesNamespacesCreateGameNamespaceTokenPublicResponse { + CloudGamesNamespacesCreateGameNamespaceTokenPublicResponse { token } + } } - - diff --git a/sdks/full/rust/src/models/cloud_games_namespaces_get_analytics_matchmaker_live_response.rs b/sdks/full/rust/src/models/cloud_games_namespaces_get_analytics_matchmaker_live_response.rs index 09a134856e..3fc3a7304f 100644 --- a/sdks/full/rust/src/models/cloud_games_namespaces_get_analytics_matchmaker_live_response.rs +++ b/sdks/full/rust/src/models/cloud_games_namespaces_get_analytics_matchmaker_live_response.rs @@ -4,26 +4,21 @@ * 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 CloudGamesNamespacesGetAnalyticsMatchmakerLiveResponse { - /// A list of analytics lobby summaries. - #[serde(rename = "lobbies")] - pub lobbies: Vec, + /// A list of analytics lobby summaries. + #[serde(rename = "lobbies")] + pub lobbies: Vec, } impl CloudGamesNamespacesGetAnalyticsMatchmakerLiveResponse { - pub fn new(lobbies: Vec) -> CloudGamesNamespacesGetAnalyticsMatchmakerLiveResponse { - CloudGamesNamespacesGetAnalyticsMatchmakerLiveResponse { - lobbies, - } - } + pub fn new( + lobbies: Vec, + ) -> CloudGamesNamespacesGetAnalyticsMatchmakerLiveResponse { + CloudGamesNamespacesGetAnalyticsMatchmakerLiveResponse { lobbies } + } } - - diff --git a/sdks/full/rust/src/models/cloud_games_namespaces_get_game_namespace_by_id_response.rs b/sdks/full/rust/src/models/cloud_games_namespaces_get_game_namespace_by_id_response.rs index 5aa1f56dc4..7e0d67f7d6 100644 --- a/sdks/full/rust/src/models/cloud_games_namespaces_get_game_namespace_by_id_response.rs +++ b/sdks/full/rust/src/models/cloud_games_namespaces_get_game_namespace_by_id_response.rs @@ -4,25 +4,22 @@ * 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 CloudGamesNamespacesGetGameNamespaceByIdResponse { - #[serde(rename = "namespace")] - pub namespace: Box, + #[serde(rename = "namespace")] + pub namespace: Box, } impl CloudGamesNamespacesGetGameNamespaceByIdResponse { - pub fn new(namespace: crate::models::CloudNamespaceFull) -> CloudGamesNamespacesGetGameNamespaceByIdResponse { - CloudGamesNamespacesGetGameNamespaceByIdResponse { - namespace: Box::new(namespace), - } - } + pub fn new( + namespace: crate::models::CloudNamespaceFull, + ) -> CloudGamesNamespacesGetGameNamespaceByIdResponse { + CloudGamesNamespacesGetGameNamespaceByIdResponse { + namespace: Box::new(namespace), + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_games_namespaces_get_game_namespace_version_history_response.rs b/sdks/full/rust/src/models/cloud_games_namespaces_get_game_namespace_version_history_response.rs index 0e28f0773e..beae4bcaf9 100644 --- a/sdks/full/rust/src/models/cloud_games_namespaces_get_game_namespace_version_history_response.rs +++ b/sdks/full/rust/src/models/cloud_games_namespaces_get_game_namespace_version_history_response.rs @@ -4,26 +4,21 @@ * 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 CloudGamesNamespacesGetGameNamespaceVersionHistoryResponse { - /// A list of previously deployed namespace versions. - #[serde(rename = "versions")] - pub versions: Vec, + /// A list of previously deployed namespace versions. + #[serde(rename = "versions")] + pub versions: Vec, } impl CloudGamesNamespacesGetGameNamespaceVersionHistoryResponse { - pub fn new(versions: Vec) -> CloudGamesNamespacesGetGameNamespaceVersionHistoryResponse { - CloudGamesNamespacesGetGameNamespaceVersionHistoryResponse { - versions, - } - } + pub fn new( + versions: Vec, + ) -> CloudGamesNamespacesGetGameNamespaceVersionHistoryResponse { + CloudGamesNamespacesGetGameNamespaceVersionHistoryResponse { versions } + } } - - diff --git a/sdks/full/rust/src/models/cloud_games_namespaces_get_namespace_lobby_response.rs b/sdks/full/rust/src/models/cloud_games_namespaces_get_namespace_lobby_response.rs index c09446bc8c..571152f5c6 100644 --- a/sdks/full/rust/src/models/cloud_games_namespaces_get_namespace_lobby_response.rs +++ b/sdks/full/rust/src/models/cloud_games_namespaces_get_namespace_lobby_response.rs @@ -4,40 +4,40 @@ * 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 CloudGamesNamespacesGetNamespaceLobbyResponse { - #[serde(rename = "lobby")] - pub lobby: Box, - #[serde(rename = "metrics", skip_serializing_if = "Option::is_none")] - pub metrics: Option>, - /// **Deprecated** A list of service performance summaries. - #[serde(rename = "perf_lists")] - pub perf_lists: Vec, - /// **Deprecated** A list of URLs. - #[serde(rename = "stderr_presigned_urls")] - pub stderr_presigned_urls: Vec, - /// **Deprecated** A list of URLs. - #[serde(rename = "stdout_presigned_urls")] - pub stdout_presigned_urls: Vec, + #[serde(rename = "lobby")] + pub lobby: Box, + #[serde(rename = "metrics", skip_serializing_if = "Option::is_none")] + pub metrics: Option>, + /// **Deprecated** A list of service performance summaries. + #[serde(rename = "perf_lists")] + pub perf_lists: Vec, + /// **Deprecated** A list of URLs. + #[serde(rename = "stderr_presigned_urls")] + pub stderr_presigned_urls: Vec, + /// **Deprecated** A list of URLs. + #[serde(rename = "stdout_presigned_urls")] + pub stdout_presigned_urls: Vec, } impl CloudGamesNamespacesGetNamespaceLobbyResponse { - pub fn new(lobby: crate::models::CloudLogsLobbySummary, perf_lists: Vec, stderr_presigned_urls: Vec, stdout_presigned_urls: Vec) -> CloudGamesNamespacesGetNamespaceLobbyResponse { - CloudGamesNamespacesGetNamespaceLobbyResponse { - lobby: Box::new(lobby), - metrics: None, - perf_lists, - stderr_presigned_urls, - stdout_presigned_urls, - } - } + pub fn new( + lobby: crate::models::CloudLogsLobbySummary, + perf_lists: Vec, + stderr_presigned_urls: Vec, + stdout_presigned_urls: Vec, + ) -> CloudGamesNamespacesGetNamespaceLobbyResponse { + CloudGamesNamespacesGetNamespaceLobbyResponse { + lobby: Box::new(lobby), + metrics: None, + perf_lists, + stderr_presigned_urls, + stdout_presigned_urls, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_games_namespaces_inspect_response.rs b/sdks/full/rust/src/models/cloud_games_namespaces_inspect_response.rs index 90fc0df81b..04d48f490b 100644 --- a/sdks/full/rust/src/models/cloud_games_namespaces_inspect_response.rs +++ b/sdks/full/rust/src/models/cloud_games_namespaces_inspect_response.rs @@ -4,25 +4,20 @@ * 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 CloudGamesNamespacesInspectResponse { - #[serde(rename = "agent")] - pub agent: Box, + #[serde(rename = "agent")] + pub agent: Box, } impl CloudGamesNamespacesInspectResponse { - pub fn new(agent: crate::models::CloudAuthAgent) -> CloudGamesNamespacesInspectResponse { - CloudGamesNamespacesInspectResponse { - agent: Box::new(agent), - } - } + pub fn new(agent: crate::models::CloudAuthAgent) -> CloudGamesNamespacesInspectResponse { + CloudGamesNamespacesInspectResponse { + agent: Box::new(agent), + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_games_namespaces_list_namespace_lobbies_response.rs b/sdks/full/rust/src/models/cloud_games_namespaces_list_namespace_lobbies_response.rs index 42e804d011..dc24c28505 100644 --- a/sdks/full/rust/src/models/cloud_games_namespaces_list_namespace_lobbies_response.rs +++ b/sdks/full/rust/src/models/cloud_games_namespaces_list_namespace_lobbies_response.rs @@ -4,26 +4,21 @@ * 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 CloudGamesNamespacesListNamespaceLobbiesResponse { - /// A list of lobby log summaries. - #[serde(rename = "lobbies")] - pub lobbies: Vec, + /// A list of lobby log summaries. + #[serde(rename = "lobbies")] + pub lobbies: Vec, } impl CloudGamesNamespacesListNamespaceLobbiesResponse { - pub fn new(lobbies: Vec) -> CloudGamesNamespacesListNamespaceLobbiesResponse { - CloudGamesNamespacesListNamespaceLobbiesResponse { - lobbies, - } - } + pub fn new( + lobbies: Vec, + ) -> CloudGamesNamespacesListNamespaceLobbiesResponse { + CloudGamesNamespacesListNamespaceLobbiesResponse { lobbies } + } } - - diff --git a/sdks/full/rust/src/models/cloud_games_namespaces_set_namespace_cdn_auth_type_request.rs b/sdks/full/rust/src/models/cloud_games_namespaces_set_namespace_cdn_auth_type_request.rs index d6f98905b4..dce840ab4e 100644 --- a/sdks/full/rust/src/models/cloud_games_namespaces_set_namespace_cdn_auth_type_request.rs +++ b/sdks/full/rust/src/models/cloud_games_namespaces_set_namespace_cdn_auth_type_request.rs @@ -4,25 +4,20 @@ * 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 CloudGamesNamespacesSetNamespaceCdnAuthTypeRequest { - #[serde(rename = "auth_type")] - pub auth_type: crate::models::CloudCdnAuthType, + #[serde(rename = "auth_type")] + pub auth_type: crate::models::CloudCdnAuthType, } impl CloudGamesNamespacesSetNamespaceCdnAuthTypeRequest { - pub fn new(auth_type: crate::models::CloudCdnAuthType) -> CloudGamesNamespacesSetNamespaceCdnAuthTypeRequest { - CloudGamesNamespacesSetNamespaceCdnAuthTypeRequest { - auth_type, - } - } + pub fn new( + auth_type: crate::models::CloudCdnAuthType, + ) -> CloudGamesNamespacesSetNamespaceCdnAuthTypeRequest { + CloudGamesNamespacesSetNamespaceCdnAuthTypeRequest { auth_type } + } } - - diff --git a/sdks/full/rust/src/models/cloud_games_namespaces_toggle_namespace_domain_public_auth_request.rs b/sdks/full/rust/src/models/cloud_games_namespaces_toggle_namespace_domain_public_auth_request.rs index 8f756de255..fbe7dc86f5 100644 --- a/sdks/full/rust/src/models/cloud_games_namespaces_toggle_namespace_domain_public_auth_request.rs +++ b/sdks/full/rust/src/models/cloud_games_namespaces_toggle_namespace_domain_public_auth_request.rs @@ -4,26 +4,19 @@ * 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 CloudGamesNamespacesToggleNamespaceDomainPublicAuthRequest { - /// Whether or not to enable authentication based on domain. - #[serde(rename = "enabled")] - pub enabled: bool, + /// Whether or not to enable authentication based on domain. + #[serde(rename = "enabled")] + pub enabled: bool, } impl CloudGamesNamespacesToggleNamespaceDomainPublicAuthRequest { - pub fn new(enabled: bool) -> CloudGamesNamespacesToggleNamespaceDomainPublicAuthRequest { - CloudGamesNamespacesToggleNamespaceDomainPublicAuthRequest { - enabled, - } - } + pub fn new(enabled: bool) -> CloudGamesNamespacesToggleNamespaceDomainPublicAuthRequest { + CloudGamesNamespacesToggleNamespaceDomainPublicAuthRequest { enabled } + } } - - diff --git a/sdks/full/rust/src/models/cloud_games_namespaces_update_game_namespace_matchmaker_config_request.rs b/sdks/full/rust/src/models/cloud_games_namespaces_update_game_namespace_matchmaker_config_request.rs index 1e10a667a3..fcbeabf8e3 100644 --- a/sdks/full/rust/src/models/cloud_games_namespaces_update_game_namespace_matchmaker_config_request.rs +++ b/sdks/full/rust/src/models/cloud_games_namespaces_update_game_namespace_matchmaker_config_request.rs @@ -4,30 +4,28 @@ * 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 CloudGamesNamespacesUpdateGameNamespaceMatchmakerConfigRequest { - /// Unsigned 32 bit integer. - #[serde(rename = "lobby_count_max")] - pub lobby_count_max: i32, - /// Unsigned 32 bit integer. - #[serde(rename = "max_players")] - pub max_players: i32, + /// Unsigned 32 bit integer. + #[serde(rename = "lobby_count_max")] + pub lobby_count_max: i32, + /// Unsigned 32 bit integer. + #[serde(rename = "max_players")] + pub max_players: i32, } impl CloudGamesNamespacesUpdateGameNamespaceMatchmakerConfigRequest { - pub fn new(lobby_count_max: i32, max_players: i32) -> CloudGamesNamespacesUpdateGameNamespaceMatchmakerConfigRequest { - CloudGamesNamespacesUpdateGameNamespaceMatchmakerConfigRequest { - lobby_count_max, - max_players, - } - } + pub fn new( + lobby_count_max: i32, + max_players: i32, + ) -> CloudGamesNamespacesUpdateGameNamespaceMatchmakerConfigRequest { + CloudGamesNamespacesUpdateGameNamespaceMatchmakerConfigRequest { + lobby_count_max, + max_players, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_games_namespaces_update_game_namespace_version_request.rs b/sdks/full/rust/src/models/cloud_games_namespaces_update_game_namespace_version_request.rs index 7bc24f72d1..449d2f84f5 100644 --- a/sdks/full/rust/src/models/cloud_games_namespaces_update_game_namespace_version_request.rs +++ b/sdks/full/rust/src/models/cloud_games_namespaces_update_game_namespace_version_request.rs @@ -4,25 +4,18 @@ * 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 CloudGamesNamespacesUpdateGameNamespaceVersionRequest { - #[serde(rename = "version_id")] - pub version_id: uuid::Uuid, + #[serde(rename = "version_id")] + pub version_id: uuid::Uuid, } impl CloudGamesNamespacesUpdateGameNamespaceVersionRequest { - pub fn new(version_id: uuid::Uuid) -> CloudGamesNamespacesUpdateGameNamespaceVersionRequest { - CloudGamesNamespacesUpdateGameNamespaceVersionRequest { - version_id, - } - } + pub fn new(version_id: uuid::Uuid) -> CloudGamesNamespacesUpdateGameNamespaceVersionRequest { + CloudGamesNamespacesUpdateGameNamespaceVersionRequest { version_id } + } } - - diff --git a/sdks/full/rust/src/models/cloud_games_namespaces_update_namespace_cdn_auth_user_request.rs b/sdks/full/rust/src/models/cloud_games_namespaces_update_namespace_cdn_auth_user_request.rs index 639da0d8a5..f534b12a1b 100644 --- a/sdks/full/rust/src/models/cloud_games_namespaces_update_namespace_cdn_auth_user_request.rs +++ b/sdks/full/rust/src/models/cloud_games_namespaces_update_namespace_cdn_auth_user_request.rs @@ -4,30 +4,25 @@ * 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 CloudGamesNamespacesUpdateNamespaceCdnAuthUserRequest { - /// A bcrypt encrypted password. An error is returned if the given string is not properly encrypted. - #[serde(rename = "password")] - pub password: String, - /// A user name. - #[serde(rename = "user")] - pub user: String, + /// A bcrypt encrypted password. An error is returned if the given string is not properly encrypted. + #[serde(rename = "password")] + pub password: String, + /// A user name. + #[serde(rename = "user")] + pub user: String, } impl CloudGamesNamespacesUpdateNamespaceCdnAuthUserRequest { - pub fn new(password: String, user: String) -> CloudGamesNamespacesUpdateNamespaceCdnAuthUserRequest { - CloudGamesNamespacesUpdateNamespaceCdnAuthUserRequest { - password, - user, - } - } + pub fn new( + password: String, + user: String, + ) -> CloudGamesNamespacesUpdateNamespaceCdnAuthUserRequest { + CloudGamesNamespacesUpdateNamespaceCdnAuthUserRequest { password, user } + } } - - diff --git a/sdks/full/rust/src/models/cloud_games_namespaces_validate_game_namespace_matchmaker_config_request.rs b/sdks/full/rust/src/models/cloud_games_namespaces_validate_game_namespace_matchmaker_config_request.rs index b144620c51..4bd2f73d7c 100644 --- a/sdks/full/rust/src/models/cloud_games_namespaces_validate_game_namespace_matchmaker_config_request.rs +++ b/sdks/full/rust/src/models/cloud_games_namespaces_validate_game_namespace_matchmaker_config_request.rs @@ -4,30 +4,28 @@ * 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 CloudGamesNamespacesValidateGameNamespaceMatchmakerConfigRequest { - /// Unsigned 32 bit integer. - #[serde(rename = "lobby_count_max")] - pub lobby_count_max: i32, - /// Unsigned 32 bit integer. - #[serde(rename = "max_players")] - pub max_players: i32, + /// Unsigned 32 bit integer. + #[serde(rename = "lobby_count_max")] + pub lobby_count_max: i32, + /// Unsigned 32 bit integer. + #[serde(rename = "max_players")] + pub max_players: i32, } impl CloudGamesNamespacesValidateGameNamespaceMatchmakerConfigRequest { - pub fn new(lobby_count_max: i32, max_players: i32) -> CloudGamesNamespacesValidateGameNamespaceMatchmakerConfigRequest { - CloudGamesNamespacesValidateGameNamespaceMatchmakerConfigRequest { - lobby_count_max, - max_players, - } - } + pub fn new( + lobby_count_max: i32, + max_players: i32, + ) -> CloudGamesNamespacesValidateGameNamespaceMatchmakerConfigRequest { + CloudGamesNamespacesValidateGameNamespaceMatchmakerConfigRequest { + lobby_count_max, + max_players, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_games_namespaces_validate_game_namespace_matchmaker_config_response.rs b/sdks/full/rust/src/models/cloud_games_namespaces_validate_game_namespace_matchmaker_config_response.rs index 5b0d3eee10..cecc971e97 100644 --- a/sdks/full/rust/src/models/cloud_games_namespaces_validate_game_namespace_matchmaker_config_response.rs +++ b/sdks/full/rust/src/models/cloud_games_namespaces_validate_game_namespace_matchmaker_config_response.rs @@ -4,26 +4,21 @@ * 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 CloudGamesNamespacesValidateGameNamespaceMatchmakerConfigResponse { - /// A list of validation errors. - #[serde(rename = "errors")] - pub errors: Vec, + /// A list of validation errors. + #[serde(rename = "errors")] + pub errors: Vec, } impl CloudGamesNamespacesValidateGameNamespaceMatchmakerConfigResponse { - pub fn new(errors: Vec) -> CloudGamesNamespacesValidateGameNamespaceMatchmakerConfigResponse { - CloudGamesNamespacesValidateGameNamespaceMatchmakerConfigResponse { - errors, - } - } + pub fn new( + errors: Vec, + ) -> CloudGamesNamespacesValidateGameNamespaceMatchmakerConfigResponse { + CloudGamesNamespacesValidateGameNamespaceMatchmakerConfigResponse { errors } + } } - - diff --git a/sdks/full/rust/src/models/cloud_games_namespaces_validate_game_namespace_request.rs b/sdks/full/rust/src/models/cloud_games_namespaces_validate_game_namespace_request.rs index 3b49b7bcab..ad37b02940 100644 --- a/sdks/full/rust/src/models/cloud_games_namespaces_validate_game_namespace_request.rs +++ b/sdks/full/rust/src/models/cloud_games_namespaces_validate_game_namespace_request.rs @@ -4,30 +4,28 @@ * 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 CloudGamesNamespacesValidateGameNamespaceRequest { - /// Represent a resource's readable display name. - #[serde(rename = "display_name")] - pub display_name: String, - /// A human readable short identifier used to references resources. Different than a `rivet.common#Uuid` because this is intended to be human readable. Different than `rivet.common#DisplayName` because this should not include special characters and be short. - #[serde(rename = "name_id")] - pub name_id: String, + /// Represent a resource's readable display name. + #[serde(rename = "display_name")] + pub display_name: String, + /// A human readable short identifier used to references resources. Different than a `rivet.common#Uuid` because this is intended to be human readable. Different than `rivet.common#DisplayName` because this should not include special characters and be short. + #[serde(rename = "name_id")] + pub name_id: String, } impl CloudGamesNamespacesValidateGameNamespaceRequest { - pub fn new(display_name: String, name_id: String) -> CloudGamesNamespacesValidateGameNamespaceRequest { - CloudGamesNamespacesValidateGameNamespaceRequest { - display_name, - name_id, - } - } + pub fn new( + display_name: String, + name_id: String, + ) -> CloudGamesNamespacesValidateGameNamespaceRequest { + CloudGamesNamespacesValidateGameNamespaceRequest { + display_name, + name_id, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_games_namespaces_validate_game_namespace_response.rs b/sdks/full/rust/src/models/cloud_games_namespaces_validate_game_namespace_response.rs index 65be900bea..fd9e4ecf65 100644 --- a/sdks/full/rust/src/models/cloud_games_namespaces_validate_game_namespace_response.rs +++ b/sdks/full/rust/src/models/cloud_games_namespaces_validate_game_namespace_response.rs @@ -4,26 +4,21 @@ * 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 CloudGamesNamespacesValidateGameNamespaceResponse { - /// A list of validation errors. - #[serde(rename = "errors")] - pub errors: Vec, + /// A list of validation errors. + #[serde(rename = "errors")] + pub errors: Vec, } impl CloudGamesNamespacesValidateGameNamespaceResponse { - pub fn new(errors: Vec) -> CloudGamesNamespacesValidateGameNamespaceResponse { - CloudGamesNamespacesValidateGameNamespaceResponse { - errors, - } - } + pub fn new( + errors: Vec, + ) -> CloudGamesNamespacesValidateGameNamespaceResponse { + CloudGamesNamespacesValidateGameNamespaceResponse { errors } + } } - - diff --git a/sdks/full/rust/src/models/cloud_games_namespaces_validate_game_namespace_token_development_request.rs b/sdks/full/rust/src/models/cloud_games_namespaces_validate_game_namespace_token_development_request.rs index c3c7db4f09..dc2251e01a 100644 --- a/sdks/full/rust/src/models/cloud_games_namespaces_validate_game_namespace_token_development_request.rs +++ b/sdks/full/rust/src/models/cloud_games_namespaces_validate_game_namespace_token_development_request.rs @@ -4,29 +4,27 @@ * 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 CloudGamesNamespacesValidateGameNamespaceTokenDevelopmentRequest { - #[serde(rename = "hostname")] - pub hostname: String, - /// A list of docker ports. - #[serde(rename = "lobby_ports")] - pub lobby_ports: Vec, + #[serde(rename = "hostname")] + pub hostname: String, + /// A list of docker ports. + #[serde(rename = "lobby_ports")] + pub lobby_ports: Vec, } impl CloudGamesNamespacesValidateGameNamespaceTokenDevelopmentRequest { - pub fn new(hostname: String, lobby_ports: Vec) -> CloudGamesNamespacesValidateGameNamespaceTokenDevelopmentRequest { - CloudGamesNamespacesValidateGameNamespaceTokenDevelopmentRequest { - hostname, - lobby_ports, - } - } + pub fn new( + hostname: String, + lobby_ports: Vec, + ) -> CloudGamesNamespacesValidateGameNamespaceTokenDevelopmentRequest { + CloudGamesNamespacesValidateGameNamespaceTokenDevelopmentRequest { + hostname, + lobby_ports, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_games_namespaces_validate_game_namespace_token_development_response.rs b/sdks/full/rust/src/models/cloud_games_namespaces_validate_game_namespace_token_development_response.rs index b647adf24a..1c1bf23657 100644 --- a/sdks/full/rust/src/models/cloud_games_namespaces_validate_game_namespace_token_development_response.rs +++ b/sdks/full/rust/src/models/cloud_games_namespaces_validate_game_namespace_token_development_response.rs @@ -4,26 +4,21 @@ * 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 CloudGamesNamespacesValidateGameNamespaceTokenDevelopmentResponse { - /// A list of validation errors. - #[serde(rename = "errors")] - pub errors: Vec, + /// A list of validation errors. + #[serde(rename = "errors")] + pub errors: Vec, } impl CloudGamesNamespacesValidateGameNamespaceTokenDevelopmentResponse { - pub fn new(errors: Vec) -> CloudGamesNamespacesValidateGameNamespaceTokenDevelopmentResponse { - CloudGamesNamespacesValidateGameNamespaceTokenDevelopmentResponse { - errors, - } - } + pub fn new( + errors: Vec, + ) -> CloudGamesNamespacesValidateGameNamespaceTokenDevelopmentResponse { + CloudGamesNamespacesValidateGameNamespaceTokenDevelopmentResponse { errors } + } } - - diff --git a/sdks/full/rust/src/models/cloud_games_prepare_custom_avatar_upload_request.rs b/sdks/full/rust/src/models/cloud_games_prepare_custom_avatar_upload_request.rs index fe9c725209..2bc7209e85 100644 --- a/sdks/full/rust/src/models/cloud_games_prepare_custom_avatar_upload_request.rs +++ b/sdks/full/rust/src/models/cloud_games_prepare_custom_avatar_upload_request.rs @@ -4,34 +4,29 @@ * 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 CloudGamesPrepareCustomAvatarUploadRequest { - /// Unsigned 64 bit integer. - #[serde(rename = "content_length")] - pub content_length: i64, - /// The MIME type of the custom avatar. - #[serde(rename = "mime", skip_serializing_if = "Option::is_none")] - pub mime: Option, - /// The path/filename of the custom avatar. - #[serde(rename = "path")] - pub path: String, + /// Unsigned 64 bit integer. + #[serde(rename = "content_length")] + pub content_length: i64, + /// The MIME type of the custom avatar. + #[serde(rename = "mime", skip_serializing_if = "Option::is_none")] + pub mime: Option, + /// The path/filename of the custom avatar. + #[serde(rename = "path")] + pub path: String, } impl CloudGamesPrepareCustomAvatarUploadRequest { - pub fn new(content_length: i64, path: String) -> CloudGamesPrepareCustomAvatarUploadRequest { - CloudGamesPrepareCustomAvatarUploadRequest { - content_length, - mime: None, - path, - } - } + pub fn new(content_length: i64, path: String) -> CloudGamesPrepareCustomAvatarUploadRequest { + CloudGamesPrepareCustomAvatarUploadRequest { + content_length, + mime: None, + path, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_games_prepare_custom_avatar_upload_response.rs b/sdks/full/rust/src/models/cloud_games_prepare_custom_avatar_upload_response.rs index acf310ffb8..4c5c52bd45 100644 --- a/sdks/full/rust/src/models/cloud_games_prepare_custom_avatar_upload_response.rs +++ b/sdks/full/rust/src/models/cloud_games_prepare_custom_avatar_upload_response.rs @@ -4,28 +4,26 @@ * 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 CloudGamesPrepareCustomAvatarUploadResponse { - #[serde(rename = "presigned_request")] - pub presigned_request: Box, - #[serde(rename = "upload_id")] - pub upload_id: uuid::Uuid, + #[serde(rename = "presigned_request")] + pub presigned_request: Box, + #[serde(rename = "upload_id")] + pub upload_id: uuid::Uuid, } impl CloudGamesPrepareCustomAvatarUploadResponse { - pub fn new(presigned_request: crate::models::UploadPresignedRequest, upload_id: uuid::Uuid) -> CloudGamesPrepareCustomAvatarUploadResponse { - CloudGamesPrepareCustomAvatarUploadResponse { - presigned_request: Box::new(presigned_request), - upload_id, - } - } + pub fn new( + presigned_request: crate::models::UploadPresignedRequest, + upload_id: uuid::Uuid, + ) -> CloudGamesPrepareCustomAvatarUploadResponse { + CloudGamesPrepareCustomAvatarUploadResponse { + presigned_request: Box::new(presigned_request), + upload_id, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_games_reserve_version_name_response.rs b/sdks/full/rust/src/models/cloud_games_reserve_version_name_response.rs index 1ca6b9fd43..f4db92c3dc 100644 --- a/sdks/full/rust/src/models/cloud_games_reserve_version_name_response.rs +++ b/sdks/full/rust/src/models/cloud_games_reserve_version_name_response.rs @@ -4,26 +4,21 @@ * 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 CloudGamesReserveVersionNameResponse { - /// Represent a resource's readable display name. - #[serde(rename = "version_display_name")] - pub version_display_name: String, + /// Represent a resource's readable display name. + #[serde(rename = "version_display_name")] + pub version_display_name: String, } impl CloudGamesReserveVersionNameResponse { - pub fn new(version_display_name: String) -> CloudGamesReserveVersionNameResponse { - CloudGamesReserveVersionNameResponse { - version_display_name, - } - } + pub fn new(version_display_name: String) -> CloudGamesReserveVersionNameResponse { + CloudGamesReserveVersionNameResponse { + version_display_name, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_games_validate_game_request.rs b/sdks/full/rust/src/models/cloud_games_validate_game_request.rs index 30f7fb8d7b..1583276b99 100644 --- a/sdks/full/rust/src/models/cloud_games_validate_game_request.rs +++ b/sdks/full/rust/src/models/cloud_games_validate_game_request.rs @@ -4,30 +4,25 @@ * 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 CloudGamesValidateGameRequest { - /// Represent a resource's readable display name. - #[serde(rename = "display_name")] - pub display_name: String, - /// A human readable short identifier used to references resources. Different than a `uuid` because this is intended to be human readable. Different than `DisplayName` because this should not include special characters and be short. - #[serde(rename = "name_id", skip_serializing_if = "Option::is_none")] - pub name_id: Option, + /// Represent a resource's readable display name. + #[serde(rename = "display_name")] + pub display_name: String, + /// A human readable short identifier used to references resources. Different than a `uuid` because this is intended to be human readable. Different than `DisplayName` because this should not include special characters and be short. + #[serde(rename = "name_id", skip_serializing_if = "Option::is_none")] + pub name_id: Option, } impl CloudGamesValidateGameRequest { - pub fn new(display_name: String) -> CloudGamesValidateGameRequest { - CloudGamesValidateGameRequest { - display_name, - name_id: None, - } - } + pub fn new(display_name: String) -> CloudGamesValidateGameRequest { + CloudGamesValidateGameRequest { + display_name, + name_id: None, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_games_validate_game_response.rs b/sdks/full/rust/src/models/cloud_games_validate_game_response.rs index d5b3f32d81..05215a883f 100644 --- a/sdks/full/rust/src/models/cloud_games_validate_game_response.rs +++ b/sdks/full/rust/src/models/cloud_games_validate_game_response.rs @@ -4,26 +4,19 @@ * 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 CloudGamesValidateGameResponse { - /// A list of validation errors. - #[serde(rename = "errors")] - pub errors: Vec, + /// A list of validation errors. + #[serde(rename = "errors")] + pub errors: Vec, } impl CloudGamesValidateGameResponse { - pub fn new(errors: Vec) -> CloudGamesValidateGameResponse { - CloudGamesValidateGameResponse { - errors, - } - } + pub fn new(errors: Vec) -> CloudGamesValidateGameResponse { + CloudGamesValidateGameResponse { errors } + } } - - diff --git a/sdks/full/rust/src/models/cloud_games_validate_game_version_request.rs b/sdks/full/rust/src/models/cloud_games_validate_game_version_request.rs index 2f2f612e67..4ef42058f4 100644 --- a/sdks/full/rust/src/models/cloud_games_validate_game_version_request.rs +++ b/sdks/full/rust/src/models/cloud_games_validate_game_version_request.rs @@ -4,29 +4,27 @@ * 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 CloudGamesValidateGameVersionRequest { - #[serde(rename = "config")] - pub config: Box, - /// Represent a resource's readable display name. - #[serde(rename = "display_name")] - pub display_name: String, + #[serde(rename = "config")] + pub config: Box, + /// Represent a resource's readable display name. + #[serde(rename = "display_name")] + pub display_name: String, } impl CloudGamesValidateGameVersionRequest { - pub fn new(config: crate::models::CloudVersionConfig, display_name: String) -> CloudGamesValidateGameVersionRequest { - CloudGamesValidateGameVersionRequest { - config: Box::new(config), - display_name, - } - } + pub fn new( + config: crate::models::CloudVersionConfig, + display_name: String, + ) -> CloudGamesValidateGameVersionRequest { + CloudGamesValidateGameVersionRequest { + config: Box::new(config), + display_name, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_games_validate_game_version_response.rs b/sdks/full/rust/src/models/cloud_games_validate_game_version_response.rs index 8d55feaec9..c9d0d60710 100644 --- a/sdks/full/rust/src/models/cloud_games_validate_game_version_response.rs +++ b/sdks/full/rust/src/models/cloud_games_validate_game_version_response.rs @@ -4,26 +4,21 @@ * 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 CloudGamesValidateGameVersionResponse { - /// A list of validation errors. - #[serde(rename = "errors")] - pub errors: Vec, + /// A list of validation errors. + #[serde(rename = "errors")] + pub errors: Vec, } impl CloudGamesValidateGameVersionResponse { - pub fn new(errors: Vec) -> CloudGamesValidateGameVersionResponse { - CloudGamesValidateGameVersionResponse { - errors, - } - } + pub fn new( + errors: Vec, + ) -> CloudGamesValidateGameVersionResponse { + CloudGamesValidateGameVersionResponse { errors } + } } - - diff --git a/sdks/full/rust/src/models/cloud_get_ray_perf_logs_response.rs b/sdks/full/rust/src/models/cloud_get_ray_perf_logs_response.rs index ec13db31b5..1f64ed13d8 100644 --- a/sdks/full/rust/src/models/cloud_get_ray_perf_logs_response.rs +++ b/sdks/full/rust/src/models/cloud_get_ray_perf_logs_response.rs @@ -4,26 +4,19 @@ * 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 CloudGetRayPerfLogsResponse { - /// A list of service performance summaries. - #[serde(rename = "perf_lists")] - pub perf_lists: Vec, + /// A list of service performance summaries. + #[serde(rename = "perf_lists")] + pub perf_lists: Vec, } impl CloudGetRayPerfLogsResponse { - pub fn new(perf_lists: Vec) -> CloudGetRayPerfLogsResponse { - CloudGetRayPerfLogsResponse { - perf_lists, - } - } + pub fn new(perf_lists: Vec) -> CloudGetRayPerfLogsResponse { + CloudGetRayPerfLogsResponse { perf_lists } + } } - - diff --git a/sdks/full/rust/src/models/cloud_get_region_tiers_response.rs b/sdks/full/rust/src/models/cloud_get_region_tiers_response.rs index e49ac514bf..4c2f4b22de 100644 --- a/sdks/full/rust/src/models/cloud_get_region_tiers_response.rs +++ b/sdks/full/rust/src/models/cloud_get_region_tiers_response.rs @@ -4,26 +4,19 @@ * 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 CloudGetRegionTiersResponse { - /// A list of region server tiers. - #[serde(rename = "tiers")] - pub tiers: Vec, + /// A list of region server tiers. + #[serde(rename = "tiers")] + pub tiers: Vec, } impl CloudGetRegionTiersResponse { - pub fn new(tiers: Vec) -> CloudGetRegionTiersResponse { - CloudGetRegionTiersResponse { - tiers, - } - } + pub fn new(tiers: Vec) -> CloudGetRegionTiersResponse { + CloudGetRegionTiersResponse { tiers } + } } - - diff --git a/sdks/full/rust/src/models/cloud_group_bank_source.rs b/sdks/full/rust/src/models/cloud_group_bank_source.rs index 78e864f8c4..34e49405bb 100644 --- a/sdks/full/rust/src/models/cloud_group_bank_source.rs +++ b/sdks/full/rust/src/models/cloud_group_bank_source.rs @@ -4,30 +4,25 @@ * 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 CloudGroupBankSource { - /// The bank account number of this group's bank source. - #[serde(rename = "account_number")] - pub account_number: String, - /// The bank routing number of this group's bank source. - #[serde(rename = "routing_number")] - pub routing_number: String, + /// The bank account number of this group's bank source. + #[serde(rename = "account_number")] + pub account_number: String, + /// The bank routing number of this group's bank source. + #[serde(rename = "routing_number")] + pub routing_number: String, } impl CloudGroupBankSource { - pub fn new(account_number: String, routing_number: String) -> CloudGroupBankSource { - CloudGroupBankSource { - account_number, - routing_number, - } - } + pub fn new(account_number: String, routing_number: String) -> CloudGroupBankSource { + CloudGroupBankSource { + account_number, + routing_number, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_inspect_response.rs b/sdks/full/rust/src/models/cloud_inspect_response.rs index 21bfa6f475..721bc953dd 100644 --- a/sdks/full/rust/src/models/cloud_inspect_response.rs +++ b/sdks/full/rust/src/models/cloud_inspect_response.rs @@ -4,25 +4,20 @@ * 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 CloudInspectResponse { - #[serde(rename = "agent")] - pub agent: Box, + #[serde(rename = "agent")] + pub agent: Box, } impl CloudInspectResponse { - pub fn new(agent: crate::models::CloudAuthAgent) -> CloudInspectResponse { - CloudInspectResponse { - agent: Box::new(agent), - } - } + pub fn new(agent: crate::models::CloudAuthAgent) -> CloudInspectResponse { + CloudInspectResponse { + agent: Box::new(agent), + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_lobby_summary_analytics.rs b/sdks/full/rust/src/models/cloud_lobby_summary_analytics.rs index e99c372fb3..99601bf8bc 100644 --- a/sdks/full/rust/src/models/cloud_lobby_summary_analytics.rs +++ b/sdks/full/rust/src/models/cloud_lobby_summary_analytics.rs @@ -4,77 +4,88 @@ * 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 */ /// CloudLobbySummaryAnalytics : Analytical information about a lobby. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct CloudLobbySummaryAnalytics { - /// RFC3339 timestamp - #[serde(rename = "create_ts")] - pub create_ts: String, - /// Whether or not this lobby is in a closed state. - #[serde(rename = "is_closed")] - pub is_closed: bool, - /// Whether or not this lobby is idle. - #[serde(rename = "is_idle")] - pub is_idle: bool, - /// Whether or not this lobby is outdated. - #[serde(rename = "is_outdated")] - pub is_outdated: bool, - /// Whether or not this lobby is ready. - #[serde(rename = "is_ready")] - pub is_ready: bool, - #[serde(rename = "lobby_group_id")] - pub lobby_group_id: uuid::Uuid, - /// A human readable short identifier used to references resources. Different than a `rivet.common#Uuid` because this is intended to be human readable. Different than `rivet.common#DisplayName` because this should not include special characters and be short. - #[serde(rename = "lobby_group_name_id")] - pub lobby_group_name_id: String, - #[serde(rename = "lobby_id")] - pub lobby_id: uuid::Uuid, - /// Unsigned 32 bit integer. - #[serde(rename = "max_players_direct")] - pub max_players_direct: i32, - /// Unsigned 32 bit integer. - #[serde(rename = "max_players_normal")] - pub max_players_normal: i32, - /// Unsigned 32 bit integer. - #[serde(rename = "max_players_party")] - pub max_players_party: i32, - #[serde(rename = "region_id")] - pub region_id: uuid::Uuid, - /// Unsigned 32 bit integer. - #[serde(rename = "registered_player_count")] - pub registered_player_count: i32, - /// Unsigned 32 bit integer. - #[serde(rename = "total_player_count")] - pub total_player_count: i32, + /// RFC3339 timestamp + #[serde(rename = "create_ts")] + pub create_ts: String, + /// Whether or not this lobby is in a closed state. + #[serde(rename = "is_closed")] + pub is_closed: bool, + /// Whether or not this lobby is idle. + #[serde(rename = "is_idle")] + pub is_idle: bool, + /// Whether or not this lobby is outdated. + #[serde(rename = "is_outdated")] + pub is_outdated: bool, + /// Whether or not this lobby is ready. + #[serde(rename = "is_ready")] + pub is_ready: bool, + #[serde(rename = "lobby_group_id")] + pub lobby_group_id: uuid::Uuid, + /// A human readable short identifier used to references resources. Different than a `rivet.common#Uuid` because this is intended to be human readable. Different than `rivet.common#DisplayName` because this should not include special characters and be short. + #[serde(rename = "lobby_group_name_id")] + pub lobby_group_name_id: String, + #[serde(rename = "lobby_id")] + pub lobby_id: uuid::Uuid, + /// Unsigned 32 bit integer. + #[serde(rename = "max_players_direct")] + pub max_players_direct: i32, + /// Unsigned 32 bit integer. + #[serde(rename = "max_players_normal")] + pub max_players_normal: i32, + /// Unsigned 32 bit integer. + #[serde(rename = "max_players_party")] + pub max_players_party: i32, + #[serde(rename = "region_id")] + pub region_id: uuid::Uuid, + /// Unsigned 32 bit integer. + #[serde(rename = "registered_player_count")] + pub registered_player_count: i32, + /// Unsigned 32 bit integer. + #[serde(rename = "total_player_count")] + pub total_player_count: i32, } impl CloudLobbySummaryAnalytics { - /// Analytical information about a lobby. - pub fn new(create_ts: String, is_closed: bool, is_idle: bool, is_outdated: bool, is_ready: bool, lobby_group_id: uuid::Uuid, lobby_group_name_id: String, lobby_id: uuid::Uuid, max_players_direct: i32, max_players_normal: i32, max_players_party: i32, region_id: uuid::Uuid, registered_player_count: i32, total_player_count: i32) -> CloudLobbySummaryAnalytics { - CloudLobbySummaryAnalytics { - create_ts, - is_closed, - is_idle, - is_outdated, - is_ready, - lobby_group_id, - lobby_group_name_id, - lobby_id, - max_players_direct, - max_players_normal, - max_players_party, - region_id, - registered_player_count, - total_player_count, - } - } + /// Analytical information about a lobby. + pub fn new( + create_ts: String, + is_closed: bool, + is_idle: bool, + is_outdated: bool, + is_ready: bool, + lobby_group_id: uuid::Uuid, + lobby_group_name_id: String, + lobby_id: uuid::Uuid, + max_players_direct: i32, + max_players_normal: i32, + max_players_party: i32, + region_id: uuid::Uuid, + registered_player_count: i32, + total_player_count: i32, + ) -> CloudLobbySummaryAnalytics { + CloudLobbySummaryAnalytics { + create_ts, + is_closed, + is_idle, + is_outdated, + is_ready, + lobby_group_id, + lobby_group_name_id, + lobby_id, + max_players_direct, + max_players_normal, + max_players_party, + region_id, + registered_player_count, + total_player_count, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_logs_lobby_status.rs b/sdks/full/rust/src/models/cloud_logs_lobby_status.rs index 6ce2a4709b..6ba2e567db 100644 --- a/sdks/full/rust/src/models/cloud_logs_lobby_status.rs +++ b/sdks/full/rust/src/models/cloud_logs_lobby_status.rs @@ -4,30 +4,26 @@ * 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 */ /// CloudLogsLobbyStatus : A union representing the state of a lobby. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct CloudLogsLobbyStatus { - #[serde(rename = "running")] - pub running: serde_json::Value, - #[serde(rename = "stopped", skip_serializing_if = "Option::is_none")] - pub stopped: Option>, + #[serde(rename = "running")] + pub running: serde_json::Value, + #[serde(rename = "stopped", skip_serializing_if = "Option::is_none")] + pub stopped: Option>, } impl CloudLogsLobbyStatus { - /// A union representing the state of a lobby. - pub fn new(running: serde_json::Value) -> CloudLogsLobbyStatus { - CloudLogsLobbyStatus { - running, - stopped: None, - } - } + /// A union representing the state of a lobby. + pub fn new(running: serde_json::Value) -> CloudLogsLobbyStatus { + CloudLogsLobbyStatus { + running, + stopped: None, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_logs_lobby_status_stopped.rs b/sdks/full/rust/src/models/cloud_logs_lobby_status_stopped.rs index c74fa79844..a8c76c69a2 100644 --- a/sdks/full/rust/src/models/cloud_logs_lobby_status_stopped.rs +++ b/sdks/full/rust/src/models/cloud_logs_lobby_status_stopped.rs @@ -4,36 +4,32 @@ * 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 */ /// CloudLogsLobbyStatusStopped : The status of a stopped lobby. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct CloudLogsLobbyStatusStopped { - /// The exit code returned by the lobby's main process when stopped. - #[serde(rename = "exit_code")] - pub exit_code: i32, - /// Whether or not the lobby failed or stopped successfully. - #[serde(rename = "failed")] - pub failed: bool, - /// RFC3339 timestamp - #[serde(rename = "stop_ts")] - pub stop_ts: String, + /// The exit code returned by the lobby's main process when stopped. + #[serde(rename = "exit_code")] + pub exit_code: i32, + /// Whether or not the lobby failed or stopped successfully. + #[serde(rename = "failed")] + pub failed: bool, + /// RFC3339 timestamp + #[serde(rename = "stop_ts")] + pub stop_ts: String, } impl CloudLogsLobbyStatusStopped { - /// The status of a stopped lobby. - pub fn new(exit_code: i32, failed: bool, stop_ts: String) -> CloudLogsLobbyStatusStopped { - CloudLogsLobbyStatusStopped { - exit_code, - failed, - stop_ts, - } - } + /// The status of a stopped lobby. + pub fn new(exit_code: i32, failed: bool, stop_ts: String) -> CloudLogsLobbyStatusStopped { + CloudLogsLobbyStatusStopped { + exit_code, + failed, + stop_ts, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_logs_lobby_summary.rs b/sdks/full/rust/src/models/cloud_logs_lobby_summary.rs index 7f24f714de..9453e99016 100644 --- a/sdks/full/rust/src/models/cloud_logs_lobby_summary.rs +++ b/sdks/full/rust/src/models/cloud_logs_lobby_summary.rs @@ -4,52 +4,55 @@ * 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 */ /// CloudLogsLobbySummary : A logs summary for a lobby. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct CloudLogsLobbySummary { - /// RFC3339 timestamp - #[serde(rename = "create_ts")] - pub create_ts: String, - /// A human readable short identifier used to references resources. Different than a `rivet.common#Uuid` because this is intended to be human readable. Different than `rivet.common#DisplayName` because this should not include special characters and be short. - #[serde(rename = "lobby_group_name_id")] - pub lobby_group_name_id: String, - #[serde(rename = "lobby_id")] - pub lobby_id: uuid::Uuid, - #[serde(rename = "namespace_id")] - pub namespace_id: uuid::Uuid, - /// RFC3339 timestamp - #[serde(rename = "ready_ts", skip_serializing_if = "Option::is_none")] - pub ready_ts: Option, - #[serde(rename = "region_id")] - pub region_id: uuid::Uuid, - /// RFC3339 timestamp - #[serde(rename = "start_ts", skip_serializing_if = "Option::is_none")] - pub start_ts: Option, - #[serde(rename = "status")] - pub status: Box, + /// RFC3339 timestamp + #[serde(rename = "create_ts")] + pub create_ts: String, + /// A human readable short identifier used to references resources. Different than a `rivet.common#Uuid` because this is intended to be human readable. Different than `rivet.common#DisplayName` because this should not include special characters and be short. + #[serde(rename = "lobby_group_name_id")] + pub lobby_group_name_id: String, + #[serde(rename = "lobby_id")] + pub lobby_id: uuid::Uuid, + #[serde(rename = "namespace_id")] + pub namespace_id: uuid::Uuid, + /// RFC3339 timestamp + #[serde(rename = "ready_ts", skip_serializing_if = "Option::is_none")] + pub ready_ts: Option, + #[serde(rename = "region_id")] + pub region_id: uuid::Uuid, + /// RFC3339 timestamp + #[serde(rename = "start_ts", skip_serializing_if = "Option::is_none")] + pub start_ts: Option, + #[serde(rename = "status")] + pub status: Box, } impl CloudLogsLobbySummary { - /// A logs summary for a lobby. - pub fn new(create_ts: String, lobby_group_name_id: String, lobby_id: uuid::Uuid, namespace_id: uuid::Uuid, region_id: uuid::Uuid, status: crate::models::CloudLogsLobbyStatus) -> CloudLogsLobbySummary { - CloudLogsLobbySummary { - create_ts, - lobby_group_name_id, - lobby_id, - namespace_id, - ready_ts: None, - region_id, - start_ts: None, - status: Box::new(status), - } - } + /// A logs summary for a lobby. + pub fn new( + create_ts: String, + lobby_group_name_id: String, + lobby_id: uuid::Uuid, + namespace_id: uuid::Uuid, + region_id: uuid::Uuid, + status: crate::models::CloudLogsLobbyStatus, + ) -> CloudLogsLobbySummary { + CloudLogsLobbySummary { + create_ts, + lobby_group_name_id, + lobby_id, + namespace_id, + ready_ts: None, + region_id, + start_ts: None, + status: Box::new(status), + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_logs_perf_mark.rs b/sdks/full/rust/src/models/cloud_logs_perf_mark.rs index 7df6a121f9..5510570cbe 100644 --- a/sdks/full/rust/src/models/cloud_logs_perf_mark.rs +++ b/sdks/full/rust/src/models/cloud_logs_perf_mark.rs @@ -4,38 +4,34 @@ * 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 */ /// CloudLogsPerfMark : A performance mark. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct CloudLogsPerfMark { - /// The label given to this performance mark. - #[serde(rename = "label")] - pub label: String, - #[serde(rename = "ray_id", skip_serializing_if = "Option::is_none")] - pub ray_id: Option, - #[serde(rename = "req_id", skip_serializing_if = "Option::is_none")] - pub req_id: Option, - /// RFC3339 timestamp - #[serde(rename = "ts")] - pub ts: String, + /// The label given to this performance mark. + #[serde(rename = "label")] + pub label: String, + #[serde(rename = "ray_id", skip_serializing_if = "Option::is_none")] + pub ray_id: Option, + #[serde(rename = "req_id", skip_serializing_if = "Option::is_none")] + pub req_id: Option, + /// RFC3339 timestamp + #[serde(rename = "ts")] + pub ts: String, } impl CloudLogsPerfMark { - /// A performance mark. - pub fn new(label: String, ts: String) -> CloudLogsPerfMark { - CloudLogsPerfMark { - label, - ray_id: None, - req_id: None, - ts, - } - } + /// A performance mark. + pub fn new(label: String, ts: String) -> CloudLogsPerfMark { + CloudLogsPerfMark { + label, + ray_id: None, + req_id: None, + ts, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_logs_perf_span.rs b/sdks/full/rust/src/models/cloud_logs_perf_span.rs index 43429ba2c8..ca76fd748f 100644 --- a/sdks/full/rust/src/models/cloud_logs_perf_span.rs +++ b/sdks/full/rust/src/models/cloud_logs_perf_span.rs @@ -4,39 +4,35 @@ * 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 */ /// CloudLogsPerfSpan : A performance span. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct CloudLogsPerfSpan { - /// RFC3339 timestamp - #[serde(rename = "finish_ts", skip_serializing_if = "Option::is_none")] - pub finish_ts: Option, - /// The label given to this performance span. - #[serde(rename = "label")] - pub label: String, - #[serde(rename = "req_id", skip_serializing_if = "Option::is_none")] - pub req_id: Option, - /// RFC3339 timestamp - #[serde(rename = "start_ts")] - pub start_ts: String, + /// RFC3339 timestamp + #[serde(rename = "finish_ts", skip_serializing_if = "Option::is_none")] + pub finish_ts: Option, + /// The label given to this performance span. + #[serde(rename = "label")] + pub label: String, + #[serde(rename = "req_id", skip_serializing_if = "Option::is_none")] + pub req_id: Option, + /// RFC3339 timestamp + #[serde(rename = "start_ts")] + pub start_ts: String, } impl CloudLogsPerfSpan { - /// A performance span. - pub fn new(label: String, start_ts: String) -> CloudLogsPerfSpan { - CloudLogsPerfSpan { - finish_ts: None, - label, - req_id: None, - start_ts, - } - } + /// A performance span. + pub fn new(label: String, start_ts: String) -> CloudLogsPerfSpan { + CloudLogsPerfSpan { + finish_ts: None, + label, + req_id: None, + start_ts, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_matchmaker_development_port.rs b/sdks/full/rust/src/models/cloud_matchmaker_development_port.rs index b901399953..a4be2575ae 100644 --- a/sdks/full/rust/src/models/cloud_matchmaker_development_port.rs +++ b/sdks/full/rust/src/models/cloud_matchmaker_development_port.rs @@ -4,33 +4,31 @@ * 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 */ /// CloudMatchmakerDevelopmentPort : A port configuration used to create development tokens. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct CloudMatchmakerDevelopmentPort { - #[serde(rename = "port", skip_serializing_if = "Option::is_none")] - pub port: Option, - #[serde(rename = "port_range", skip_serializing_if = "Option::is_none")] - pub port_range: Option>, - #[serde(rename = "protocol")] - pub protocol: crate::models::CloudVersionMatchmakerPortProtocol, + #[serde(rename = "port", skip_serializing_if = "Option::is_none")] + pub port: Option, + #[serde(rename = "port_range", skip_serializing_if = "Option::is_none")] + pub port_range: Option>, + #[serde(rename = "protocol")] + pub protocol: crate::models::CloudVersionMatchmakerPortProtocol, } impl CloudMatchmakerDevelopmentPort { - /// A port configuration used to create development tokens. - pub fn new(protocol: crate::models::CloudVersionMatchmakerPortProtocol) -> CloudMatchmakerDevelopmentPort { - CloudMatchmakerDevelopmentPort { - port: None, - port_range: None, - protocol, - } - } + /// A port configuration used to create development tokens. + pub fn new( + protocol: crate::models::CloudVersionMatchmakerPortProtocol, + ) -> CloudMatchmakerDevelopmentPort { + CloudMatchmakerDevelopmentPort { + port: None, + port_range: None, + protocol, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_matchmaker_namespace_config.rs b/sdks/full/rust/src/models/cloud_matchmaker_namespace_config.rs index 458a1df6b1..07b9f85be3 100644 --- a/sdks/full/rust/src/models/cloud_matchmaker_namespace_config.rs +++ b/sdks/full/rust/src/models/cloud_matchmaker_namespace_config.rs @@ -4,48 +4,51 @@ * 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 */ /// CloudMatchmakerNamespaceConfig : Matchmaker configuration for a given namespace. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct CloudMatchmakerNamespaceConfig { - /// Unsigned 32 bit integer. - #[serde(rename = "lobby_count_max")] - pub lobby_count_max: i32, - /// Unsigned 32 bit integer. - #[serde(rename = "max_players_per_client")] - pub max_players_per_client: i32, - /// Unsigned 32 bit integer. - #[serde(rename = "max_players_per_client_hosting")] - pub max_players_per_client_hosting: i32, - /// Unsigned 32 bit integer. - #[serde(rename = "max_players_per_client_proxy")] - pub max_players_per_client_proxy: i32, - /// Unsigned 32 bit integer. - #[serde(rename = "max_players_per_client_tor")] - pub max_players_per_client_tor: i32, - /// Unsigned 32 bit integer. - #[serde(rename = "max_players_per_client_vpn")] - pub max_players_per_client_vpn: i32, + /// Unsigned 32 bit integer. + #[serde(rename = "lobby_count_max")] + pub lobby_count_max: i32, + /// Unsigned 32 bit integer. + #[serde(rename = "max_players_per_client")] + pub max_players_per_client: i32, + /// Unsigned 32 bit integer. + #[serde(rename = "max_players_per_client_hosting")] + pub max_players_per_client_hosting: i32, + /// Unsigned 32 bit integer. + #[serde(rename = "max_players_per_client_proxy")] + pub max_players_per_client_proxy: i32, + /// Unsigned 32 bit integer. + #[serde(rename = "max_players_per_client_tor")] + pub max_players_per_client_tor: i32, + /// Unsigned 32 bit integer. + #[serde(rename = "max_players_per_client_vpn")] + pub max_players_per_client_vpn: i32, } impl CloudMatchmakerNamespaceConfig { - /// Matchmaker configuration for a given namespace. - pub fn new(lobby_count_max: i32, max_players_per_client: i32, max_players_per_client_hosting: i32, max_players_per_client_proxy: i32, max_players_per_client_tor: i32, max_players_per_client_vpn: i32) -> CloudMatchmakerNamespaceConfig { - CloudMatchmakerNamespaceConfig { - lobby_count_max, - max_players_per_client, - max_players_per_client_hosting, - max_players_per_client_proxy, - max_players_per_client_tor, - max_players_per_client_vpn, - } - } + /// Matchmaker configuration for a given namespace. + pub fn new( + lobby_count_max: i32, + max_players_per_client: i32, + max_players_per_client_hosting: i32, + max_players_per_client_proxy: i32, + max_players_per_client_tor: i32, + max_players_per_client_vpn: i32, + ) -> CloudMatchmakerNamespaceConfig { + CloudMatchmakerNamespaceConfig { + lobby_count_max, + max_players_per_client, + max_players_per_client_hosting, + max_players_per_client_proxy, + max_players_per_client_tor, + max_players_per_client_vpn, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_namespace_config.rs b/sdks/full/rust/src/models/cloud_namespace_config.rs index 7dfe67ee46..80029d1d79 100644 --- a/sdks/full/rust/src/models/cloud_namespace_config.rs +++ b/sdks/full/rust/src/models/cloud_namespace_config.rs @@ -4,38 +4,39 @@ * 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 */ /// CloudNamespaceConfig : Cloud configuration for a given namespace. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct CloudNamespaceConfig { - #[serde(rename = "cdn")] - pub cdn: Box, - /// Identity configuration for a given namespace. - #[serde(rename = "identity")] - pub identity: serde_json::Value, - /// KV configuration for a given namespace. - #[serde(rename = "kv")] - pub kv: serde_json::Value, - #[serde(rename = "matchmaker")] - pub matchmaker: Box, + #[serde(rename = "cdn")] + pub cdn: Box, + /// Identity configuration for a given namespace. + #[serde(rename = "identity")] + pub identity: serde_json::Value, + /// KV configuration for a given namespace. + #[serde(rename = "kv")] + pub kv: serde_json::Value, + #[serde(rename = "matchmaker")] + pub matchmaker: Box, } impl CloudNamespaceConfig { - /// Cloud configuration for a given namespace. - pub fn new(cdn: crate::models::CloudCdnNamespaceConfig, identity: serde_json::Value, kv: serde_json::Value, matchmaker: crate::models::CloudMatchmakerNamespaceConfig) -> CloudNamespaceConfig { - CloudNamespaceConfig { - cdn: Box::new(cdn), - identity, - kv, - matchmaker: Box::new(matchmaker), - } - } + /// Cloud configuration for a given namespace. + pub fn new( + cdn: crate::models::CloudCdnNamespaceConfig, + identity: serde_json::Value, + kv: serde_json::Value, + matchmaker: crate::models::CloudMatchmakerNamespaceConfig, + ) -> CloudNamespaceConfig { + CloudNamespaceConfig { + cdn: Box::new(cdn), + identity, + kv, + matchmaker: Box::new(matchmaker), + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_namespace_full.rs b/sdks/full/rust/src/models/cloud_namespace_full.rs index 581f7008ae..a099ca3987 100644 --- a/sdks/full/rust/src/models/cloud_namespace_full.rs +++ b/sdks/full/rust/src/models/cloud_namespace_full.rs @@ -4,45 +4,48 @@ * 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 */ /// CloudNamespaceFull : A full namespace. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct CloudNamespaceFull { - #[serde(rename = "config")] - pub config: Box, - /// RFC3339 timestamp - #[serde(rename = "create_ts")] - pub create_ts: String, - /// Represent a resource's readable display name. - #[serde(rename = "display_name")] - pub display_name: String, - /// A human readable short identifier used to references resources. Different than a `rivet.common#Uuid` because this is intended to be human readable. Different than `rivet.common#DisplayName` because this should not include special characters and be short. - #[serde(rename = "name_id")] - pub name_id: String, - #[serde(rename = "namespace_id")] - pub namespace_id: uuid::Uuid, - #[serde(rename = "version_id")] - pub version_id: uuid::Uuid, + #[serde(rename = "config")] + pub config: Box, + /// RFC3339 timestamp + #[serde(rename = "create_ts")] + pub create_ts: String, + /// Represent a resource's readable display name. + #[serde(rename = "display_name")] + pub display_name: String, + /// A human readable short identifier used to references resources. Different than a `rivet.common#Uuid` because this is intended to be human readable. Different than `rivet.common#DisplayName` because this should not include special characters and be short. + #[serde(rename = "name_id")] + pub name_id: String, + #[serde(rename = "namespace_id")] + pub namespace_id: uuid::Uuid, + #[serde(rename = "version_id")] + pub version_id: uuid::Uuid, } impl CloudNamespaceFull { - /// A full namespace. - pub fn new(config: crate::models::CloudNamespaceConfig, create_ts: String, display_name: String, name_id: String, namespace_id: uuid::Uuid, version_id: uuid::Uuid) -> CloudNamespaceFull { - CloudNamespaceFull { - config: Box::new(config), - create_ts, - display_name, - name_id, - namespace_id, - version_id, - } - } + /// A full namespace. + pub fn new( + config: crate::models::CloudNamespaceConfig, + create_ts: String, + display_name: String, + name_id: String, + namespace_id: uuid::Uuid, + version_id: uuid::Uuid, + ) -> CloudNamespaceFull { + CloudNamespaceFull { + config: Box::new(config), + create_ts, + display_name, + name_id, + namespace_id, + version_id, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_namespace_summary.rs b/sdks/full/rust/src/models/cloud_namespace_summary.rs index d7e3215a51..52aaf7abaf 100644 --- a/sdks/full/rust/src/models/cloud_namespace_summary.rs +++ b/sdks/full/rust/src/models/cloud_namespace_summary.rs @@ -4,42 +4,44 @@ * 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 */ /// CloudNamespaceSummary : A namespace summary. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct CloudNamespaceSummary { - /// RFC3339 timestamp - #[serde(rename = "create_ts")] - pub create_ts: String, - /// Represent a resource's readable display name. - #[serde(rename = "display_name")] - pub display_name: String, - /// A human readable short identifier used to references resources. Different than a `rivet.common#Uuid` because this is intended to be human readable. Different than `rivet.common#DisplayName` because this should not include special characters and be short. - #[serde(rename = "name_id")] - pub name_id: String, - #[serde(rename = "namespace_id")] - pub namespace_id: uuid::Uuid, - #[serde(rename = "version_id")] - pub version_id: uuid::Uuid, + /// RFC3339 timestamp + #[serde(rename = "create_ts")] + pub create_ts: String, + /// Represent a resource's readable display name. + #[serde(rename = "display_name")] + pub display_name: String, + /// A human readable short identifier used to references resources. Different than a `rivet.common#Uuid` because this is intended to be human readable. Different than `rivet.common#DisplayName` because this should not include special characters and be short. + #[serde(rename = "name_id")] + pub name_id: String, + #[serde(rename = "namespace_id")] + pub namespace_id: uuid::Uuid, + #[serde(rename = "version_id")] + pub version_id: uuid::Uuid, } impl CloudNamespaceSummary { - /// A namespace summary. - pub fn new(create_ts: String, display_name: String, name_id: String, namespace_id: uuid::Uuid, version_id: uuid::Uuid) -> CloudNamespaceSummary { - CloudNamespaceSummary { - create_ts, - display_name, - name_id, - namespace_id, - version_id, - } - } + /// A namespace summary. + pub fn new( + create_ts: String, + display_name: String, + name_id: String, + namespace_id: uuid::Uuid, + version_id: uuid::Uuid, + ) -> CloudNamespaceSummary { + CloudNamespaceSummary { + create_ts, + display_name, + name_id, + namespace_id, + version_id, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_namespace_version.rs b/sdks/full/rust/src/models/cloud_namespace_version.rs index fcab3769a1..16dcd05f7e 100644 --- a/sdks/full/rust/src/models/cloud_namespace_version.rs +++ b/sdks/full/rust/src/models/cloud_namespace_version.rs @@ -4,36 +4,36 @@ * 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 */ /// CloudNamespaceVersion : A previously deployed namespace version. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct CloudNamespaceVersion { - /// RFC3339 timestamp - #[serde(rename = "deploy_ts")] - pub deploy_ts: String, - /// A universally unique identifier. - #[serde(rename = "namespace_id")] - pub namespace_id: String, - /// A universally unique identifier. - #[serde(rename = "version_id")] - pub version_id: String, + /// RFC3339 timestamp + #[serde(rename = "deploy_ts")] + pub deploy_ts: String, + /// A universally unique identifier. + #[serde(rename = "namespace_id")] + pub namespace_id: String, + /// A universally unique identifier. + #[serde(rename = "version_id")] + pub version_id: String, } impl CloudNamespaceVersion { - /// A previously deployed namespace version. - pub fn new(deploy_ts: String, namespace_id: String, version_id: String) -> CloudNamespaceVersion { - CloudNamespaceVersion { - deploy_ts, - namespace_id, - version_id, - } - } + /// A previously deployed namespace version. + pub fn new( + deploy_ts: String, + namespace_id: String, + version_id: String, + ) -> CloudNamespaceVersion { + CloudNamespaceVersion { + deploy_ts, + namespace_id, + version_id, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_region_summary.rs b/sdks/full/rust/src/models/cloud_region_summary.rs index 397c9ceb8e..cd574d637c 100644 --- a/sdks/full/rust/src/models/cloud_region_summary.rs +++ b/sdks/full/rust/src/models/cloud_region_summary.rs @@ -4,46 +4,49 @@ * 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 */ /// CloudRegionSummary : A region summary. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct CloudRegionSummary { - /// The server provider of this region. - #[serde(rename = "provider")] - pub provider: String, - /// Represent a resource's readable display name. - #[serde(rename = "provider_display_name")] - pub provider_display_name: String, - /// Represent a resource's readable display name. - #[serde(rename = "region_display_name")] - pub region_display_name: String, - #[serde(rename = "region_id")] - pub region_id: uuid::Uuid, - /// A human readable short identifier used to references resources. Different than a `rivet.common#Uuid` because this is intended to be human readable. Different than `rivet.common#DisplayName` because this should not include special characters and be short. - #[serde(rename = "region_name_id")] - pub region_name_id: String, - #[serde(rename = "universal_region")] - pub universal_region: crate::models::CloudUniversalRegion, + /// The server provider of this region. + #[serde(rename = "provider")] + pub provider: String, + /// Represent a resource's readable display name. + #[serde(rename = "provider_display_name")] + pub provider_display_name: String, + /// Represent a resource's readable display name. + #[serde(rename = "region_display_name")] + pub region_display_name: String, + #[serde(rename = "region_id")] + pub region_id: uuid::Uuid, + /// A human readable short identifier used to references resources. Different than a `rivet.common#Uuid` because this is intended to be human readable. Different than `rivet.common#DisplayName` because this should not include special characters and be short. + #[serde(rename = "region_name_id")] + pub region_name_id: String, + #[serde(rename = "universal_region")] + pub universal_region: crate::models::CloudUniversalRegion, } impl CloudRegionSummary { - /// A region summary. - pub fn new(provider: String, provider_display_name: String, region_display_name: String, region_id: uuid::Uuid, region_name_id: String, universal_region: crate::models::CloudUniversalRegion) -> CloudRegionSummary { - CloudRegionSummary { - provider, - provider_display_name, - region_display_name, - region_id, - region_name_id, - universal_region, - } - } + /// A region summary. + pub fn new( + provider: String, + provider_display_name: String, + region_display_name: String, + region_id: uuid::Uuid, + region_name_id: String, + universal_region: crate::models::CloudUniversalRegion, + ) -> CloudRegionSummary { + CloudRegionSummary { + provider, + provider_display_name, + region_display_name, + region_id, + region_name_id, + universal_region, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_region_tier.rs b/sdks/full/rust/src/models/cloud_region_tier.rs index 7b21fb0790..3a4a9b32fb 100644 --- a/sdks/full/rust/src/models/cloud_region_tier.rs +++ b/sdks/full/rust/src/models/cloud_region_tier.rs @@ -4,56 +4,61 @@ * 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 */ /// CloudRegionTier : A region server tier. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct CloudRegionTier { - /// Internet bandwidth (MB). - #[serde(rename = "bandwidth")] - pub bandwidth: i32, - /// CPU frequency (MHz). - #[serde(rename = "cpu")] - pub cpu: i32, - /// Allocated disk space (MB). - #[serde(rename = "disk")] - pub disk: i32, - /// Allocated memory (MB). - #[serde(rename = "memory")] - pub memory: i32, - /// **Deprecated** Price billed for every second this server is running (in quadrillionth USD, 1,000,000,000,000 = $1.00). - #[serde(rename = "price_per_second")] - pub price_per_second: i32, - /// Together with the numerator, denotes the portion of the CPU a given server uses. - #[serde(rename = "rivet_cores_denominator")] - pub rivet_cores_denominator: i32, - /// Together with the denominator, denotes the portion of the CPU a given server uses. - #[serde(rename = "rivet_cores_numerator")] - pub rivet_cores_numerator: i32, - /// A human readable short identifier used to references resources. Different than a `rivet.common#Uuid` because this is intended to be human readable. Different than `rivet.common#DisplayName` because this should not include special characters and be short. - #[serde(rename = "tier_name_id")] - pub tier_name_id: String, + /// Internet bandwidth (MB). + #[serde(rename = "bandwidth")] + pub bandwidth: i32, + /// CPU frequency (MHz). + #[serde(rename = "cpu")] + pub cpu: i32, + /// Allocated disk space (MB). + #[serde(rename = "disk")] + pub disk: i32, + /// Allocated memory (MB). + #[serde(rename = "memory")] + pub memory: i32, + /// **Deprecated** Price billed for every second this server is running (in quadrillionth USD, 1,000,000,000,000 = $1.00). + #[serde(rename = "price_per_second")] + pub price_per_second: i32, + /// Together with the numerator, denotes the portion of the CPU a given server uses. + #[serde(rename = "rivet_cores_denominator")] + pub rivet_cores_denominator: i32, + /// Together with the denominator, denotes the portion of the CPU a given server uses. + #[serde(rename = "rivet_cores_numerator")] + pub rivet_cores_numerator: i32, + /// A human readable short identifier used to references resources. Different than a `rivet.common#Uuid` because this is intended to be human readable. Different than `rivet.common#DisplayName` because this should not include special characters and be short. + #[serde(rename = "tier_name_id")] + pub tier_name_id: String, } impl CloudRegionTier { - /// A region server tier. - pub fn new(bandwidth: i32, cpu: i32, disk: i32, memory: i32, price_per_second: i32, rivet_cores_denominator: i32, rivet_cores_numerator: i32, tier_name_id: String) -> CloudRegionTier { - CloudRegionTier { - bandwidth, - cpu, - disk, - memory, - price_per_second, - rivet_cores_denominator, - rivet_cores_numerator, - tier_name_id, - } - } + /// A region server tier. + pub fn new( + bandwidth: i32, + cpu: i32, + disk: i32, + memory: i32, + price_per_second: i32, + rivet_cores_denominator: i32, + rivet_cores_numerator: i32, + tier_name_id: String, + ) -> CloudRegionTier { + CloudRegionTier { + bandwidth, + cpu, + disk, + memory, + price_per_second, + rivet_cores_denominator, + rivet_cores_numerator, + tier_name_id, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_region_tier_expenses.rs b/sdks/full/rust/src/models/cloud_region_tier_expenses.rs index 58daa9b4a1..84015024eb 100644 --- a/sdks/full/rust/src/models/cloud_region_tier_expenses.rs +++ b/sdks/full/rust/src/models/cloud_region_tier_expenses.rs @@ -4,46 +4,49 @@ * 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 */ /// CloudRegionTierExpenses : Region tier expenses. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct CloudRegionTierExpenses { - /// Amount of expenses for this region tier (in hundred-thousandths USD, 100,000 = $1.00). - #[serde(rename = "expenses")] - pub expenses: f64, - /// A human readable short identifier used to references resources. Different than a `rivet.common#Uuid` because this is intended to be human readable. Different than `rivet.common#DisplayName` because this should not include special characters and be short. - #[serde(rename = "lobby_group_name_id")] - pub lobby_group_name_id: String, - #[serde(rename = "namespace_id")] - pub namespace_id: uuid::Uuid, - #[serde(rename = "region_id")] - pub region_id: uuid::Uuid, - /// A human readable short identifier used to references resources. Different than a `rivet.common#Uuid` because this is intended to be human readable. Different than `rivet.common#DisplayName` because this should not include special characters and be short. - #[serde(rename = "tier_name_id")] - pub tier_name_id: String, - /// How long a region tier has been active (in milliseconds). - #[serde(rename = "uptime")] - pub uptime: f64, + /// Amount of expenses for this region tier (in hundred-thousandths USD, 100,000 = $1.00). + #[serde(rename = "expenses")] + pub expenses: f64, + /// A human readable short identifier used to references resources. Different than a `rivet.common#Uuid` because this is intended to be human readable. Different than `rivet.common#DisplayName` because this should not include special characters and be short. + #[serde(rename = "lobby_group_name_id")] + pub lobby_group_name_id: String, + #[serde(rename = "namespace_id")] + pub namespace_id: uuid::Uuid, + #[serde(rename = "region_id")] + pub region_id: uuid::Uuid, + /// A human readable short identifier used to references resources. Different than a `rivet.common#Uuid` because this is intended to be human readable. Different than `rivet.common#DisplayName` because this should not include special characters and be short. + #[serde(rename = "tier_name_id")] + pub tier_name_id: String, + /// How long a region tier has been active (in milliseconds). + #[serde(rename = "uptime")] + pub uptime: f64, } impl CloudRegionTierExpenses { - /// Region tier expenses. - pub fn new(expenses: f64, lobby_group_name_id: String, namespace_id: uuid::Uuid, region_id: uuid::Uuid, tier_name_id: String, uptime: f64) -> CloudRegionTierExpenses { - CloudRegionTierExpenses { - expenses, - lobby_group_name_id, - namespace_id, - region_id, - tier_name_id, - uptime, - } - } + /// Region tier expenses. + pub fn new( + expenses: f64, + lobby_group_name_id: String, + namespace_id: uuid::Uuid, + region_id: uuid::Uuid, + tier_name_id: String, + uptime: f64, + ) -> CloudRegionTierExpenses { + CloudRegionTierExpenses { + expenses, + lobby_group_name_id, + namespace_id, + region_id, + tier_name_id, + uptime, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_svc_metrics.rs b/sdks/full/rust/src/models/cloud_svc_metrics.rs index e4d5250626..a2fc995492 100644 --- a/sdks/full/rust/src/models/cloud_svc_metrics.rs +++ b/sdks/full/rust/src/models/cloud_svc_metrics.rs @@ -4,40 +4,36 @@ * 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 */ /// CloudSvcMetrics : Metrics relating to a job service. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct CloudSvcMetrics { - /// Total allocated memory (MB). - #[serde(rename = "allocated_memory", skip_serializing_if = "Option::is_none")] - pub allocated_memory: Option, - /// CPU metrics. - #[serde(rename = "cpu")] - pub cpu: Vec, - /// The job name. - #[serde(rename = "job")] - pub job: String, - /// Memory metrics. - #[serde(rename = "memory")] - pub memory: Vec, + /// Total allocated memory (MB). + #[serde(rename = "allocated_memory", skip_serializing_if = "Option::is_none")] + pub allocated_memory: Option, + /// CPU metrics. + #[serde(rename = "cpu")] + pub cpu: Vec, + /// The job name. + #[serde(rename = "job")] + pub job: String, + /// Memory metrics. + #[serde(rename = "memory")] + pub memory: Vec, } impl CloudSvcMetrics { - /// Metrics relating to a job service. - pub fn new(cpu: Vec, job: String, memory: Vec) -> CloudSvcMetrics { - CloudSvcMetrics { - allocated_memory: None, - cpu, - job, - memory, - } - } + /// Metrics relating to a job service. + pub fn new(cpu: Vec, job: String, memory: Vec) -> CloudSvcMetrics { + CloudSvcMetrics { + allocated_memory: None, + cpu, + job, + memory, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_svc_perf.rs b/sdks/full/rust/src/models/cloud_svc_perf.rs index 297dd08172..0baeb61ec9 100644 --- a/sdks/full/rust/src/models/cloud_svc_perf.rs +++ b/sdks/full/rust/src/models/cloud_svc_perf.rs @@ -4,47 +4,49 @@ * 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 */ /// CloudSvcPerf : A service performance summary. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct CloudSvcPerf { - /// Unsigned 64 bit integer. - #[serde(rename = "duration")] - pub duration: i64, - /// A list of performance marks. - #[serde(rename = "marks")] - pub marks: Vec, - #[serde(rename = "req_id", skip_serializing_if = "Option::is_none")] - pub req_id: Option, - /// A list of performance spans. - #[serde(rename = "spans")] - pub spans: Vec, - /// The name of the service. - #[serde(rename = "svc_name")] - pub svc_name: String, - /// RFC3339 timestamp - #[serde(rename = "ts")] - pub ts: String, + /// Unsigned 64 bit integer. + #[serde(rename = "duration")] + pub duration: i64, + /// A list of performance marks. + #[serde(rename = "marks")] + pub marks: Vec, + #[serde(rename = "req_id", skip_serializing_if = "Option::is_none")] + pub req_id: Option, + /// A list of performance spans. + #[serde(rename = "spans")] + pub spans: Vec, + /// The name of the service. + #[serde(rename = "svc_name")] + pub svc_name: String, + /// RFC3339 timestamp + #[serde(rename = "ts")] + pub ts: String, } impl CloudSvcPerf { - /// A service performance summary. - pub fn new(duration: i64, marks: Vec, spans: Vec, svc_name: String, ts: String) -> CloudSvcPerf { - CloudSvcPerf { - duration, - marks, - req_id: None, - spans, - svc_name, - ts, - } - } + /// A service performance summary. + pub fn new( + duration: i64, + marks: Vec, + spans: Vec, + svc_name: String, + ts: String, + ) -> CloudSvcPerf { + CloudSvcPerf { + duration, + marks, + req_id: None, + spans, + svc_name, + ts, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_universal_region.rs b/sdks/full/rust/src/models/cloud_universal_region.rs index 33d71d0238..eadba68d59 100644 --- a/sdks/full/rust/src/models/cloud_universal_region.rs +++ b/sdks/full/rust/src/models/cloud_universal_region.rs @@ -4,7 +4,7 @@ * 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 */ @@ -13,106 +13,101 @@ /// **Deprecated** #[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] pub enum CloudUniversalRegion { - #[serde(rename = "unknown")] - Unknown, - #[serde(rename = "local")] - Local, - #[serde(rename = "amsterdam")] - Amsterdam, - #[serde(rename = "atlanta")] - Atlanta, - #[serde(rename = "bangalore")] - Bangalore, - #[serde(rename = "dallas")] - Dallas, - #[serde(rename = "frankfurt")] - Frankfurt, - #[serde(rename = "london")] - London, - #[serde(rename = "mumbai")] - Mumbai, - #[serde(rename = "newark")] - Newark, - #[serde(rename = "new_york_city")] - NewYorkCity, - #[serde(rename = "san_francisco")] - SanFrancisco, - #[serde(rename = "singapore")] - Singapore, - #[serde(rename = "sydney")] - Sydney, - #[serde(rename = "tokyo")] - Tokyo, - #[serde(rename = "toronto")] - Toronto, - #[serde(rename = "washington_dc")] - WashingtonDc, - #[serde(rename = "chicago")] - Chicago, - #[serde(rename = "paris")] - Paris, - #[serde(rename = "seattle")] - Seattle, - #[serde(rename = "sao_paulo")] - SaoPaulo, - #[serde(rename = "stockholm")] - Stockholm, - #[serde(rename = "chennai")] - Chennai, - #[serde(rename = "osaka")] - Osaka, - #[serde(rename = "milan")] - Milan, - #[serde(rename = "miami")] - Miami, - #[serde(rename = "jakarta")] - Jakarta, - #[serde(rename = "los_angeles")] - LosAngeles, - + #[serde(rename = "unknown")] + Unknown, + #[serde(rename = "local")] + Local, + #[serde(rename = "amsterdam")] + Amsterdam, + #[serde(rename = "atlanta")] + Atlanta, + #[serde(rename = "bangalore")] + Bangalore, + #[serde(rename = "dallas")] + Dallas, + #[serde(rename = "frankfurt")] + Frankfurt, + #[serde(rename = "london")] + London, + #[serde(rename = "mumbai")] + Mumbai, + #[serde(rename = "newark")] + Newark, + #[serde(rename = "new_york_city")] + NewYorkCity, + #[serde(rename = "san_francisco")] + SanFrancisco, + #[serde(rename = "singapore")] + Singapore, + #[serde(rename = "sydney")] + Sydney, + #[serde(rename = "tokyo")] + Tokyo, + #[serde(rename = "toronto")] + Toronto, + #[serde(rename = "washington_dc")] + WashingtonDc, + #[serde(rename = "chicago")] + Chicago, + #[serde(rename = "paris")] + Paris, + #[serde(rename = "seattle")] + Seattle, + #[serde(rename = "sao_paulo")] + SaoPaulo, + #[serde(rename = "stockholm")] + Stockholm, + #[serde(rename = "chennai")] + Chennai, + #[serde(rename = "osaka")] + Osaka, + #[serde(rename = "milan")] + Milan, + #[serde(rename = "miami")] + Miami, + #[serde(rename = "jakarta")] + Jakarta, + #[serde(rename = "los_angeles")] + LosAngeles, } impl ToString for CloudUniversalRegion { - fn to_string(&self) -> String { - match self { - Self::Unknown => String::from("unknown"), - Self::Local => String::from("local"), - Self::Amsterdam => String::from("amsterdam"), - Self::Atlanta => String::from("atlanta"), - Self::Bangalore => String::from("bangalore"), - Self::Dallas => String::from("dallas"), - Self::Frankfurt => String::from("frankfurt"), - Self::London => String::from("london"), - Self::Mumbai => String::from("mumbai"), - Self::Newark => String::from("newark"), - Self::NewYorkCity => String::from("new_york_city"), - Self::SanFrancisco => String::from("san_francisco"), - Self::Singapore => String::from("singapore"), - Self::Sydney => String::from("sydney"), - Self::Tokyo => String::from("tokyo"), - Self::Toronto => String::from("toronto"), - Self::WashingtonDc => String::from("washington_dc"), - Self::Chicago => String::from("chicago"), - Self::Paris => String::from("paris"), - Self::Seattle => String::from("seattle"), - Self::SaoPaulo => String::from("sao_paulo"), - Self::Stockholm => String::from("stockholm"), - Self::Chennai => String::from("chennai"), - Self::Osaka => String::from("osaka"), - Self::Milan => String::from("milan"), - Self::Miami => String::from("miami"), - Self::Jakarta => String::from("jakarta"), - Self::LosAngeles => String::from("los_angeles"), - } - } + fn to_string(&self) -> String { + match self { + Self::Unknown => String::from("unknown"), + Self::Local => String::from("local"), + Self::Amsterdam => String::from("amsterdam"), + Self::Atlanta => String::from("atlanta"), + Self::Bangalore => String::from("bangalore"), + Self::Dallas => String::from("dallas"), + Self::Frankfurt => String::from("frankfurt"), + Self::London => String::from("london"), + Self::Mumbai => String::from("mumbai"), + Self::Newark => String::from("newark"), + Self::NewYorkCity => String::from("new_york_city"), + Self::SanFrancisco => String::from("san_francisco"), + Self::Singapore => String::from("singapore"), + Self::Sydney => String::from("sydney"), + Self::Tokyo => String::from("tokyo"), + Self::Toronto => String::from("toronto"), + Self::WashingtonDc => String::from("washington_dc"), + Self::Chicago => String::from("chicago"), + Self::Paris => String::from("paris"), + Self::Seattle => String::from("seattle"), + Self::SaoPaulo => String::from("sao_paulo"), + Self::Stockholm => String::from("stockholm"), + Self::Chennai => String::from("chennai"), + Self::Osaka => String::from("osaka"), + Self::Milan => String::from("milan"), + Self::Miami => String::from("miami"), + Self::Jakarta => String::from("jakarta"), + Self::LosAngeles => String::from("los_angeles"), + } + } } impl Default for CloudUniversalRegion { - fn default() -> CloudUniversalRegion { - Self::Unknown - } + fn default() -> CloudUniversalRegion { + Self::Unknown + } } - - - - diff --git a/sdks/full/rust/src/models/cloud_validate_group_request.rs b/sdks/full/rust/src/models/cloud_validate_group_request.rs index 998146bdce..394c6fea71 100644 --- a/sdks/full/rust/src/models/cloud_validate_group_request.rs +++ b/sdks/full/rust/src/models/cloud_validate_group_request.rs @@ -4,26 +4,19 @@ * 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 CloudValidateGroupRequest { - /// Represent a resource's readable display name. - #[serde(rename = "display_name")] - pub display_name: String, + /// Represent a resource's readable display name. + #[serde(rename = "display_name")] + pub display_name: String, } impl CloudValidateGroupRequest { - pub fn new(display_name: String) -> CloudValidateGroupRequest { - CloudValidateGroupRequest { - display_name, - } - } + pub fn new(display_name: String) -> CloudValidateGroupRequest { + CloudValidateGroupRequest { display_name } + } } - - diff --git a/sdks/full/rust/src/models/cloud_validate_group_response.rs b/sdks/full/rust/src/models/cloud_validate_group_response.rs index 285d7b19c9..a36a8f15c4 100644 --- a/sdks/full/rust/src/models/cloud_validate_group_response.rs +++ b/sdks/full/rust/src/models/cloud_validate_group_response.rs @@ -4,26 +4,19 @@ * 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 CloudValidateGroupResponse { - /// A list of validation errors. - #[serde(rename = "errors")] - pub errors: Vec, + /// A list of validation errors. + #[serde(rename = "errors")] + pub errors: Vec, } impl CloudValidateGroupResponse { - pub fn new(errors: Vec) -> CloudValidateGroupResponse { - CloudValidateGroupResponse { - errors, - } - } + pub fn new(errors: Vec) -> CloudValidateGroupResponse { + CloudValidateGroupResponse { errors } + } } - - diff --git a/sdks/full/rust/src/models/cloud_version_cdn_config.rs b/sdks/full/rust/src/models/cloud_version_cdn_config.rs index 4d3fabb0cf..5d4109fac7 100644 --- a/sdks/full/rust/src/models/cloud_version_cdn_config.rs +++ b/sdks/full/rust/src/models/cloud_version_cdn_config.rs @@ -4,43 +4,39 @@ * 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 */ /// CloudVersionCdnConfig : CDN configuration for a given version. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct CloudVersionCdnConfig { - /// _Configures Rivet CLI behavior. Has no effect on server behavior._ - #[serde(rename = "build_command", skip_serializing_if = "Option::is_none")] - pub build_command: Option, - /// _Configures Rivet CLI behavior. Has no effect on server behavior._ - #[serde(rename = "build_env", skip_serializing_if = "Option::is_none")] - pub build_env: Option<::std::collections::HashMap>, - /// _Configures Rivet CLI behavior. Has no effect on server behavior._ - #[serde(rename = "build_output", skip_serializing_if = "Option::is_none")] - pub build_output: Option, - /// Multiple CDN version routes. - #[serde(rename = "routes", skip_serializing_if = "Option::is_none")] - pub routes: Option>, - #[serde(rename = "site_id", skip_serializing_if = "Option::is_none")] - pub site_id: Option, + /// _Configures Rivet CLI behavior. Has no effect on server behavior._ + #[serde(rename = "build_command", skip_serializing_if = "Option::is_none")] + pub build_command: Option, + /// _Configures Rivet CLI behavior. Has no effect on server behavior._ + #[serde(rename = "build_env", skip_serializing_if = "Option::is_none")] + pub build_env: Option<::std::collections::HashMap>, + /// _Configures Rivet CLI behavior. Has no effect on server behavior._ + #[serde(rename = "build_output", skip_serializing_if = "Option::is_none")] + pub build_output: Option, + /// Multiple CDN version routes. + #[serde(rename = "routes", skip_serializing_if = "Option::is_none")] + pub routes: Option>, + #[serde(rename = "site_id", skip_serializing_if = "Option::is_none")] + pub site_id: Option, } impl CloudVersionCdnConfig { - /// CDN configuration for a given version. - pub fn new() -> CloudVersionCdnConfig { - CloudVersionCdnConfig { - build_command: None, - build_env: None, - build_output: None, - routes: None, - site_id: None, - } - } + /// CDN configuration for a given version. + pub fn new() -> CloudVersionCdnConfig { + CloudVersionCdnConfig { + build_command: None, + build_env: None, + build_output: None, + routes: None, + site_id: None, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_version_cdn_custom_headers_middleware.rs b/sdks/full/rust/src/models/cloud_version_cdn_custom_headers_middleware.rs index edcab304b2..7c6210fdfc 100644 --- a/sdks/full/rust/src/models/cloud_version_cdn_custom_headers_middleware.rs +++ b/sdks/full/rust/src/models/cloud_version_cdn_custom_headers_middleware.rs @@ -4,25 +4,20 @@ * 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 CloudVersionCdnCustomHeadersMiddleware { - #[serde(rename = "headers")] - pub headers: Vec, + #[serde(rename = "headers")] + pub headers: Vec, } impl CloudVersionCdnCustomHeadersMiddleware { - pub fn new(headers: Vec) -> CloudVersionCdnCustomHeadersMiddleware { - CloudVersionCdnCustomHeadersMiddleware { - headers, - } - } + pub fn new( + headers: Vec, + ) -> CloudVersionCdnCustomHeadersMiddleware { + CloudVersionCdnCustomHeadersMiddleware { headers } + } } - - diff --git a/sdks/full/rust/src/models/cloud_version_cdn_header.rs b/sdks/full/rust/src/models/cloud_version_cdn_header.rs index c588c07e13..6dd05a9aa5 100644 --- a/sdks/full/rust/src/models/cloud_version_cdn_header.rs +++ b/sdks/full/rust/src/models/cloud_version_cdn_header.rs @@ -4,28 +4,20 @@ * 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 CloudVersionCdnHeader { - #[serde(rename = "name")] - pub name: String, - #[serde(rename = "value")] - pub value: String, + #[serde(rename = "name")] + pub name: String, + #[serde(rename = "value")] + pub value: String, } impl CloudVersionCdnHeader { - pub fn new(name: String, value: String) -> CloudVersionCdnHeader { - CloudVersionCdnHeader { - name, - value, - } - } + pub fn new(name: String, value: String) -> CloudVersionCdnHeader { + CloudVersionCdnHeader { name, value } + } } - - diff --git a/sdks/full/rust/src/models/cloud_version_cdn_middleware.rs b/sdks/full/rust/src/models/cloud_version_cdn_middleware.rs index 3a4f78a4b7..f7e81e7509 100644 --- a/sdks/full/rust/src/models/cloud_version_cdn_middleware.rs +++ b/sdks/full/rust/src/models/cloud_version_cdn_middleware.rs @@ -4,25 +4,20 @@ * 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 CloudVersionCdnMiddleware { - #[serde(rename = "kind")] - pub kind: Box, + #[serde(rename = "kind")] + pub kind: Box, } impl CloudVersionCdnMiddleware { - pub fn new(kind: crate::models::CloudVersionCdnMiddlewareKind) -> CloudVersionCdnMiddleware { - CloudVersionCdnMiddleware { - kind: Box::new(kind), - } - } + pub fn new(kind: crate::models::CloudVersionCdnMiddlewareKind) -> CloudVersionCdnMiddleware { + CloudVersionCdnMiddleware { + kind: Box::new(kind), + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_version_cdn_middleware_kind.rs b/sdks/full/rust/src/models/cloud_version_cdn_middleware_kind.rs index ef872cbb4d..cc2c743870 100644 --- a/sdks/full/rust/src/models/cloud_version_cdn_middleware_kind.rs +++ b/sdks/full/rust/src/models/cloud_version_cdn_middleware_kind.rs @@ -4,25 +4,20 @@ * 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 CloudVersionCdnMiddlewareKind { - #[serde(rename = "custom_headers", skip_serializing_if = "Option::is_none")] - pub custom_headers: Option>, + #[serde(rename = "custom_headers", skip_serializing_if = "Option::is_none")] + pub custom_headers: Option>, } impl CloudVersionCdnMiddlewareKind { - pub fn new() -> CloudVersionCdnMiddlewareKind { - CloudVersionCdnMiddlewareKind { - custom_headers: None, - } - } + pub fn new() -> CloudVersionCdnMiddlewareKind { + CloudVersionCdnMiddlewareKind { + custom_headers: None, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_version_cdn_route.rs b/sdks/full/rust/src/models/cloud_version_cdn_route.rs index 5498d95a48..ca1df1edf1 100644 --- a/sdks/full/rust/src/models/cloud_version_cdn_route.rs +++ b/sdks/full/rust/src/models/cloud_version_cdn_route.rs @@ -4,33 +4,32 @@ * 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 CloudVersionCdnRoute { - #[serde(rename = "glob")] - pub glob: String, - /// Multiple CDN version middleware. - #[serde(rename = "middlewares")] - pub middlewares: Vec, - /// Unsigned 32 bit integer. - #[serde(rename = "priority")] - pub priority: i32, + #[serde(rename = "glob")] + pub glob: String, + /// Multiple CDN version middleware. + #[serde(rename = "middlewares")] + pub middlewares: Vec, + /// Unsigned 32 bit integer. + #[serde(rename = "priority")] + pub priority: i32, } impl CloudVersionCdnRoute { - pub fn new(glob: String, middlewares: Vec, priority: i32) -> CloudVersionCdnRoute { - CloudVersionCdnRoute { - glob, - middlewares, - priority, - } - } + pub fn new( + glob: String, + middlewares: Vec, + priority: i32, + ) -> CloudVersionCdnRoute { + CloudVersionCdnRoute { + glob, + middlewares, + priority, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_version_config.rs b/sdks/full/rust/src/models/cloud_version_config.rs index 7815efc02b..e0ca93ee8c 100644 --- a/sdks/full/rust/src/models/cloud_version_config.rs +++ b/sdks/full/rust/src/models/cloud_version_config.rs @@ -4,43 +4,39 @@ * 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 */ /// CloudVersionConfig : Cloud configuration for a given version. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct CloudVersionConfig { - #[serde(rename = "cdn", skip_serializing_if = "Option::is_none")] - pub cdn: Option>, - #[serde(rename = "engine", skip_serializing_if = "Option::is_none")] - pub engine: Option>, - #[serde(rename = "identity", skip_serializing_if = "Option::is_none")] - pub identity: Option>, - /// KV configuration for a given version. - #[serde(rename = "kv", skip_serializing_if = "Option::is_none")] - pub kv: Option, - #[serde(rename = "matchmaker", skip_serializing_if = "Option::is_none")] - pub matchmaker: Option>, - #[serde(rename = "scripts", skip_serializing_if = "Option::is_none")] - pub scripts: Option<::std::collections::HashMap>, + #[serde(rename = "cdn", skip_serializing_if = "Option::is_none")] + pub cdn: Option>, + #[serde(rename = "engine", skip_serializing_if = "Option::is_none")] + pub engine: Option>, + #[serde(rename = "identity", skip_serializing_if = "Option::is_none")] + pub identity: Option>, + /// KV configuration for a given version. + #[serde(rename = "kv", skip_serializing_if = "Option::is_none")] + pub kv: Option, + #[serde(rename = "matchmaker", skip_serializing_if = "Option::is_none")] + pub matchmaker: Option>, + #[serde(rename = "scripts", skip_serializing_if = "Option::is_none")] + pub scripts: Option<::std::collections::HashMap>, } impl CloudVersionConfig { - /// Cloud configuration for a given version. - pub fn new() -> CloudVersionConfig { - CloudVersionConfig { - cdn: None, - engine: None, - identity: None, - kv: None, - matchmaker: None, - scripts: None, - } - } + /// Cloud configuration for a given version. + pub fn new() -> CloudVersionConfig { + CloudVersionConfig { + cdn: None, + engine: None, + identity: None, + kv: None, + matchmaker: None, + scripts: None, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_version_engine_config.rs b/sdks/full/rust/src/models/cloud_version_engine_config.rs index 19c6114c49..b15e0422f0 100644 --- a/sdks/full/rust/src/models/cloud_version_engine_config.rs +++ b/sdks/full/rust/src/models/cloud_version_engine_config.rs @@ -4,37 +4,32 @@ * 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 CloudVersionEngineConfig { - #[serde(rename = "custom", skip_serializing_if = "Option::is_none")] - pub custom: Option, - #[serde(rename = "godot", skip_serializing_if = "Option::is_none")] - pub godot: Option, - #[serde(rename = "html5", skip_serializing_if = "Option::is_none")] - pub html5: Option, - #[serde(rename = "unity", skip_serializing_if = "Option::is_none")] - pub unity: Option, - #[serde(rename = "unreal", skip_serializing_if = "Option::is_none")] - pub unreal: Option>, + #[serde(rename = "custom", skip_serializing_if = "Option::is_none")] + pub custom: Option, + #[serde(rename = "godot", skip_serializing_if = "Option::is_none")] + pub godot: Option, + #[serde(rename = "html5", skip_serializing_if = "Option::is_none")] + pub html5: Option, + #[serde(rename = "unity", skip_serializing_if = "Option::is_none")] + pub unity: Option, + #[serde(rename = "unreal", skip_serializing_if = "Option::is_none")] + pub unreal: Option>, } impl CloudVersionEngineConfig { - pub fn new() -> CloudVersionEngineConfig { - CloudVersionEngineConfig { - custom: None, - godot: None, - html5: None, - unity: None, - unreal: None, - } - } + pub fn new() -> CloudVersionEngineConfig { + CloudVersionEngineConfig { + custom: None, + godot: None, + html5: None, + unity: None, + unreal: None, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_version_engine_unreal_config.rs b/sdks/full/rust/src/models/cloud_version_engine_unreal_config.rs index 82c3f11211..c3305e692d 100644 --- a/sdks/full/rust/src/models/cloud_version_engine_unreal_config.rs +++ b/sdks/full/rust/src/models/cloud_version_engine_unreal_config.rs @@ -4,26 +4,19 @@ * 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 CloudVersionEngineUnrealConfig { - /// Name of the Unreal module that holds the game code. This is usually the value of `$.Modules[0].Name` in the file `MyProject.unproject`. _Configures Rivet CLI behavior. Has no effect on server behavior._ - #[serde(rename = "game_module")] - pub game_module: String, + /// Name of the Unreal module that holds the game code. This is usually the value of `$.Modules[0].Name` in the file `MyProject.unproject`. _Configures Rivet CLI behavior. Has no effect on server behavior._ + #[serde(rename = "game_module")] + pub game_module: String, } impl CloudVersionEngineUnrealConfig { - pub fn new(game_module: String) -> CloudVersionEngineUnrealConfig { - CloudVersionEngineUnrealConfig { - game_module, - } - } + pub fn new(game_module: String) -> CloudVersionEngineUnrealConfig { + CloudVersionEngineUnrealConfig { game_module } + } } - - diff --git a/sdks/full/rust/src/models/cloud_version_full.rs b/sdks/full/rust/src/models/cloud_version_full.rs index 05edda9dd6..c4ee85004b 100644 --- a/sdks/full/rust/src/models/cloud_version_full.rs +++ b/sdks/full/rust/src/models/cloud_version_full.rs @@ -4,38 +4,39 @@ * 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 */ /// CloudVersionFull : A full version. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct CloudVersionFull { - #[serde(rename = "config")] - pub config: Box, - /// RFC3339 timestamp - #[serde(rename = "create_ts")] - pub create_ts: String, - /// Represent a resource's readable display name. - #[serde(rename = "display_name")] - pub display_name: String, - #[serde(rename = "version_id")] - pub version_id: uuid::Uuid, + #[serde(rename = "config")] + pub config: Box, + /// RFC3339 timestamp + #[serde(rename = "create_ts")] + pub create_ts: String, + /// Represent a resource's readable display name. + #[serde(rename = "display_name")] + pub display_name: String, + #[serde(rename = "version_id")] + pub version_id: uuid::Uuid, } impl CloudVersionFull { - /// A full version. - pub fn new(config: crate::models::CloudVersionConfig, create_ts: String, display_name: String, version_id: uuid::Uuid) -> CloudVersionFull { - CloudVersionFull { - config: Box::new(config), - create_ts, - display_name, - version_id, - } - } + /// A full version. + pub fn new( + config: crate::models::CloudVersionConfig, + create_ts: String, + display_name: String, + version_id: uuid::Uuid, + ) -> CloudVersionFull { + CloudVersionFull { + config: Box::new(config), + create_ts, + display_name, + version_id, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_version_identity_config.rs b/sdks/full/rust/src/models/cloud_version_identity_config.rs index 386a7ddc70..37202c1264 100644 --- a/sdks/full/rust/src/models/cloud_version_identity_config.rs +++ b/sdks/full/rust/src/models/cloud_version_identity_config.rs @@ -4,40 +4,39 @@ * 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 */ /// CloudVersionIdentityConfig : **Deprecated** Identity configuration for a given version. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct CloudVersionIdentityConfig { - /// **Deprecated** - #[serde(rename = "avatars", skip_serializing_if = "Option::is_none")] - pub avatars: Option>, - /// **Deprecated** - #[serde(rename = "custom_avatars", skip_serializing_if = "Option::is_none")] - pub custom_avatars: Option>, - /// **Deprecated** - #[serde(rename = "custom_display_names", skip_serializing_if = "Option::is_none")] - pub custom_display_names: Option>, - /// **Deprecated** - #[serde(rename = "display_names", skip_serializing_if = "Option::is_none")] - pub display_names: Option>, + /// **Deprecated** + #[serde(rename = "avatars", skip_serializing_if = "Option::is_none")] + pub avatars: Option>, + /// **Deprecated** + #[serde(rename = "custom_avatars", skip_serializing_if = "Option::is_none")] + pub custom_avatars: Option>, + /// **Deprecated** + #[serde( + rename = "custom_display_names", + skip_serializing_if = "Option::is_none" + )] + pub custom_display_names: Option>, + /// **Deprecated** + #[serde(rename = "display_names", skip_serializing_if = "Option::is_none")] + pub display_names: Option>, } impl CloudVersionIdentityConfig { - /// **Deprecated** Identity configuration for a given version. - pub fn new() -> CloudVersionIdentityConfig { - CloudVersionIdentityConfig { - avatars: None, - custom_avatars: None, - custom_display_names: None, - display_names: None, - } - } + /// **Deprecated** Identity configuration for a given version. + pub fn new() -> CloudVersionIdentityConfig { + CloudVersionIdentityConfig { + avatars: None, + custom_avatars: None, + custom_display_names: None, + display_names: None, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_version_identity_custom_avatar.rs b/sdks/full/rust/src/models/cloud_version_identity_custom_avatar.rs index f096ebc61c..c6a502ad7d 100644 --- a/sdks/full/rust/src/models/cloud_version_identity_custom_avatar.rs +++ b/sdks/full/rust/src/models/cloud_version_identity_custom_avatar.rs @@ -4,25 +4,18 @@ * 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 CloudVersionIdentityCustomAvatar { - #[serde(rename = "upload_id")] - pub upload_id: uuid::Uuid, + #[serde(rename = "upload_id")] + pub upload_id: uuid::Uuid, } impl CloudVersionIdentityCustomAvatar { - pub fn new(upload_id: uuid::Uuid) -> CloudVersionIdentityCustomAvatar { - CloudVersionIdentityCustomAvatar { - upload_id, - } - } + pub fn new(upload_id: uuid::Uuid) -> CloudVersionIdentityCustomAvatar { + CloudVersionIdentityCustomAvatar { upload_id } + } } - - diff --git a/sdks/full/rust/src/models/cloud_version_identity_custom_display_name.rs b/sdks/full/rust/src/models/cloud_version_identity_custom_display_name.rs index 8c4087fc33..9f0a4efd38 100644 --- a/sdks/full/rust/src/models/cloud_version_identity_custom_display_name.rs +++ b/sdks/full/rust/src/models/cloud_version_identity_custom_display_name.rs @@ -4,26 +4,19 @@ * 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 CloudVersionIdentityCustomDisplayName { - /// Represent a resource's readable display name. - #[serde(rename = "display_name")] - pub display_name: String, + /// Represent a resource's readable display name. + #[serde(rename = "display_name")] + pub display_name: String, } impl CloudVersionIdentityCustomDisplayName { - pub fn new(display_name: String) -> CloudVersionIdentityCustomDisplayName { - CloudVersionIdentityCustomDisplayName { - display_name, - } - } + pub fn new(display_name: String) -> CloudVersionIdentityCustomDisplayName { + CloudVersionIdentityCustomDisplayName { display_name } + } } - - diff --git a/sdks/full/rust/src/models/cloud_version_matchmaker_captcha.rs b/sdks/full/rust/src/models/cloud_version_matchmaker_captcha.rs index 8db17cc3f6..c90d667142 100644 --- a/sdks/full/rust/src/models/cloud_version_matchmaker_captcha.rs +++ b/sdks/full/rust/src/models/cloud_version_matchmaker_captcha.rs @@ -4,38 +4,37 @@ * 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 */ /// CloudVersionMatchmakerCaptcha : Matchmaker captcha configuration. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct CloudVersionMatchmakerCaptcha { - #[serde(rename = "hcaptcha", skip_serializing_if = "Option::is_none")] - pub hcaptcha: Option>, - /// Denotes how many requests a connection can make before it is required to reverify a captcha. - #[serde(rename = "requests_before_reverify")] - pub requests_before_reverify: i32, - #[serde(rename = "turnstile", skip_serializing_if = "Option::is_none")] - pub turnstile: Option>, - /// Denotes how long a connection can continue to reconnect without having to reverify a captcha (in milliseconds). - #[serde(rename = "verification_ttl")] - pub verification_ttl: i64, + #[serde(rename = "hcaptcha", skip_serializing_if = "Option::is_none")] + pub hcaptcha: Option>, + /// Denotes how many requests a connection can make before it is required to reverify a captcha. + #[serde(rename = "requests_before_reverify")] + pub requests_before_reverify: i32, + #[serde(rename = "turnstile", skip_serializing_if = "Option::is_none")] + pub turnstile: Option>, + /// Denotes how long a connection can continue to reconnect without having to reverify a captcha (in milliseconds). + #[serde(rename = "verification_ttl")] + pub verification_ttl: i64, } impl CloudVersionMatchmakerCaptcha { - /// Matchmaker captcha configuration. - pub fn new(requests_before_reverify: i32, verification_ttl: i64) -> CloudVersionMatchmakerCaptcha { - CloudVersionMatchmakerCaptcha { - hcaptcha: None, - requests_before_reverify, - turnstile: None, - verification_ttl, - } - } + /// Matchmaker captcha configuration. + pub fn new( + requests_before_reverify: i32, + verification_ttl: i64, + ) -> CloudVersionMatchmakerCaptcha { + CloudVersionMatchmakerCaptcha { + hcaptcha: None, + requests_before_reverify, + turnstile: None, + verification_ttl, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_version_matchmaker_captcha_hcaptcha.rs b/sdks/full/rust/src/models/cloud_version_matchmaker_captcha_hcaptcha.rs index 3154536904..8cee8814fd 100644 --- a/sdks/full/rust/src/models/cloud_version_matchmaker_captcha_hcaptcha.rs +++ b/sdks/full/rust/src/models/cloud_version_matchmaker_captcha_hcaptcha.rs @@ -4,35 +4,31 @@ * 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 */ /// CloudVersionMatchmakerCaptchaHcaptcha : hCpatcha configuration. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct CloudVersionMatchmakerCaptchaHcaptcha { - #[serde(rename = "level", skip_serializing_if = "Option::is_none")] - pub level: Option, - /// Secret key for your hCaptcha application. Must be set. - #[serde(rename = "secret_key", skip_serializing_if = "Option::is_none")] - pub secret_key: Option, - /// Site key for your hCaptcha application. Must be set. - #[serde(rename = "site_key", skip_serializing_if = "Option::is_none")] - pub site_key: Option, + #[serde(rename = "level", skip_serializing_if = "Option::is_none")] + pub level: Option, + /// Secret key for your hCaptcha application. Must be set. + #[serde(rename = "secret_key", skip_serializing_if = "Option::is_none")] + pub secret_key: Option, + /// Site key for your hCaptcha application. Must be set. + #[serde(rename = "site_key", skip_serializing_if = "Option::is_none")] + pub site_key: Option, } impl CloudVersionMatchmakerCaptchaHcaptcha { - /// hCpatcha configuration. - pub fn new() -> CloudVersionMatchmakerCaptchaHcaptcha { - CloudVersionMatchmakerCaptchaHcaptcha { - level: None, - secret_key: None, - site_key: None, - } - } + /// hCpatcha configuration. + pub fn new() -> CloudVersionMatchmakerCaptchaHcaptcha { + CloudVersionMatchmakerCaptchaHcaptcha { + level: None, + secret_key: None, + site_key: None, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_version_matchmaker_captcha_hcaptcha_level.rs b/sdks/full/rust/src/models/cloud_version_matchmaker_captcha_hcaptcha_level.rs index 8eb4d54577..42679b8cd0 100644 --- a/sdks/full/rust/src/models/cloud_version_matchmaker_captcha_hcaptcha_level.rs +++ b/sdks/full/rust/src/models/cloud_version_matchmaker_captcha_hcaptcha_level.rs @@ -4,7 +4,7 @@ * 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 */ @@ -13,34 +13,29 @@ /// **Deprecated** How hard a captcha should be. #[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] pub enum CloudVersionMatchmakerCaptchaHcaptchaLevel { - #[serde(rename = "easy")] - Easy, - #[serde(rename = "moderate")] - Moderate, - #[serde(rename = "difficult")] - Difficult, - #[serde(rename = "always_on")] - AlwaysOn, - + #[serde(rename = "easy")] + Easy, + #[serde(rename = "moderate")] + Moderate, + #[serde(rename = "difficult")] + Difficult, + #[serde(rename = "always_on")] + AlwaysOn, } impl ToString for CloudVersionMatchmakerCaptchaHcaptchaLevel { - fn to_string(&self) -> String { - match self { - Self::Easy => String::from("easy"), - Self::Moderate => String::from("moderate"), - Self::Difficult => String::from("difficult"), - Self::AlwaysOn => String::from("always_on"), - } - } + fn to_string(&self) -> String { + match self { + Self::Easy => String::from("easy"), + Self::Moderate => String::from("moderate"), + Self::Difficult => String::from("difficult"), + Self::AlwaysOn => String::from("always_on"), + } + } } impl Default for CloudVersionMatchmakerCaptchaHcaptchaLevel { - fn default() -> CloudVersionMatchmakerCaptchaHcaptchaLevel { - Self::Easy - } + fn default() -> CloudVersionMatchmakerCaptchaHcaptchaLevel { + Self::Easy + } } - - - - diff --git a/sdks/full/rust/src/models/cloud_version_matchmaker_captcha_turnstile.rs b/sdks/full/rust/src/models/cloud_version_matchmaker_captcha_turnstile.rs index f4b1412810..bd7d314c8f 100644 --- a/sdks/full/rust/src/models/cloud_version_matchmaker_captcha_turnstile.rs +++ b/sdks/full/rust/src/models/cloud_version_matchmaker_captcha_turnstile.rs @@ -4,30 +4,26 @@ * 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 */ /// CloudVersionMatchmakerCaptchaTurnstile : Turnstile captcha configuration. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct CloudVersionMatchmakerCaptchaTurnstile { - #[serde(rename = "secret_key")] - pub secret_key: String, - #[serde(rename = "site_key")] - pub site_key: String, + #[serde(rename = "secret_key")] + pub secret_key: String, + #[serde(rename = "site_key")] + pub site_key: String, } impl CloudVersionMatchmakerCaptchaTurnstile { - /// Turnstile captcha configuration. - pub fn new(secret_key: String, site_key: String) -> CloudVersionMatchmakerCaptchaTurnstile { - CloudVersionMatchmakerCaptchaTurnstile { - secret_key, - site_key, - } - } + /// Turnstile captcha configuration. + pub fn new(secret_key: String, site_key: String) -> CloudVersionMatchmakerCaptchaTurnstile { + CloudVersionMatchmakerCaptchaTurnstile { + secret_key, + site_key, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_version_matchmaker_config.rs b/sdks/full/rust/src/models/cloud_version_matchmaker_config.rs index 407acf78b8..d3e793b84b 100644 --- a/sdks/full/rust/src/models/cloud_version_matchmaker_config.rs +++ b/sdks/full/rust/src/models/cloud_version_matchmaker_config.rs @@ -4,60 +4,59 @@ * 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 */ /// CloudVersionMatchmakerConfig : Matchmaker configuration for a given version. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct CloudVersionMatchmakerConfig { - #[serde(rename = "captcha", skip_serializing_if = "Option::is_none")] - pub captcha: Option>, - /// _Configures Rivet CLI behavior. Has no effect on server behavior._ - #[serde(rename = "dev_hostname", skip_serializing_if = "Option::is_none")] - pub dev_hostname: Option, - #[serde(rename = "docker", skip_serializing_if = "Option::is_none")] - pub docker: Option>, - /// A list of game modes. - #[serde(rename = "game_modes", skip_serializing_if = "Option::is_none")] - pub game_modes: Option<::std::collections::HashMap>, - #[serde(rename = "idle_lobbies", skip_serializing_if = "Option::is_none")] - pub idle_lobbies: Option>, - /// **Deprecated: use `game_modes` instead** A list of game modes. - #[serde(rename = "lobby_groups", skip_serializing_if = "Option::is_none")] - pub lobby_groups: Option>, - #[serde(rename = "max_players", skip_serializing_if = "Option::is_none")] - pub max_players: Option, - #[serde(rename = "max_players_direct", skip_serializing_if = "Option::is_none")] - pub max_players_direct: Option, - #[serde(rename = "max_players_party", skip_serializing_if = "Option::is_none")] - pub max_players_party: Option, - #[serde(rename = "regions", skip_serializing_if = "Option::is_none")] - pub regions: Option<::std::collections::HashMap>, - #[serde(rename = "tier", skip_serializing_if = "Option::is_none")] - pub tier: Option, + #[serde(rename = "captcha", skip_serializing_if = "Option::is_none")] + pub captcha: Option>, + /// _Configures Rivet CLI behavior. Has no effect on server behavior._ + #[serde(rename = "dev_hostname", skip_serializing_if = "Option::is_none")] + pub dev_hostname: Option, + #[serde(rename = "docker", skip_serializing_if = "Option::is_none")] + pub docker: Option>, + /// A list of game modes. + #[serde(rename = "game_modes", skip_serializing_if = "Option::is_none")] + pub game_modes: + Option<::std::collections::HashMap>, + #[serde(rename = "idle_lobbies", skip_serializing_if = "Option::is_none")] + pub idle_lobbies: Option>, + /// **Deprecated: use `game_modes` instead** A list of game modes. + #[serde(rename = "lobby_groups", skip_serializing_if = "Option::is_none")] + pub lobby_groups: Option>, + #[serde(rename = "max_players", skip_serializing_if = "Option::is_none")] + pub max_players: Option, + #[serde(rename = "max_players_direct", skip_serializing_if = "Option::is_none")] + pub max_players_direct: Option, + #[serde(rename = "max_players_party", skip_serializing_if = "Option::is_none")] + pub max_players_party: Option, + #[serde(rename = "regions", skip_serializing_if = "Option::is_none")] + pub regions: Option< + ::std::collections::HashMap, + >, + #[serde(rename = "tier", skip_serializing_if = "Option::is_none")] + pub tier: Option, } impl CloudVersionMatchmakerConfig { - /// Matchmaker configuration for a given version. - pub fn new() -> CloudVersionMatchmakerConfig { - CloudVersionMatchmakerConfig { - captcha: None, - dev_hostname: None, - docker: None, - game_modes: None, - idle_lobbies: None, - lobby_groups: None, - max_players: None, - max_players_direct: None, - max_players_party: None, - regions: None, - tier: None, - } - } + /// Matchmaker configuration for a given version. + pub fn new() -> CloudVersionMatchmakerConfig { + CloudVersionMatchmakerConfig { + captcha: None, + dev_hostname: None, + docker: None, + game_modes: None, + idle_lobbies: None, + lobby_groups: None, + max_players: None, + max_players_direct: None, + max_players_party: None, + regions: None, + tier: None, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_version_matchmaker_game_mode.rs b/sdks/full/rust/src/models/cloud_version_matchmaker_game_mode.rs index 07698268ca..5e4bb6c0cf 100644 --- a/sdks/full/rust/src/models/cloud_version_matchmaker_game_mode.rs +++ b/sdks/full/rust/src/models/cloud_version_matchmaker_game_mode.rs @@ -4,57 +4,58 @@ * 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 */ /// CloudVersionMatchmakerGameMode : A game mode. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct CloudVersionMatchmakerGameMode { - #[serde(rename = "actions", skip_serializing_if = "Option::is_none")] - pub actions: Option>, - #[serde(rename = "allow_dynamic_max_players", skip_serializing_if = "Option::is_none")] - pub allow_dynamic_max_players: Option, - #[serde(rename = "docker", skip_serializing_if = "Option::is_none")] - pub docker: Option>, - #[serde(rename = "idle_lobbies", skip_serializing_if = "Option::is_none")] - pub idle_lobbies: Option>, - #[serde(rename = "listable", skip_serializing_if = "Option::is_none")] - pub listable: Option, - #[serde(rename = "max_players", skip_serializing_if = "Option::is_none")] - pub max_players: Option, - #[serde(rename = "max_players_direct", skip_serializing_if = "Option::is_none")] - pub max_players_direct: Option, - #[serde(rename = "max_players_party", skip_serializing_if = "Option::is_none")] - pub max_players_party: Option, - #[serde(rename = "regions", skip_serializing_if = "Option::is_none")] - pub regions: Option<::std::collections::HashMap>, - #[serde(rename = "taggable", skip_serializing_if = "Option::is_none")] - pub taggable: Option, - #[serde(rename = "tier", skip_serializing_if = "Option::is_none")] - pub tier: Option, + #[serde(rename = "actions", skip_serializing_if = "Option::is_none")] + pub actions: Option>, + #[serde( + rename = "allow_dynamic_max_players", + skip_serializing_if = "Option::is_none" + )] + pub allow_dynamic_max_players: Option, + #[serde(rename = "docker", skip_serializing_if = "Option::is_none")] + pub docker: Option>, + #[serde(rename = "idle_lobbies", skip_serializing_if = "Option::is_none")] + pub idle_lobbies: Option>, + #[serde(rename = "listable", skip_serializing_if = "Option::is_none")] + pub listable: Option, + #[serde(rename = "max_players", skip_serializing_if = "Option::is_none")] + pub max_players: Option, + #[serde(rename = "max_players_direct", skip_serializing_if = "Option::is_none")] + pub max_players_direct: Option, + #[serde(rename = "max_players_party", skip_serializing_if = "Option::is_none")] + pub max_players_party: Option, + #[serde(rename = "regions", skip_serializing_if = "Option::is_none")] + pub regions: Option< + ::std::collections::HashMap, + >, + #[serde(rename = "taggable", skip_serializing_if = "Option::is_none")] + pub taggable: Option, + #[serde(rename = "tier", skip_serializing_if = "Option::is_none")] + pub tier: Option, } impl CloudVersionMatchmakerGameMode { - /// A game mode. - pub fn new() -> CloudVersionMatchmakerGameMode { - CloudVersionMatchmakerGameMode { - actions: None, - allow_dynamic_max_players: None, - docker: None, - idle_lobbies: None, - listable: None, - max_players: None, - max_players_direct: None, - max_players_party: None, - regions: None, - taggable: None, - tier: None, - } - } + /// A game mode. + pub fn new() -> CloudVersionMatchmakerGameMode { + CloudVersionMatchmakerGameMode { + actions: None, + allow_dynamic_max_players: None, + docker: None, + idle_lobbies: None, + listable: None, + max_players: None, + max_players_direct: None, + max_players_party: None, + regions: None, + taggable: None, + tier: None, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_version_matchmaker_game_mode_actions.rs b/sdks/full/rust/src/models/cloud_version_matchmaker_game_mode_actions.rs index 3a1e7c4258..d6690de743 100644 --- a/sdks/full/rust/src/models/cloud_version_matchmaker_game_mode_actions.rs +++ b/sdks/full/rust/src/models/cloud_version_matchmaker_game_mode_actions.rs @@ -4,33 +4,29 @@ * 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 */ /// CloudVersionMatchmakerGameModeActions : Configuration for the connection types allowed for a game mode. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct CloudVersionMatchmakerGameModeActions { - #[serde(rename = "create", skip_serializing_if = "Option::is_none")] - pub create: Option>, - #[serde(rename = "find", skip_serializing_if = "Option::is_none")] - pub find: Option>, - #[serde(rename = "join", skip_serializing_if = "Option::is_none")] - pub join: Option>, + #[serde(rename = "create", skip_serializing_if = "Option::is_none")] + pub create: Option>, + #[serde(rename = "find", skip_serializing_if = "Option::is_none")] + pub find: Option>, + #[serde(rename = "join", skip_serializing_if = "Option::is_none")] + pub join: Option>, } impl CloudVersionMatchmakerGameModeActions { - /// Configuration for the connection types allowed for a game mode. - pub fn new() -> CloudVersionMatchmakerGameModeActions { - CloudVersionMatchmakerGameModeActions { - create: None, - find: None, - join: None, - } - } + /// Configuration for the connection types allowed for a game mode. + pub fn new() -> CloudVersionMatchmakerGameModeActions { + CloudVersionMatchmakerGameModeActions { + create: None, + find: None, + join: None, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_version_matchmaker_game_mode_create_config.rs b/sdks/full/rust/src/models/cloud_version_matchmaker_game_mode_create_config.rs index de1ecfcea3..85d3896fc4 100644 --- a/sdks/full/rust/src/models/cloud_version_matchmaker_game_mode_create_config.rs +++ b/sdks/full/rust/src/models/cloud_version_matchmaker_game_mode_create_config.rs @@ -4,46 +4,49 @@ * 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 */ /// CloudVersionMatchmakerGameModeCreateConfig : Configures the requirements and authentication for the /create endpoint. If this value is not set in the config, the /create endpoint is NOT enabled. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct CloudVersionMatchmakerGameModeCreateConfig { - /// Defaults to true when unset. - #[serde(rename = "enable_private", skip_serializing_if = "Option::is_none")] - pub enable_private: Option, - /// Defaults to false when unset. - #[serde(rename = "enable_public", skip_serializing_if = "Option::is_none")] - pub enable_public: Option, - /// Sets whether or not the /create endpoint is enabled. - #[serde(rename = "enabled")] - pub enabled: bool, - #[serde(rename = "identity_requirement", skip_serializing_if = "Option::is_none")] - pub identity_requirement: Option, - /// **Deprecated** - #[serde(rename = "max_lobbies_per_identity", skip_serializing_if = "Option::is_none")] - pub max_lobbies_per_identity: Option, - #[serde(rename = "verification", skip_serializing_if = "Option::is_none")] - pub verification: Option>, + /// Defaults to true when unset. + #[serde(rename = "enable_private", skip_serializing_if = "Option::is_none")] + pub enable_private: Option, + /// Defaults to false when unset. + #[serde(rename = "enable_public", skip_serializing_if = "Option::is_none")] + pub enable_public: Option, + /// Sets whether or not the /create endpoint is enabled. + #[serde(rename = "enabled")] + pub enabled: bool, + #[serde( + rename = "identity_requirement", + skip_serializing_if = "Option::is_none" + )] + pub identity_requirement: + Option, + /// **Deprecated** + #[serde( + rename = "max_lobbies_per_identity", + skip_serializing_if = "Option::is_none" + )] + pub max_lobbies_per_identity: Option, + #[serde(rename = "verification", skip_serializing_if = "Option::is_none")] + pub verification: Option>, } impl CloudVersionMatchmakerGameModeCreateConfig { - /// Configures the requirements and authentication for the /create endpoint. If this value is not set in the config, the /create endpoint is NOT enabled. - pub fn new(enabled: bool) -> CloudVersionMatchmakerGameModeCreateConfig { - CloudVersionMatchmakerGameModeCreateConfig { - enable_private: None, - enable_public: None, - enabled, - identity_requirement: None, - max_lobbies_per_identity: None, - verification: None, - } - } + /// Configures the requirements and authentication for the /create endpoint. If this value is not set in the config, the /create endpoint is NOT enabled. + pub fn new(enabled: bool) -> CloudVersionMatchmakerGameModeCreateConfig { + CloudVersionMatchmakerGameModeCreateConfig { + enable_private: None, + enable_public: None, + enabled, + identity_requirement: None, + max_lobbies_per_identity: None, + verification: None, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_version_matchmaker_game_mode_find_config.rs b/sdks/full/rust/src/models/cloud_version_matchmaker_game_mode_find_config.rs index 93bbfc3fcf..983711b3e0 100644 --- a/sdks/full/rust/src/models/cloud_version_matchmaker_game_mode_find_config.rs +++ b/sdks/full/rust/src/models/cloud_version_matchmaker_game_mode_find_config.rs @@ -4,34 +4,34 @@ * 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 */ /// CloudVersionMatchmakerGameModeFindConfig : Configures the requirements and authentication for the /find endpoint. If this value is not set in the config, the /find endpoint is still enabled. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct CloudVersionMatchmakerGameModeFindConfig { - /// Sets whether or not the /find endpoint is enabled. - #[serde(rename = "enabled")] - pub enabled: bool, - #[serde(rename = "identity_requirement", skip_serializing_if = "Option::is_none")] - pub identity_requirement: Option, - #[serde(rename = "verification", skip_serializing_if = "Option::is_none")] - pub verification: Option>, + /// Sets whether or not the /find endpoint is enabled. + #[serde(rename = "enabled")] + pub enabled: bool, + #[serde( + rename = "identity_requirement", + skip_serializing_if = "Option::is_none" + )] + pub identity_requirement: + Option, + #[serde(rename = "verification", skip_serializing_if = "Option::is_none")] + pub verification: Option>, } impl CloudVersionMatchmakerGameModeFindConfig { - /// Configures the requirements and authentication for the /find endpoint. If this value is not set in the config, the /find endpoint is still enabled. - pub fn new(enabled: bool) -> CloudVersionMatchmakerGameModeFindConfig { - CloudVersionMatchmakerGameModeFindConfig { - enabled, - identity_requirement: None, - verification: None, - } - } + /// Configures the requirements and authentication for the /find endpoint. If this value is not set in the config, the /find endpoint is still enabled. + pub fn new(enabled: bool) -> CloudVersionMatchmakerGameModeFindConfig { + CloudVersionMatchmakerGameModeFindConfig { + enabled, + identity_requirement: None, + verification: None, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_version_matchmaker_game_mode_identity_requirement.rs b/sdks/full/rust/src/models/cloud_version_matchmaker_game_mode_identity_requirement.rs index e72e5b25a9..230ae04efa 100644 --- a/sdks/full/rust/src/models/cloud_version_matchmaker_game_mode_identity_requirement.rs +++ b/sdks/full/rust/src/models/cloud_version_matchmaker_game_mode_identity_requirement.rs @@ -4,7 +4,7 @@ * 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 */ @@ -13,31 +13,26 @@ /// **Deprecated** The registration requirement for a user when joining/finding/creating a lobby. \"None\" allows for connections without an identity. #[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] pub enum CloudVersionMatchmakerGameModeIdentityRequirement { - #[serde(rename = "none")] - None, - #[serde(rename = "guest")] - Guest, - #[serde(rename = "registered")] - Registered, - + #[serde(rename = "none")] + None, + #[serde(rename = "guest")] + Guest, + #[serde(rename = "registered")] + Registered, } impl ToString for CloudVersionMatchmakerGameModeIdentityRequirement { - fn to_string(&self) -> String { - match self { - Self::None => String::from("none"), - Self::Guest => String::from("guest"), - Self::Registered => String::from("registered"), - } - } + fn to_string(&self) -> String { + match self { + Self::None => String::from("none"), + Self::Guest => String::from("guest"), + Self::Registered => String::from("registered"), + } + } } impl Default for CloudVersionMatchmakerGameModeIdentityRequirement { - fn default() -> CloudVersionMatchmakerGameModeIdentityRequirement { - Self::None - } + fn default() -> CloudVersionMatchmakerGameModeIdentityRequirement { + Self::None + } } - - - - diff --git a/sdks/full/rust/src/models/cloud_version_matchmaker_game_mode_idle_lobbies_config.rs b/sdks/full/rust/src/models/cloud_version_matchmaker_game_mode_idle_lobbies_config.rs index 0b4bea341e..27d347bf86 100644 --- a/sdks/full/rust/src/models/cloud_version_matchmaker_game_mode_idle_lobbies_config.rs +++ b/sdks/full/rust/src/models/cloud_version_matchmaker_game_mode_idle_lobbies_config.rs @@ -4,30 +4,23 @@ * 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 */ /// CloudVersionMatchmakerGameModeIdleLobbiesConfig : Configuration for how many idle lobbies a game version should have. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct CloudVersionMatchmakerGameModeIdleLobbiesConfig { - #[serde(rename = "max")] - pub max: i32, - #[serde(rename = "min")] - pub min: i32, + #[serde(rename = "max")] + pub max: i32, + #[serde(rename = "min")] + pub min: i32, } impl CloudVersionMatchmakerGameModeIdleLobbiesConfig { - /// Configuration for how many idle lobbies a game version should have. - pub fn new(max: i32, min: i32) -> CloudVersionMatchmakerGameModeIdleLobbiesConfig { - CloudVersionMatchmakerGameModeIdleLobbiesConfig { - max, - min, - } - } + /// Configuration for how many idle lobbies a game version should have. + pub fn new(max: i32, min: i32) -> CloudVersionMatchmakerGameModeIdleLobbiesConfig { + CloudVersionMatchmakerGameModeIdleLobbiesConfig { max, min } + } } - - diff --git a/sdks/full/rust/src/models/cloud_version_matchmaker_game_mode_join_config.rs b/sdks/full/rust/src/models/cloud_version_matchmaker_game_mode_join_config.rs index 471835d937..59c3612561 100644 --- a/sdks/full/rust/src/models/cloud_version_matchmaker_game_mode_join_config.rs +++ b/sdks/full/rust/src/models/cloud_version_matchmaker_game_mode_join_config.rs @@ -4,34 +4,34 @@ * 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 */ /// CloudVersionMatchmakerGameModeJoinConfig : Configures the requirements and authentication for the /join endpoint. If this value is not set in the config, the /join endpoint is still enabled. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct CloudVersionMatchmakerGameModeJoinConfig { - /// Sets whether or not the /join endpoint is enabled. - #[serde(rename = "enabled")] - pub enabled: bool, - #[serde(rename = "identity_requirement", skip_serializing_if = "Option::is_none")] - pub identity_requirement: Option, - #[serde(rename = "verification", skip_serializing_if = "Option::is_none")] - pub verification: Option>, + /// Sets whether or not the /join endpoint is enabled. + #[serde(rename = "enabled")] + pub enabled: bool, + #[serde( + rename = "identity_requirement", + skip_serializing_if = "Option::is_none" + )] + pub identity_requirement: + Option, + #[serde(rename = "verification", skip_serializing_if = "Option::is_none")] + pub verification: Option>, } impl CloudVersionMatchmakerGameModeJoinConfig { - /// Configures the requirements and authentication for the /join endpoint. If this value is not set in the config, the /join endpoint is still enabled. - pub fn new(enabled: bool) -> CloudVersionMatchmakerGameModeJoinConfig { - CloudVersionMatchmakerGameModeJoinConfig { - enabled, - identity_requirement: None, - verification: None, - } - } + /// Configures the requirements and authentication for the /join endpoint. If this value is not set in the config, the /join endpoint is still enabled. + pub fn new(enabled: bool) -> CloudVersionMatchmakerGameModeJoinConfig { + CloudVersionMatchmakerGameModeJoinConfig { + enabled, + identity_requirement: None, + verification: None, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_version_matchmaker_game_mode_region.rs b/sdks/full/rust/src/models/cloud_version_matchmaker_game_mode_region.rs index bb1c3aa23d..61aa12558a 100644 --- a/sdks/full/rust/src/models/cloud_version_matchmaker_game_mode_region.rs +++ b/sdks/full/rust/src/models/cloud_version_matchmaker_game_mode_region.rs @@ -4,30 +4,26 @@ * 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 */ /// CloudVersionMatchmakerGameModeRegion : A game mode region. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct CloudVersionMatchmakerGameModeRegion { - #[serde(rename = "idle_lobbies", skip_serializing_if = "Option::is_none")] - pub idle_lobbies: Option>, - #[serde(rename = "tier", skip_serializing_if = "Option::is_none")] - pub tier: Option, + #[serde(rename = "idle_lobbies", skip_serializing_if = "Option::is_none")] + pub idle_lobbies: Option>, + #[serde(rename = "tier", skip_serializing_if = "Option::is_none")] + pub tier: Option, } impl CloudVersionMatchmakerGameModeRegion { - /// A game mode region. - pub fn new() -> CloudVersionMatchmakerGameModeRegion { - CloudVersionMatchmakerGameModeRegion { - idle_lobbies: None, - tier: None, - } - } + /// A game mode region. + pub fn new() -> CloudVersionMatchmakerGameModeRegion { + CloudVersionMatchmakerGameModeRegion { + idle_lobbies: None, + tier: None, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_version_matchmaker_game_mode_runtime_docker.rs b/sdks/full/rust/src/models/cloud_version_matchmaker_game_mode_runtime_docker.rs index d94ccdb29f..9ad013bdaa 100644 --- a/sdks/full/rust/src/models/cloud_version_matchmaker_game_mode_runtime_docker.rs +++ b/sdks/full/rust/src/models/cloud_version_matchmaker_game_mode_runtime_docker.rs @@ -4,51 +4,52 @@ * 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 */ /// CloudVersionMatchmakerGameModeRuntimeDocker : A game mode runtime running through Docker. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct CloudVersionMatchmakerGameModeRuntimeDocker { - #[serde(rename = "args", skip_serializing_if = "Option::is_none")] - pub args: Option>, - /// _Configures Rivet CLI behavior. Has no effect on server behavior._ - #[serde(rename = "build_args", skip_serializing_if = "Option::is_none")] - pub build_args: Option<::std::collections::HashMap>, - /// _Configures Rivet CLI behavior. Has no effect on server behavior._ - #[serde(rename = "dockerfile", skip_serializing_if = "Option::is_none")] - pub dockerfile: Option, - #[serde(rename = "env", skip_serializing_if = "Option::is_none")] - pub env: Option<::std::collections::HashMap>, - /// _Configures Rivet CLI behavior. Has no effect on server behavior._ - #[serde(rename = "image", skip_serializing_if = "Option::is_none")] - pub image: Option, - #[serde(rename = "image_id", skip_serializing_if = "Option::is_none")] - pub image_id: Option, - #[serde(rename = "network_mode", skip_serializing_if = "Option::is_none")] - pub network_mode: Option, - #[serde(rename = "ports", skip_serializing_if = "Option::is_none")] - pub ports: Option<::std::collections::HashMap>, + #[serde(rename = "args", skip_serializing_if = "Option::is_none")] + pub args: Option>, + /// _Configures Rivet CLI behavior. Has no effect on server behavior._ + #[serde(rename = "build_args", skip_serializing_if = "Option::is_none")] + pub build_args: Option<::std::collections::HashMap>, + /// _Configures Rivet CLI behavior. Has no effect on server behavior._ + #[serde(rename = "dockerfile", skip_serializing_if = "Option::is_none")] + pub dockerfile: Option, + #[serde(rename = "env", skip_serializing_if = "Option::is_none")] + pub env: Option<::std::collections::HashMap>, + /// _Configures Rivet CLI behavior. Has no effect on server behavior._ + #[serde(rename = "image", skip_serializing_if = "Option::is_none")] + pub image: Option, + #[serde(rename = "image_id", skip_serializing_if = "Option::is_none")] + pub image_id: Option, + #[serde(rename = "network_mode", skip_serializing_if = "Option::is_none")] + pub network_mode: Option, + #[serde(rename = "ports", skip_serializing_if = "Option::is_none")] + pub ports: Option< + ::std::collections::HashMap< + String, + crate::models::CloudVersionMatchmakerGameModeRuntimeDockerPort, + >, + >, } impl CloudVersionMatchmakerGameModeRuntimeDocker { - /// A game mode runtime running through Docker. - pub fn new() -> CloudVersionMatchmakerGameModeRuntimeDocker { - CloudVersionMatchmakerGameModeRuntimeDocker { - args: None, - build_args: None, - dockerfile: None, - env: None, - image: None, - image_id: None, - network_mode: None, - ports: None, - } - } + /// A game mode runtime running through Docker. + pub fn new() -> CloudVersionMatchmakerGameModeRuntimeDocker { + CloudVersionMatchmakerGameModeRuntimeDocker { + args: None, + build_args: None, + dockerfile: None, + env: None, + image: None, + image_id: None, + network_mode: None, + ports: None, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_version_matchmaker_game_mode_runtime_docker_port.rs b/sdks/full/rust/src/models/cloud_version_matchmaker_game_mode_runtime_docker_port.rs index 27660b0f01..6a61b5ca41 100644 --- a/sdks/full/rust/src/models/cloud_version_matchmaker_game_mode_runtime_docker_port.rs +++ b/sdks/full/rust/src/models/cloud_version_matchmaker_game_mode_runtime_docker_port.rs @@ -4,47 +4,43 @@ * 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 */ /// CloudVersionMatchmakerGameModeRuntimeDockerPort : Port config for a docker build. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct CloudVersionMatchmakerGameModeRuntimeDockerPort { - /// _Configures Rivet CLI behavior. Has no effect on server behavior._ - #[serde(rename = "dev_port", skip_serializing_if = "Option::is_none")] - pub dev_port: Option, - #[serde(rename = "dev_port_range", skip_serializing_if = "Option::is_none")] - pub dev_port_range: Option>, - #[serde(rename = "dev_protocol", skip_serializing_if = "Option::is_none")] - pub dev_protocol: Option, - /// The port number to connect to. ### Related - cloud.version.matchmaker.PortProtocol - cloud.version.matchmaker.ProxyKind - #[serde(rename = "port", skip_serializing_if = "Option::is_none")] - pub port: Option, - #[serde(rename = "port_range", skip_serializing_if = "Option::is_none")] - pub port_range: Option>, - #[serde(rename = "protocol", skip_serializing_if = "Option::is_none")] - pub protocol: Option, - #[serde(rename = "proxy", skip_serializing_if = "Option::is_none")] - pub proxy: Option, + /// _Configures Rivet CLI behavior. Has no effect on server behavior._ + #[serde(rename = "dev_port", skip_serializing_if = "Option::is_none")] + pub dev_port: Option, + #[serde(rename = "dev_port_range", skip_serializing_if = "Option::is_none")] + pub dev_port_range: Option>, + #[serde(rename = "dev_protocol", skip_serializing_if = "Option::is_none")] + pub dev_protocol: Option, + /// The port number to connect to. ### Related - cloud.version.matchmaker.PortProtocol - cloud.version.matchmaker.ProxyKind + #[serde(rename = "port", skip_serializing_if = "Option::is_none")] + pub port: Option, + #[serde(rename = "port_range", skip_serializing_if = "Option::is_none")] + pub port_range: Option>, + #[serde(rename = "protocol", skip_serializing_if = "Option::is_none")] + pub protocol: Option, + #[serde(rename = "proxy", skip_serializing_if = "Option::is_none")] + pub proxy: Option, } impl CloudVersionMatchmakerGameModeRuntimeDockerPort { - /// Port config for a docker build. - pub fn new() -> CloudVersionMatchmakerGameModeRuntimeDockerPort { - CloudVersionMatchmakerGameModeRuntimeDockerPort { - dev_port: None, - dev_port_range: None, - dev_protocol: None, - port: None, - port_range: None, - protocol: None, - proxy: None, - } - } + /// Port config for a docker build. + pub fn new() -> CloudVersionMatchmakerGameModeRuntimeDockerPort { + CloudVersionMatchmakerGameModeRuntimeDockerPort { + dev_port: None, + dev_port_range: None, + dev_protocol: None, + port: None, + port_range: None, + protocol: None, + proxy: None, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_version_matchmaker_game_mode_verification_config.rs b/sdks/full/rust/src/models/cloud_version_matchmaker_game_mode_verification_config.rs index 306ca5d409..2311a9be1c 100644 --- a/sdks/full/rust/src/models/cloud_version_matchmaker_game_mode_verification_config.rs +++ b/sdks/full/rust/src/models/cloud_version_matchmaker_game_mode_verification_config.rs @@ -4,30 +4,26 @@ * 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 */ /// CloudVersionMatchmakerGameModeVerificationConfig : Configuration that tells Rivet where to send validation requests and with what headers. When set, Rivet will send the `verification_data` property (given by the user in the find/join/create endpoint) to the given url along with the headers provided and some information about the requested lobby. The response of this request will determine if the user can join that lobby or not. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct CloudVersionMatchmakerGameModeVerificationConfig { - #[serde(rename = "headers")] - pub headers: ::std::collections::HashMap, - #[serde(rename = "url")] - pub url: String, + #[serde(rename = "headers")] + pub headers: ::std::collections::HashMap, + #[serde(rename = "url")] + pub url: String, } impl CloudVersionMatchmakerGameModeVerificationConfig { - /// Configuration that tells Rivet where to send validation requests and with what headers. When set, Rivet will send the `verification_data` property (given by the user in the find/join/create endpoint) to the given url along with the headers provided and some information about the requested lobby. The response of this request will determine if the user can join that lobby or not. - pub fn new(headers: ::std::collections::HashMap, url: String) -> CloudVersionMatchmakerGameModeVerificationConfig { - CloudVersionMatchmakerGameModeVerificationConfig { - headers, - url, - } - } + /// Configuration that tells Rivet where to send validation requests and with what headers. When set, Rivet will send the `verification_data` property (given by the user in the find/join/create endpoint) to the given url along with the headers provided and some information about the requested lobby. The response of this request will determine if the user can join that lobby or not. + pub fn new( + headers: ::std::collections::HashMap, + url: String, + ) -> CloudVersionMatchmakerGameModeVerificationConfig { + CloudVersionMatchmakerGameModeVerificationConfig { headers, url } + } } - - diff --git a/sdks/full/rust/src/models/cloud_version_matchmaker_lobby_group.rs b/sdks/full/rust/src/models/cloud_version_matchmaker_lobby_group.rs index fdc1f740a4..ec57cf0ed4 100644 --- a/sdks/full/rust/src/models/cloud_version_matchmaker_lobby_group.rs +++ b/sdks/full/rust/src/models/cloud_version_matchmaker_lobby_group.rs @@ -4,47 +4,50 @@ * 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 */ /// CloudVersionMatchmakerLobbyGroup : A game mode. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct CloudVersionMatchmakerLobbyGroup { - /// Unsigned 32 bit integer. - #[serde(rename = "max_players_direct")] - pub max_players_direct: i32, - /// Unsigned 32 bit integer. - #[serde(rename = "max_players_normal")] - pub max_players_normal: i32, - /// Unsigned 32 bit integer. - #[serde(rename = "max_players_party")] - pub max_players_party: i32, - /// **Deprecated: use GameMode instead** A human readable short identifier used to references resources. Different than a `rivet.common#Uuid` because this is intended to be human readable. Different than `rivet.common#DisplayName` because this should not include special characters and be short. - #[serde(rename = "name_id")] - pub name_id: String, - /// A list of game mode regions. - #[serde(rename = "regions")] - pub regions: Vec, - #[serde(rename = "runtime")] - pub runtime: Box, + /// Unsigned 32 bit integer. + #[serde(rename = "max_players_direct")] + pub max_players_direct: i32, + /// Unsigned 32 bit integer. + #[serde(rename = "max_players_normal")] + pub max_players_normal: i32, + /// Unsigned 32 bit integer. + #[serde(rename = "max_players_party")] + pub max_players_party: i32, + /// **Deprecated: use GameMode instead** A human readable short identifier used to references resources. Different than a `rivet.common#Uuid` because this is intended to be human readable. Different than `rivet.common#DisplayName` because this should not include special characters and be short. + #[serde(rename = "name_id")] + pub name_id: String, + /// A list of game mode regions. + #[serde(rename = "regions")] + pub regions: Vec, + #[serde(rename = "runtime")] + pub runtime: Box, } impl CloudVersionMatchmakerLobbyGroup { - /// A game mode. - pub fn new(max_players_direct: i32, max_players_normal: i32, max_players_party: i32, name_id: String, regions: Vec, runtime: crate::models::CloudVersionMatchmakerLobbyGroupRuntime) -> CloudVersionMatchmakerLobbyGroup { - CloudVersionMatchmakerLobbyGroup { - max_players_direct, - max_players_normal, - max_players_party, - name_id, - regions, - runtime: Box::new(runtime), - } - } + /// A game mode. + pub fn new( + max_players_direct: i32, + max_players_normal: i32, + max_players_party: i32, + name_id: String, + regions: Vec, + runtime: crate::models::CloudVersionMatchmakerLobbyGroupRuntime, + ) -> CloudVersionMatchmakerLobbyGroup { + CloudVersionMatchmakerLobbyGroup { + max_players_direct, + max_players_normal, + max_players_party, + name_id, + regions, + runtime: Box::new(runtime), + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_version_matchmaker_lobby_group_idle_lobbies_config.rs b/sdks/full/rust/src/models/cloud_version_matchmaker_lobby_group_idle_lobbies_config.rs index f6a1279fe0..f956cf2423 100644 --- a/sdks/full/rust/src/models/cloud_version_matchmaker_lobby_group_idle_lobbies_config.rs +++ b/sdks/full/rust/src/models/cloud_version_matchmaker_lobby_group_idle_lobbies_config.rs @@ -4,32 +4,31 @@ * 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 */ /// CloudVersionMatchmakerLobbyGroupIdleLobbiesConfig : **Deprecated: use GameMode instead** Configuration for how many idle lobbies a game version should have. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct CloudVersionMatchmakerLobbyGroupIdleLobbiesConfig { - /// Unsigned 32 bit integer. - #[serde(rename = "max_idle_lobbies")] - pub max_idle_lobbies: i32, - /// Unsigned 32 bit integer. - #[serde(rename = "min_idle_lobbies")] - pub min_idle_lobbies: i32, + /// Unsigned 32 bit integer. + #[serde(rename = "max_idle_lobbies")] + pub max_idle_lobbies: i32, + /// Unsigned 32 bit integer. + #[serde(rename = "min_idle_lobbies")] + pub min_idle_lobbies: i32, } impl CloudVersionMatchmakerLobbyGroupIdleLobbiesConfig { - /// **Deprecated: use GameMode instead** Configuration for how many idle lobbies a game version should have. - pub fn new(max_idle_lobbies: i32, min_idle_lobbies: i32) -> CloudVersionMatchmakerLobbyGroupIdleLobbiesConfig { - CloudVersionMatchmakerLobbyGroupIdleLobbiesConfig { - max_idle_lobbies, - min_idle_lobbies, - } - } + /// **Deprecated: use GameMode instead** Configuration for how many idle lobbies a game version should have. + pub fn new( + max_idle_lobbies: i32, + min_idle_lobbies: i32, + ) -> CloudVersionMatchmakerLobbyGroupIdleLobbiesConfig { + CloudVersionMatchmakerLobbyGroupIdleLobbiesConfig { + max_idle_lobbies, + min_idle_lobbies, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_version_matchmaker_lobby_group_region.rs b/sdks/full/rust/src/models/cloud_version_matchmaker_lobby_group_region.rs index fd8dd5d457..3ac192f979 100644 --- a/sdks/full/rust/src/models/cloud_version_matchmaker_lobby_group_region.rs +++ b/sdks/full/rust/src/models/cloud_version_matchmaker_lobby_group_region.rs @@ -4,34 +4,33 @@ * 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 */ /// CloudVersionMatchmakerLobbyGroupRegion : **Deprecated: use GameMode instead** A game mode region. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct CloudVersionMatchmakerLobbyGroupRegion { - #[serde(rename = "idle_lobbies", skip_serializing_if = "Option::is_none")] - pub idle_lobbies: Option>, - #[serde(rename = "region_id")] - pub region_id: uuid::Uuid, - /// A human readable short identifier used to references resources. Different than a `rivet.common#Uuid` because this is intended to be human readable. Different than `rivet.common#DisplayName` because this should not include special characters and be short. - #[serde(rename = "tier_name_id")] - pub tier_name_id: String, + #[serde(rename = "idle_lobbies", skip_serializing_if = "Option::is_none")] + pub idle_lobbies: Option>, + #[serde(rename = "region_id")] + pub region_id: uuid::Uuid, + /// A human readable short identifier used to references resources. Different than a `rivet.common#Uuid` because this is intended to be human readable. Different than `rivet.common#DisplayName` because this should not include special characters and be short. + #[serde(rename = "tier_name_id")] + pub tier_name_id: String, } impl CloudVersionMatchmakerLobbyGroupRegion { - /// **Deprecated: use GameMode instead** A game mode region. - pub fn new(region_id: uuid::Uuid, tier_name_id: String) -> CloudVersionMatchmakerLobbyGroupRegion { - CloudVersionMatchmakerLobbyGroupRegion { - idle_lobbies: None, - region_id, - tier_name_id, - } - } + /// **Deprecated: use GameMode instead** A game mode region. + pub fn new( + region_id: uuid::Uuid, + tier_name_id: String, + ) -> CloudVersionMatchmakerLobbyGroupRegion { + CloudVersionMatchmakerLobbyGroupRegion { + idle_lobbies: None, + region_id, + tier_name_id, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_version_matchmaker_lobby_group_runtime.rs b/sdks/full/rust/src/models/cloud_version_matchmaker_lobby_group_runtime.rs index 1c6df44b6c..c8c5d51a73 100644 --- a/sdks/full/rust/src/models/cloud_version_matchmaker_lobby_group_runtime.rs +++ b/sdks/full/rust/src/models/cloud_version_matchmaker_lobby_group_runtime.rs @@ -4,27 +4,21 @@ * 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 */ /// CloudVersionMatchmakerLobbyGroupRuntime : **Deprecated: use GameMode instead** A union representing the runtime a game mode runs on. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct CloudVersionMatchmakerLobbyGroupRuntime { - #[serde(rename = "docker", skip_serializing_if = "Option::is_none")] - pub docker: Option>, + #[serde(rename = "docker", skip_serializing_if = "Option::is_none")] + pub docker: Option>, } impl CloudVersionMatchmakerLobbyGroupRuntime { - /// **Deprecated: use GameMode instead** A union representing the runtime a game mode runs on. - pub fn new() -> CloudVersionMatchmakerLobbyGroupRuntime { - CloudVersionMatchmakerLobbyGroupRuntime { - docker: None, - } - } + /// **Deprecated: use GameMode instead** A union representing the runtime a game mode runs on. + pub fn new() -> CloudVersionMatchmakerLobbyGroupRuntime { + CloudVersionMatchmakerLobbyGroupRuntime { docker: None } + } } - - diff --git a/sdks/full/rust/src/models/cloud_version_matchmaker_lobby_group_runtime_docker.rs b/sdks/full/rust/src/models/cloud_version_matchmaker_lobby_group_runtime_docker.rs index 3b7abf858c..23e51de78b 100644 --- a/sdks/full/rust/src/models/cloud_version_matchmaker_lobby_group_runtime_docker.rs +++ b/sdks/full/rust/src/models/cloud_version_matchmaker_lobby_group_runtime_docker.rs @@ -4,39 +4,39 @@ * 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 */ /// CloudVersionMatchmakerLobbyGroupRuntimeDocker : **Deprecated: use GameMode instead** A game mode runtime running through Docker. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct CloudVersionMatchmakerLobbyGroupRuntimeDocker { - #[serde(rename = "args")] - pub args: Vec, - #[serde(rename = "build_id", skip_serializing_if = "Option::is_none")] - pub build_id: Option, - #[serde(rename = "env_vars")] - pub env_vars: Vec, - #[serde(rename = "network_mode", skip_serializing_if = "Option::is_none")] - pub network_mode: Option, - #[serde(rename = "ports")] - pub ports: Vec, + #[serde(rename = "args")] + pub args: Vec, + #[serde(rename = "build_id", skip_serializing_if = "Option::is_none")] + pub build_id: Option, + #[serde(rename = "env_vars")] + pub env_vars: Vec, + #[serde(rename = "network_mode", skip_serializing_if = "Option::is_none")] + pub network_mode: Option, + #[serde(rename = "ports")] + pub ports: Vec, } impl CloudVersionMatchmakerLobbyGroupRuntimeDocker { - /// **Deprecated: use GameMode instead** A game mode runtime running through Docker. - pub fn new(args: Vec, env_vars: Vec, ports: Vec) -> CloudVersionMatchmakerLobbyGroupRuntimeDocker { - CloudVersionMatchmakerLobbyGroupRuntimeDocker { - args, - build_id: None, - env_vars, - network_mode: None, - ports, - } - } + /// **Deprecated: use GameMode instead** A game mode runtime running through Docker. + pub fn new( + args: Vec, + env_vars: Vec, + ports: Vec, + ) -> CloudVersionMatchmakerLobbyGroupRuntimeDocker { + CloudVersionMatchmakerLobbyGroupRuntimeDocker { + args, + build_id: None, + env_vars, + network_mode: None, + ports, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_version_matchmaker_lobby_group_runtime_docker_env_var.rs b/sdks/full/rust/src/models/cloud_version_matchmaker_lobby_group_runtime_docker_env_var.rs index 7deb9e1a6e..3c7c8a6d0e 100644 --- a/sdks/full/rust/src/models/cloud_version_matchmaker_lobby_group_runtime_docker_env_var.rs +++ b/sdks/full/rust/src/models/cloud_version_matchmaker_lobby_group_runtime_docker_env_var.rs @@ -4,30 +4,23 @@ * 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 */ /// CloudVersionMatchmakerLobbyGroupRuntimeDockerEnvVar : **Deprecated: use GameMode instead** A docker environment variable. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct CloudVersionMatchmakerLobbyGroupRuntimeDockerEnvVar { - #[serde(rename = "key")] - pub key: String, - #[serde(rename = "value")] - pub value: String, + #[serde(rename = "key")] + pub key: String, + #[serde(rename = "value")] + pub value: String, } impl CloudVersionMatchmakerLobbyGroupRuntimeDockerEnvVar { - /// **Deprecated: use GameMode instead** A docker environment variable. - pub fn new(key: String, value: String) -> CloudVersionMatchmakerLobbyGroupRuntimeDockerEnvVar { - CloudVersionMatchmakerLobbyGroupRuntimeDockerEnvVar { - key, - value, - } - } + /// **Deprecated: use GameMode instead** A docker environment variable. + pub fn new(key: String, value: String) -> CloudVersionMatchmakerLobbyGroupRuntimeDockerEnvVar { + CloudVersionMatchmakerLobbyGroupRuntimeDockerEnvVar { key, value } + } } - - diff --git a/sdks/full/rust/src/models/cloud_version_matchmaker_lobby_group_runtime_docker_port.rs b/sdks/full/rust/src/models/cloud_version_matchmaker_lobby_group_runtime_docker_port.rs index 33e4251a44..e9e71af610 100644 --- a/sdks/full/rust/src/models/cloud_version_matchmaker_lobby_group_runtime_docker_port.rs +++ b/sdks/full/rust/src/models/cloud_version_matchmaker_lobby_group_runtime_docker_port.rs @@ -4,38 +4,37 @@ * 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 */ /// CloudVersionMatchmakerLobbyGroupRuntimeDockerPort : **Deprecated: use GameMode instead** A docker port. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct CloudVersionMatchmakerLobbyGroupRuntimeDockerPort { - /// The label of this docker port. - #[serde(rename = "label")] - pub label: String, - #[serde(rename = "port_range", skip_serializing_if = "Option::is_none")] - pub port_range: Option>, - #[serde(rename = "proxy_protocol")] - pub proxy_protocol: crate::models::CloudVersionMatchmakerPortProtocol, - /// The port number to connect to. - #[serde(rename = "target_port", skip_serializing_if = "Option::is_none")] - pub target_port: Option, + /// The label of this docker port. + #[serde(rename = "label")] + pub label: String, + #[serde(rename = "port_range", skip_serializing_if = "Option::is_none")] + pub port_range: Option>, + #[serde(rename = "proxy_protocol")] + pub proxy_protocol: crate::models::CloudVersionMatchmakerPortProtocol, + /// The port number to connect to. + #[serde(rename = "target_port", skip_serializing_if = "Option::is_none")] + pub target_port: Option, } impl CloudVersionMatchmakerLobbyGroupRuntimeDockerPort { - /// **Deprecated: use GameMode instead** A docker port. - pub fn new(label: String, proxy_protocol: crate::models::CloudVersionMatchmakerPortProtocol) -> CloudVersionMatchmakerLobbyGroupRuntimeDockerPort { - CloudVersionMatchmakerLobbyGroupRuntimeDockerPort { - label, - port_range: None, - proxy_protocol, - target_port: None, - } - } + /// **Deprecated: use GameMode instead** A docker port. + pub fn new( + label: String, + proxy_protocol: crate::models::CloudVersionMatchmakerPortProtocol, + ) -> CloudVersionMatchmakerLobbyGroupRuntimeDockerPort { + CloudVersionMatchmakerLobbyGroupRuntimeDockerPort { + label, + port_range: None, + proxy_protocol, + target_port: None, + } + } } - - diff --git a/sdks/full/rust/src/models/cloud_version_matchmaker_network_mode.rs b/sdks/full/rust/src/models/cloud_version_matchmaker_network_mode.rs index 01ac9c3c9e..9622bea2bd 100644 --- a/sdks/full/rust/src/models/cloud_version_matchmaker_network_mode.rs +++ b/sdks/full/rust/src/models/cloud_version_matchmaker_network_mode.rs @@ -4,7 +4,7 @@ * 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 */ @@ -13,28 +13,23 @@ /// Configures how the container's network is isolated from the host. `bridge` (default) networking isolates the container's network from the host & other containers. `host` networking removes isolation between the container and the host. Only available in Rivet Open Source & Enterprise. Read more about bridge vs host networking [here](https://rivet.gg/docs/dynamic-servers/concepts/host-bridge-networking). #[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] pub enum CloudVersionMatchmakerNetworkMode { - #[serde(rename = "bridge")] - Bridge, - #[serde(rename = "host")] - Host, - + #[serde(rename = "bridge")] + Bridge, + #[serde(rename = "host")] + Host, } impl ToString for CloudVersionMatchmakerNetworkMode { - fn to_string(&self) -> String { - match self { - Self::Bridge => String::from("bridge"), - Self::Host => String::from("host"), - } - } + fn to_string(&self) -> String { + match self { + Self::Bridge => String::from("bridge"), + Self::Host => String::from("host"), + } + } } impl Default for CloudVersionMatchmakerNetworkMode { - fn default() -> CloudVersionMatchmakerNetworkMode { - Self::Bridge - } + fn default() -> CloudVersionMatchmakerNetworkMode { + Self::Bridge + } } - - - - diff --git a/sdks/full/rust/src/models/cloud_version_matchmaker_port_protocol.rs b/sdks/full/rust/src/models/cloud_version_matchmaker_port_protocol.rs index 50d9809f63..c051284dec 100644 --- a/sdks/full/rust/src/models/cloud_version_matchmaker_port_protocol.rs +++ b/sdks/full/rust/src/models/cloud_version_matchmaker_port_protocol.rs @@ -4,7 +4,7 @@ * 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 */ @@ -13,37 +13,32 @@ /// Signifies the protocol of the port. Note that when proxying through GameGuard (via `ProxyKind`), the port number returned by `/find`, `/join`, and `/create` will not be the same as the port number configured in the config: - With HTTP, the port will always be 80. The hostname of the port correctly routes the incoming connection to the correct port being used by the game server. - With HTTPS, the port will always be 443. The hostname of the port correctly routes the incoming connection to the correct port being used by the game server. - Using TCP/UDP, the port will be a random number between 26000 and 31999. This gets automatically routed to the correct port being used by the game server. ### Related - cloud.version.matchmaker.GameModeRuntimeDockerPort - cloud.version.matchmaker.ProxyKind - /docs/dynamic-servers/concepts/game-guard - matchmaker.lobbies.find #[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] pub enum CloudVersionMatchmakerPortProtocol { - #[serde(rename = "http")] - Http, - #[serde(rename = "https")] - Https, - #[serde(rename = "tcp")] - Tcp, - #[serde(rename = "tcp_tls")] - TcpTls, - #[serde(rename = "udp")] - Udp, - + #[serde(rename = "http")] + Http, + #[serde(rename = "https")] + Https, + #[serde(rename = "tcp")] + Tcp, + #[serde(rename = "tcp_tls")] + TcpTls, + #[serde(rename = "udp")] + Udp, } impl ToString for CloudVersionMatchmakerPortProtocol { - 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"), - } - } + 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 CloudVersionMatchmakerPortProtocol { - fn default() -> CloudVersionMatchmakerPortProtocol { - Self::Http - } + fn default() -> CloudVersionMatchmakerPortProtocol { + Self::Http + } } - - - - diff --git a/sdks/full/rust/src/models/cloud_version_matchmaker_port_range.rs b/sdks/full/rust/src/models/cloud_version_matchmaker_port_range.rs index 97b716690d..d79b40a65c 100644 --- a/sdks/full/rust/src/models/cloud_version_matchmaker_port_range.rs +++ b/sdks/full/rust/src/models/cloud_version_matchmaker_port_range.rs @@ -4,32 +4,25 @@ * 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 */ /// CloudVersionMatchmakerPortRange : Range of ports that can be connected to. If configured, `network_mode` must equal `host`. Port ranges may overlap between containers, it is the responsibility of the developer to ensure ports are available before using. Read more about host networking [here](https://rivet.gg/docs/dynamic-servers/concepts/host-bridge-networking). Only available on Rivet Open Source & Enterprise. ### Related - cloud.version.matchmaker.PortProtocol - cloud.version.matchmaker.ProxyKind - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct CloudVersionMatchmakerPortRange { - /// Unsigned 32 bit integer. - #[serde(rename = "max")] - pub max: i32, - /// Unsigned 32 bit integer. - #[serde(rename = "min")] - pub min: i32, + /// Unsigned 32 bit integer. + #[serde(rename = "max")] + pub max: i32, + /// Unsigned 32 bit integer. + #[serde(rename = "min")] + pub min: i32, } impl CloudVersionMatchmakerPortRange { - /// Range of ports that can be connected to. If configured, `network_mode` must equal `host`. Port ranges may overlap between containers, it is the responsibility of the developer to ensure ports are available before using. Read more about host networking [here](https://rivet.gg/docs/dynamic-servers/concepts/host-bridge-networking). Only available on Rivet Open Source & Enterprise. ### Related - cloud.version.matchmaker.PortProtocol - cloud.version.matchmaker.ProxyKind - pub fn new(max: i32, min: i32) -> CloudVersionMatchmakerPortRange { - CloudVersionMatchmakerPortRange { - max, - min, - } - } + /// Range of ports that can be connected to. If configured, `network_mode` must equal `host`. Port ranges may overlap between containers, it is the responsibility of the developer to ensure ports are available before using. Read more about host networking [here](https://rivet.gg/docs/dynamic-servers/concepts/host-bridge-networking). Only available on Rivet Open Source & Enterprise. ### Related - cloud.version.matchmaker.PortProtocol - cloud.version.matchmaker.ProxyKind + pub fn new(max: i32, min: i32) -> CloudVersionMatchmakerPortRange { + CloudVersionMatchmakerPortRange { max, min } + } } - - diff --git a/sdks/full/rust/src/models/cloud_version_matchmaker_proxy_kind.rs b/sdks/full/rust/src/models/cloud_version_matchmaker_proxy_kind.rs index f2d1f0de49..f102ccd44e 100644 --- a/sdks/full/rust/src/models/cloud_version_matchmaker_proxy_kind.rs +++ b/sdks/full/rust/src/models/cloud_version_matchmaker_proxy_kind.rs @@ -4,7 +4,7 @@ * 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 */ @@ -13,28 +13,23 @@ /// Range of ports that can be connected to. `game_guard` (default) proxies all traffic through [Game Guard](https://rivet.gg/docs/dynamic-servers/concepts/game-guard) to mitigate DDoS attacks and provide TLS termination. `none` sends traffic directly to the game server. If configured, `network_mode` must equal `host`. Read more about host networking [here](https://rivet.gg/docs/dynamic-servers/concepts/host-bridge-networking). Only available on Rivet Open Source & Enterprise. ### Related - /docs/dynamic-servers/concepts/game-guard - cloud.version.matchmaker.PortProtocol #[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] pub enum CloudVersionMatchmakerProxyKind { - #[serde(rename = "none")] - None, - #[serde(rename = "game_guard")] - GameGuard, - + #[serde(rename = "none")] + None, + #[serde(rename = "game_guard")] + GameGuard, } impl ToString for CloudVersionMatchmakerProxyKind { - fn to_string(&self) -> String { - match self { - Self::None => String::from("none"), - Self::GameGuard => String::from("game_guard"), - } - } + fn to_string(&self) -> String { + match self { + Self::None => String::from("none"), + Self::GameGuard => String::from("game_guard"), + } + } } impl Default for CloudVersionMatchmakerProxyKind { - fn default() -> CloudVersionMatchmakerProxyKind { - Self::None - } + fn default() -> CloudVersionMatchmakerProxyKind { + Self::None + } } - - - - diff --git a/sdks/full/rust/src/models/cloud_version_summary.rs b/sdks/full/rust/src/models/cloud_version_summary.rs index 52f47690d2..d0b9e99e48 100644 --- a/sdks/full/rust/src/models/cloud_version_summary.rs +++ b/sdks/full/rust/src/models/cloud_version_summary.rs @@ -4,35 +4,35 @@ * 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 */ /// CloudVersionSummary : A version summary. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct CloudVersionSummary { - /// RFC3339 timestamp - #[serde(rename = "create_ts")] - pub create_ts: String, - /// Represent a resource's readable display name. - #[serde(rename = "display_name")] - pub display_name: String, - #[serde(rename = "version_id")] - pub version_id: uuid::Uuid, + /// RFC3339 timestamp + #[serde(rename = "create_ts")] + pub create_ts: String, + /// Represent a resource's readable display name. + #[serde(rename = "display_name")] + pub display_name: String, + #[serde(rename = "version_id")] + pub version_id: uuid::Uuid, } impl CloudVersionSummary { - /// A version summary. - pub fn new(create_ts: String, display_name: String, version_id: uuid::Uuid) -> CloudVersionSummary { - CloudVersionSummary { - create_ts, - display_name, - version_id, - } - } + /// A version summary. + pub fn new( + create_ts: String, + display_name: String, + version_id: uuid::Uuid, + ) -> CloudVersionSummary { + CloudVersionSummary { + create_ts, + display_name, + version_id, + } + } } - - diff --git a/sdks/full/rust/src/models/error_body.rs b/sdks/full/rust/src/models/error_body.rs index 1ad1d62334..eccffc0d94 100644 --- a/sdks/full/rust/src/models/error_body.rs +++ b/sdks/full/rust/src/models/error_body.rs @@ -4,38 +4,38 @@ * 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 ErrorBody { - #[serde(rename = "code")] - pub code: String, - #[serde(rename = "documentation", skip_serializing_if = "Option::is_none")] - pub documentation: Option, - #[serde(rename = "message")] - pub message: String, - /// Unstructured metadata relating to an error. Must be manually parsed. - #[serde(rename = "metadata", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")] - pub metadata: Option>, - #[serde(rename = "ray_id")] - pub ray_id: String, + #[serde(rename = "code")] + pub code: String, + #[serde(rename = "documentation", skip_serializing_if = "Option::is_none")] + pub documentation: Option, + #[serde(rename = "message")] + pub message: String, + /// Unstructured metadata relating to an error. Must be manually parsed. + #[serde( + rename = "metadata", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub metadata: Option>, + #[serde(rename = "ray_id")] + pub ray_id: String, } impl ErrorBody { - pub fn new(code: String, message: String, ray_id: String) -> ErrorBody { - ErrorBody { - code, - documentation: None, - message, - metadata: None, - ray_id, - } - } + pub fn new(code: String, message: String, ray_id: String) -> ErrorBody { + ErrorBody { + code, + documentation: None, + message, + metadata: None, + ray_id, + } + } } - - diff --git a/sdks/full/rust/src/models/game_handle.rs b/sdks/full/rust/src/models/game_handle.rs index 346a1b6a6e..930e573ccc 100644 --- a/sdks/full/rust/src/models/game_handle.rs +++ b/sdks/full/rust/src/models/game_handle.rs @@ -4,41 +4,36 @@ * 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 GameHandle { - /// The URL of this game's banner image. - #[serde(rename = "banner_url", skip_serializing_if = "Option::is_none")] - pub banner_url: Option, - /// Represent a resource's readable display name. - #[serde(rename = "display_name")] - pub display_name: String, - #[serde(rename = "game_id")] - pub game_id: uuid::Uuid, - /// The URL of this game's logo image. - #[serde(rename = "logo_url", skip_serializing_if = "Option::is_none")] - pub logo_url: Option, - /// A human readable short identifier used to references resources. Different than a `uuid` because this is intended to be human readable. Different than `DisplayName` because this should not include special characters and be short. - #[serde(rename = "name_id")] - pub name_id: String, + /// The URL of this game's banner image. + #[serde(rename = "banner_url", skip_serializing_if = "Option::is_none")] + pub banner_url: Option, + /// Represent a resource's readable display name. + #[serde(rename = "display_name")] + pub display_name: String, + #[serde(rename = "game_id")] + pub game_id: uuid::Uuid, + /// The URL of this game's logo image. + #[serde(rename = "logo_url", skip_serializing_if = "Option::is_none")] + pub logo_url: Option, + /// A human readable short identifier used to references resources. Different than a `uuid` because this is intended to be human readable. Different than `DisplayName` because this should not include special characters and be short. + #[serde(rename = "name_id")] + pub name_id: String, } impl GameHandle { - pub fn new(display_name: String, game_id: uuid::Uuid, name_id: String) -> GameHandle { - GameHandle { - banner_url: None, - display_name, - game_id, - logo_url: None, - name_id, - } - } + pub fn new(display_name: String, game_id: uuid::Uuid, name_id: String) -> GameHandle { + GameHandle { + banner_url: None, + display_name, + game_id, + logo_url: None, + name_id, + } + } } - - diff --git a/sdks/full/rust/src/models/game_leaderboard_category.rs b/sdks/full/rust/src/models/game_leaderboard_category.rs index 29cb86fe4e..187d93ebe0 100644 --- a/sdks/full/rust/src/models/game_leaderboard_category.rs +++ b/sdks/full/rust/src/models/game_leaderboard_category.rs @@ -4,28 +4,22 @@ * 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 */ /// GameLeaderboardCategory : A game leaderboard category. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct GameLeaderboardCategory { - /// Represent a resource's readable display name. - #[serde(rename = "display_name")] - pub display_name: String, + /// Represent a resource's readable display name. + #[serde(rename = "display_name")] + pub display_name: String, } impl GameLeaderboardCategory { - /// A game leaderboard category. - pub fn new(display_name: String) -> GameLeaderboardCategory { - GameLeaderboardCategory { - display_name, - } - } + /// A game leaderboard category. + pub fn new(display_name: String) -> GameLeaderboardCategory { + GameLeaderboardCategory { display_name } + } } - - diff --git a/sdks/full/rust/src/models/game_platform_link.rs b/sdks/full/rust/src/models/game_platform_link.rs index f8a8591e22..7b117be70c 100644 --- a/sdks/full/rust/src/models/game_platform_link.rs +++ b/sdks/full/rust/src/models/game_platform_link.rs @@ -4,32 +4,25 @@ * 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 */ /// GamePlatformLink : A platform link denoting a supported platform. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct GamePlatformLink { - /// Represent a resource's readable display name. - #[serde(rename = "display_name")] - pub display_name: String, - /// The URL to the given game's method of distribution on this platform. - #[serde(rename = "url")] - pub url: String, + /// Represent a resource's readable display name. + #[serde(rename = "display_name")] + pub display_name: String, + /// The URL to the given game's method of distribution on this platform. + #[serde(rename = "url")] + pub url: String, } impl GamePlatformLink { - /// A platform link denoting a supported platform. - pub fn new(display_name: String, url: String) -> GamePlatformLink { - GamePlatformLink { - display_name, - url, - } - } + /// A platform link denoting a supported platform. + pub fn new(display_name: String, url: String) -> GamePlatformLink { + GamePlatformLink { display_name, url } + } } - - diff --git a/sdks/full/rust/src/models/game_profile.rs b/sdks/full/rust/src/models/game_profile.rs index 4fd3a3dfdb..97e790e6e7 100644 --- a/sdks/full/rust/src/models/game_profile.rs +++ b/sdks/full/rust/src/models/game_profile.rs @@ -4,74 +4,82 @@ * 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 */ /// GameProfile : A game profile. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct GameProfile { - /// The URL of this game's banner image. - #[serde(rename = "banner_url", skip_serializing_if = "Option::is_none")] - pub banner_url: Option, - /// A description of the given game. - #[serde(rename = "description")] - pub description: String, - #[serde(rename = "developer")] - pub developer: Box, - /// Represent a resource's readable display name. - #[serde(rename = "display_name")] - pub display_name: String, - #[serde(rename = "game_id")] - pub game_id: uuid::Uuid, - /// A list of game leaderboard categories. - #[serde(rename = "group_leaderboard_categories")] - pub group_leaderboard_categories: Vec, - /// A list of game leaderboard categories. - #[serde(rename = "identity_leaderboard_categories")] - pub identity_leaderboard_categories: Vec, - /// The URL of this game's logo image. - #[serde(rename = "logo_url", skip_serializing_if = "Option::is_none")] - pub logo_url: Option, - /// A human readable short identifier used to references resources. Different than a `rivet.common#Uuid` because this is intended to be human readable. Different than `rivet.common#DisplayName` because this should not include special characters and be short. - #[serde(rename = "name_id")] - pub name_id: String, - /// A list of platform links. - #[serde(rename = "platforms")] - pub platforms: Vec, - /// A list of group summaries. - #[serde(rename = "recommended_groups")] - pub recommended_groups: Vec, - /// A list of game tags. - #[serde(rename = "tags")] - pub tags: Vec, - /// The URL to this game's website. - #[serde(rename = "url")] - pub url: String, + /// The URL of this game's banner image. + #[serde(rename = "banner_url", skip_serializing_if = "Option::is_none")] + pub banner_url: Option, + /// A description of the given game. + #[serde(rename = "description")] + pub description: String, + #[serde(rename = "developer")] + pub developer: Box, + /// Represent a resource's readable display name. + #[serde(rename = "display_name")] + pub display_name: String, + #[serde(rename = "game_id")] + pub game_id: uuid::Uuid, + /// A list of game leaderboard categories. + #[serde(rename = "group_leaderboard_categories")] + pub group_leaderboard_categories: Vec, + /// A list of game leaderboard categories. + #[serde(rename = "identity_leaderboard_categories")] + pub identity_leaderboard_categories: Vec, + /// The URL of this game's logo image. + #[serde(rename = "logo_url", skip_serializing_if = "Option::is_none")] + pub logo_url: Option, + /// A human readable short identifier used to references resources. Different than a `rivet.common#Uuid` because this is intended to be human readable. Different than `rivet.common#DisplayName` because this should not include special characters and be short. + #[serde(rename = "name_id")] + pub name_id: String, + /// A list of platform links. + #[serde(rename = "platforms")] + pub platforms: Vec, + /// A list of group summaries. + #[serde(rename = "recommended_groups")] + pub recommended_groups: Vec, + /// A list of game tags. + #[serde(rename = "tags")] + pub tags: Vec, + /// The URL to this game's website. + #[serde(rename = "url")] + pub url: String, } impl GameProfile { - /// A game profile. - pub fn new(description: String, developer: crate::models::GroupSummary, display_name: String, game_id: uuid::Uuid, group_leaderboard_categories: Vec, identity_leaderboard_categories: Vec, name_id: String, platforms: Vec, recommended_groups: Vec, tags: Vec, url: String) -> GameProfile { - GameProfile { - banner_url: None, - description, - developer: Box::new(developer), - display_name, - game_id, - group_leaderboard_categories, - identity_leaderboard_categories, - logo_url: None, - name_id, - platforms, - recommended_groups, - tags, - url, - } - } + /// A game profile. + pub fn new( + description: String, + developer: crate::models::GroupSummary, + display_name: String, + game_id: uuid::Uuid, + group_leaderboard_categories: Vec, + identity_leaderboard_categories: Vec, + name_id: String, + platforms: Vec, + recommended_groups: Vec, + tags: Vec, + url: String, + ) -> GameProfile { + GameProfile { + banner_url: None, + description, + developer: Box::new(developer), + display_name, + game_id, + group_leaderboard_categories, + identity_leaderboard_categories, + logo_url: None, + name_id, + platforms, + recommended_groups, + tags, + url, + } + } } - - diff --git a/sdks/full/rust/src/models/game_stat.rs b/sdks/full/rust/src/models/game_stat.rs index d9fbbfe2d1..ddc881a2fb 100644 --- a/sdks/full/rust/src/models/game_stat.rs +++ b/sdks/full/rust/src/models/game_stat.rs @@ -4,31 +4,27 @@ * 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 */ /// GameStat : A game statistic. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct GameStat { - #[serde(rename = "config")] - pub config: Box, - /// A single overall value of the given statistic. - #[serde(rename = "overall_value")] - pub overall_value: f64, + #[serde(rename = "config")] + pub config: Box, + /// A single overall value of the given statistic. + #[serde(rename = "overall_value")] + pub overall_value: f64, } impl GameStat { - /// A game statistic. - pub fn new(config: crate::models::GameStatConfig, overall_value: f64) -> GameStat { - GameStat { - config: Box::new(config), - overall_value, - } - } + /// A game statistic. + pub fn new(config: crate::models::GameStatConfig, overall_value: f64) -> GameStat { + GameStat { + config: Box::new(config), + overall_value, + } + } } - - diff --git a/sdks/full/rust/src/models/game_stat_aggregation_method.rs b/sdks/full/rust/src/models/game_stat_aggregation_method.rs index 7f11571aa2..6f39077c88 100644 --- a/sdks/full/rust/src/models/game_stat_aggregation_method.rs +++ b/sdks/full/rust/src/models/game_stat_aggregation_method.rs @@ -4,7 +4,7 @@ * 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 */ @@ -13,34 +13,29 @@ /// A value denoting the aggregation method of a game statistic. #[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] pub enum GameStatAggregationMethod { - #[serde(rename = "sum")] - Sum, - #[serde(rename = "average")] - Average, - #[serde(rename = "min")] - Min, - #[serde(rename = "max")] - Max, - + #[serde(rename = "sum")] + Sum, + #[serde(rename = "average")] + Average, + #[serde(rename = "min")] + Min, + #[serde(rename = "max")] + Max, } impl ToString for GameStatAggregationMethod { - fn to_string(&self) -> String { - match self { - Self::Sum => String::from("sum"), - Self::Average => String::from("average"), - Self::Min => String::from("min"), - Self::Max => String::from("max"), - } - } + fn to_string(&self) -> String { + match self { + Self::Sum => String::from("sum"), + Self::Average => String::from("average"), + Self::Min => String::from("min"), + Self::Max => String::from("max"), + } + } } impl Default for GameStatAggregationMethod { - fn default() -> GameStatAggregationMethod { - Self::Sum - } + fn default() -> GameStatAggregationMethod { + Self::Sum + } } - - - - diff --git a/sdks/full/rust/src/models/game_stat_config.rs b/sdks/full/rust/src/models/game_stat_config.rs index f9c47ec3b2..6df69b3d04 100644 --- a/sdks/full/rust/src/models/game_stat_config.rs +++ b/sdks/full/rust/src/models/game_stat_config.rs @@ -4,62 +4,66 @@ * 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 */ /// GameStatConfig : A game statistic config. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct GameStatConfig { - #[serde(rename = "aggregation")] - pub aggregation: crate::models::GameStatAggregationMethod, - /// Represent a resource's readable display name. - #[serde(rename = "display_name")] - pub display_name: String, - #[serde(rename = "format")] - pub format: crate::models::GameStatFormatMethod, - #[serde(rename = "icon_id")] - pub icon_id: uuid::Uuid, - /// A string appended to the end of a game statistic's value that is not exactly 1. Example: 45 **dollars**. - #[serde(rename = "postfix_plural", skip_serializing_if = "Option::is_none")] - pub postfix_plural: Option, - /// A string appended to the end of a singular game statistic's value. Example: 1 **dollar**. - #[serde(rename = "postfix_singular", skip_serializing_if = "Option::is_none")] - pub postfix_singular: Option, - /// A string prepended to the beginning of a game statistic's value that is not exactly 1. Example: **values** 45. - #[serde(rename = "prefix_plural", skip_serializing_if = "Option::is_none")] - pub prefix_plural: Option, - /// A string appended to the beginning of a singular game statistic's value. Example: **value** 1. - #[serde(rename = "prefix_singular", skip_serializing_if = "Option::is_none")] - pub prefix_singular: Option, - #[serde(rename = "priority")] - pub priority: i32, - #[serde(rename = "record_id")] - pub record_id: uuid::Uuid, - #[serde(rename = "sorting")] - pub sorting: crate::models::GameStatSortingMethod, + #[serde(rename = "aggregation")] + pub aggregation: crate::models::GameStatAggregationMethod, + /// Represent a resource's readable display name. + #[serde(rename = "display_name")] + pub display_name: String, + #[serde(rename = "format")] + pub format: crate::models::GameStatFormatMethod, + #[serde(rename = "icon_id")] + pub icon_id: uuid::Uuid, + /// A string appended to the end of a game statistic's value that is not exactly 1. Example: 45 **dollars**. + #[serde(rename = "postfix_plural", skip_serializing_if = "Option::is_none")] + pub postfix_plural: Option, + /// A string appended to the end of a singular game statistic's value. Example: 1 **dollar**. + #[serde(rename = "postfix_singular", skip_serializing_if = "Option::is_none")] + pub postfix_singular: Option, + /// A string prepended to the beginning of a game statistic's value that is not exactly 1. Example: **values** 45. + #[serde(rename = "prefix_plural", skip_serializing_if = "Option::is_none")] + pub prefix_plural: Option, + /// A string appended to the beginning of a singular game statistic's value. Example: **value** 1. + #[serde(rename = "prefix_singular", skip_serializing_if = "Option::is_none")] + pub prefix_singular: Option, + #[serde(rename = "priority")] + pub priority: i32, + #[serde(rename = "record_id")] + pub record_id: uuid::Uuid, + #[serde(rename = "sorting")] + pub sorting: crate::models::GameStatSortingMethod, } impl GameStatConfig { - /// A game statistic config. - pub fn new(aggregation: crate::models::GameStatAggregationMethod, display_name: String, format: crate::models::GameStatFormatMethod, icon_id: uuid::Uuid, priority: i32, record_id: uuid::Uuid, sorting: crate::models::GameStatSortingMethod) -> GameStatConfig { - GameStatConfig { - aggregation, - display_name, - format, - icon_id, - postfix_plural: None, - postfix_singular: None, - prefix_plural: None, - prefix_singular: None, - priority, - record_id, - sorting, - } - } + /// A game statistic config. + pub fn new( + aggregation: crate::models::GameStatAggregationMethod, + display_name: String, + format: crate::models::GameStatFormatMethod, + icon_id: uuid::Uuid, + priority: i32, + record_id: uuid::Uuid, + sorting: crate::models::GameStatSortingMethod, + ) -> GameStatConfig { + GameStatConfig { + aggregation, + display_name, + format, + icon_id, + postfix_plural: None, + postfix_singular: None, + prefix_plural: None, + prefix_singular: None, + priority, + record_id, + sorting, + } + } } - - diff --git a/sdks/full/rust/src/models/game_stat_format_method.rs b/sdks/full/rust/src/models/game_stat_format_method.rs index 7340afdf6e..bbeb74d568 100644 --- a/sdks/full/rust/src/models/game_stat_format_method.rs +++ b/sdks/full/rust/src/models/game_stat_format_method.rs @@ -4,7 +4,7 @@ * 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 */ @@ -13,43 +13,38 @@ /// A value denoting the format method of a game statistic. #[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] pub enum GameStatFormatMethod { - #[serde(rename = "integer")] - Integer, - #[serde(rename = "float_1")] - Float1, - #[serde(rename = "float_2")] - Float2, - #[serde(rename = "float_3")] - Float3, - #[serde(rename = "duration_minute")] - DurationMinute, - #[serde(rename = "duration_second")] - DurationSecond, - #[serde(rename = "duration_hundredth_second")] - DurationHundredthSecond, - + #[serde(rename = "integer")] + Integer, + #[serde(rename = "float_1")] + Float1, + #[serde(rename = "float_2")] + Float2, + #[serde(rename = "float_3")] + Float3, + #[serde(rename = "duration_minute")] + DurationMinute, + #[serde(rename = "duration_second")] + DurationSecond, + #[serde(rename = "duration_hundredth_second")] + DurationHundredthSecond, } impl ToString for GameStatFormatMethod { - fn to_string(&self) -> String { - match self { - Self::Integer => String::from("integer"), - Self::Float1 => String::from("float_1"), - Self::Float2 => String::from("float_2"), - Self::Float3 => String::from("float_3"), - Self::DurationMinute => String::from("duration_minute"), - Self::DurationSecond => String::from("duration_second"), - Self::DurationHundredthSecond => String::from("duration_hundredth_second"), - } - } + fn to_string(&self) -> String { + match self { + Self::Integer => String::from("integer"), + Self::Float1 => String::from("float_1"), + Self::Float2 => String::from("float_2"), + Self::Float3 => String::from("float_3"), + Self::DurationMinute => String::from("duration_minute"), + Self::DurationSecond => String::from("duration_second"), + Self::DurationHundredthSecond => String::from("duration_hundredth_second"), + } + } } impl Default for GameStatFormatMethod { - fn default() -> GameStatFormatMethod { - Self::Integer - } + fn default() -> GameStatFormatMethod { + Self::Integer + } } - - - - diff --git a/sdks/full/rust/src/models/game_stat_sorting_method.rs b/sdks/full/rust/src/models/game_stat_sorting_method.rs index 695fcf70a6..88fdf54b02 100644 --- a/sdks/full/rust/src/models/game_stat_sorting_method.rs +++ b/sdks/full/rust/src/models/game_stat_sorting_method.rs @@ -4,7 +4,7 @@ * 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 */ @@ -13,28 +13,23 @@ /// A value denoting the sorting method of a game statistic. #[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] pub enum GameStatSortingMethod { - #[serde(rename = "desc")] - Desc, - #[serde(rename = "asc")] - Asc, - + #[serde(rename = "desc")] + Desc, + #[serde(rename = "asc")] + Asc, } impl ToString for GameStatSortingMethod { - fn to_string(&self) -> String { - match self { - Self::Desc => String::from("desc"), - Self::Asc => String::from("asc"), - } - } + fn to_string(&self) -> String { + match self { + Self::Desc => String::from("desc"), + Self::Asc => String::from("asc"), + } + } } impl Default for GameStatSortingMethod { - fn default() -> GameStatSortingMethod { - Self::Desc - } + fn default() -> GameStatSortingMethod { + Self::Desc + } } - - - - diff --git a/sdks/full/rust/src/models/game_stat_summary.rs b/sdks/full/rust/src/models/game_stat_summary.rs index 1d1a267675..443355d4ce 100644 --- a/sdks/full/rust/src/models/game_stat_summary.rs +++ b/sdks/full/rust/src/models/game_stat_summary.rs @@ -4,30 +4,29 @@ * 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 */ /// GameStatSummary : A game statistic summary. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct GameStatSummary { - #[serde(rename = "game")] - pub game: Box, - #[serde(rename = "stats")] - pub stats: Vec, + #[serde(rename = "game")] + pub game: Box, + #[serde(rename = "stats")] + pub stats: Vec, } impl GameStatSummary { - /// A game statistic summary. - pub fn new(game: crate::models::GameHandle, stats: Vec) -> GameStatSummary { - GameStatSummary { - game: Box::new(game), - stats, - } - } + /// A game statistic summary. + pub fn new( + game: crate::models::GameHandle, + stats: Vec, + ) -> GameStatSummary { + GameStatSummary { + game: Box::new(game), + stats, + } + } } - - diff --git a/sdks/full/rust/src/models/game_summary.rs b/sdks/full/rust/src/models/game_summary.rs index 88d337f3db..61e9ec4f4c 100644 --- a/sdks/full/rust/src/models/game_summary.rs +++ b/sdks/full/rust/src/models/game_summary.rs @@ -4,51 +4,53 @@ * 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 GameSummary { - /// The URL of this game's banner image. - #[serde(rename = "banner_url", skip_serializing_if = "Option::is_none")] - pub banner_url: Option, - #[serde(rename = "developer")] - pub developer: Box, - /// Represent a resource's readable display name. - #[serde(rename = "display_name")] - pub display_name: String, - #[serde(rename = "game_id")] - pub game_id: uuid::Uuid, - /// The URL of this game's logo image. - #[serde(rename = "logo_url", skip_serializing_if = "Option::is_none")] - pub logo_url: Option, - /// A human readable short identifier used to references resources. Different than a `uuid` because this is intended to be human readable. Different than `DisplayName` because this should not include special characters and be short. - #[serde(rename = "name_id")] - pub name_id: String, - /// Unsigned 32 bit integer. - #[serde(rename = "total_player_count")] - pub total_player_count: i32, - #[serde(rename = "url")] - pub url: String, + /// The URL of this game's banner image. + #[serde(rename = "banner_url", skip_serializing_if = "Option::is_none")] + pub banner_url: Option, + #[serde(rename = "developer")] + pub developer: Box, + /// Represent a resource's readable display name. + #[serde(rename = "display_name")] + pub display_name: String, + #[serde(rename = "game_id")] + pub game_id: uuid::Uuid, + /// The URL of this game's logo image. + #[serde(rename = "logo_url", skip_serializing_if = "Option::is_none")] + pub logo_url: Option, + /// A human readable short identifier used to references resources. Different than a `uuid` because this is intended to be human readable. Different than `DisplayName` because this should not include special characters and be short. + #[serde(rename = "name_id")] + pub name_id: String, + /// Unsigned 32 bit integer. + #[serde(rename = "total_player_count")] + pub total_player_count: i32, + #[serde(rename = "url")] + pub url: String, } impl GameSummary { - pub fn new(developer: crate::models::GroupHandle, display_name: String, game_id: uuid::Uuid, name_id: String, total_player_count: i32, url: String) -> GameSummary { - GameSummary { - banner_url: None, - developer: Box::new(developer), - display_name, - game_id, - logo_url: None, - name_id, - total_player_count, - url, - } - } + pub fn new( + developer: crate::models::GroupHandle, + display_name: String, + game_id: uuid::Uuid, + name_id: String, + total_player_count: i32, + url: String, + ) -> GameSummary { + GameSummary { + banner_url: None, + developer: Box::new(developer), + display_name, + game_id, + logo_url: None, + name_id, + total_player_count, + url, + } + } } - - diff --git a/sdks/full/rust/src/models/games_environments_create_service_token_response.rs b/sdks/full/rust/src/models/games_environments_create_service_token_response.rs index fb7f482fce..f139fee460 100644 --- a/sdks/full/rust/src/models/games_environments_create_service_token_response.rs +++ b/sdks/full/rust/src/models/games_environments_create_service_token_response.rs @@ -4,26 +4,19 @@ * 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 GamesEnvironmentsCreateServiceTokenResponse { - /// A JSON Web Token. - #[serde(rename = "token")] - pub token: String, + /// A JSON Web Token. + #[serde(rename = "token")] + pub token: String, } impl GamesEnvironmentsCreateServiceTokenResponse { - pub fn new(token: String) -> GamesEnvironmentsCreateServiceTokenResponse { - GamesEnvironmentsCreateServiceTokenResponse { - token, - } - } + pub fn new(token: String) -> GamesEnvironmentsCreateServiceTokenResponse { + GamesEnvironmentsCreateServiceTokenResponse { token } + } } - - diff --git a/sdks/full/rust/src/models/geo_coord.rs b/sdks/full/rust/src/models/geo_coord.rs index 6ebb7e3346..54c01a7bfb 100644 --- a/sdks/full/rust/src/models/geo_coord.rs +++ b/sdks/full/rust/src/models/geo_coord.rs @@ -4,30 +4,26 @@ * 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 */ /// GeoCoord : Geographical coordinates for a location on Planet Earth. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct GeoCoord { - #[serde(rename = "latitude")] - pub latitude: f64, - #[serde(rename = "longitude")] - pub longitude: f64, + #[serde(rename = "latitude")] + pub latitude: f64, + #[serde(rename = "longitude")] + pub longitude: f64, } impl GeoCoord { - /// Geographical coordinates for a location on Planet Earth. - pub fn new(latitude: f64, longitude: f64) -> GeoCoord { - GeoCoord { - latitude, - longitude, - } - } + /// Geographical coordinates for a location on Planet Earth. + pub fn new(latitude: f64, longitude: f64) -> GeoCoord { + GeoCoord { + latitude, + longitude, + } + } } - - diff --git a/sdks/full/rust/src/models/geo_distance.rs b/sdks/full/rust/src/models/geo_distance.rs index 19b1f82bf0..d4373b1057 100644 --- a/sdks/full/rust/src/models/geo_distance.rs +++ b/sdks/full/rust/src/models/geo_distance.rs @@ -4,30 +4,23 @@ * 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 */ /// GeoDistance : Distance available in multiple units. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct GeoDistance { - #[serde(rename = "kilometers")] - pub kilometers: f64, - #[serde(rename = "miles")] - pub miles: f64, + #[serde(rename = "kilometers")] + pub kilometers: f64, + #[serde(rename = "miles")] + pub miles: f64, } impl GeoDistance { - /// Distance available in multiple units. - pub fn new(kilometers: f64, miles: f64) -> GeoDistance { - GeoDistance { - kilometers, - miles, - } - } + /// Distance available in multiple units. + pub fn new(kilometers: f64, miles: f64) -> GeoDistance { + GeoDistance { kilometers, miles } + } } - - diff --git a/sdks/full/rust/src/models/global_event_notification.rs b/sdks/full/rust/src/models/global_event_notification.rs index d0ff0d22ee..242c904a7b 100644 --- a/sdks/full/rust/src/models/global_event_notification.rs +++ b/sdks/full/rust/src/models/global_event_notification.rs @@ -4,34 +4,34 @@ * 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 GlobalEventNotification { - #[serde(rename = "description")] - pub description: String, - #[serde(rename = "thumbnail_url")] - pub thumbnail_url: String, - #[serde(rename = "title")] - pub title: String, - #[serde(rename = "url")] - pub url: String, + #[serde(rename = "description")] + pub description: String, + #[serde(rename = "thumbnail_url")] + pub thumbnail_url: String, + #[serde(rename = "title")] + pub title: String, + #[serde(rename = "url")] + pub url: String, } impl GlobalEventNotification { - pub fn new(description: String, thumbnail_url: String, title: String, url: String) -> GlobalEventNotification { - GlobalEventNotification { - description, - thumbnail_url, - title, - url, - } - } + pub fn new( + description: String, + thumbnail_url: String, + title: String, + url: String, + ) -> GlobalEventNotification { + GlobalEventNotification { + description, + thumbnail_url, + title, + url, + } + } } - - diff --git a/sdks/full/rust/src/models/group_banned_identity.rs b/sdks/full/rust/src/models/group_banned_identity.rs index 2e552da163..429b9368a4 100644 --- a/sdks/full/rust/src/models/group_banned_identity.rs +++ b/sdks/full/rust/src/models/group_banned_identity.rs @@ -4,31 +4,27 @@ * 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 */ /// GroupBannedIdentity : A banned identity. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct GroupBannedIdentity { - /// RFC3339 timestamp - #[serde(rename = "ban_ts")] - pub ban_ts: String, - #[serde(rename = "identity")] - pub identity: Box, + /// RFC3339 timestamp + #[serde(rename = "ban_ts")] + pub ban_ts: String, + #[serde(rename = "identity")] + pub identity: Box, } impl GroupBannedIdentity { - /// A banned identity. - pub fn new(ban_ts: String, identity: crate::models::IdentityHandle) -> GroupBannedIdentity { - GroupBannedIdentity { - ban_ts, - identity: Box::new(identity), - } - } + /// A banned identity. + pub fn new(ban_ts: String, identity: crate::models::IdentityHandle) -> GroupBannedIdentity { + GroupBannedIdentity { + ban_ts, + identity: Box::new(identity), + } + } } - - diff --git a/sdks/full/rust/src/models/group_consume_invite_response.rs b/sdks/full/rust/src/models/group_consume_invite_response.rs index fe68dce2b4..ac423b29e5 100644 --- a/sdks/full/rust/src/models/group_consume_invite_response.rs +++ b/sdks/full/rust/src/models/group_consume_invite_response.rs @@ -4,25 +4,18 @@ * 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 GroupConsumeInviteResponse { - #[serde(rename = "group_id", skip_serializing_if = "Option::is_none")] - pub group_id: Option, + #[serde(rename = "group_id", skip_serializing_if = "Option::is_none")] + pub group_id: Option, } impl GroupConsumeInviteResponse { - pub fn new() -> GroupConsumeInviteResponse { - GroupConsumeInviteResponse { - group_id: None, - } - } + pub fn new() -> GroupConsumeInviteResponse { + GroupConsumeInviteResponse { group_id: None } + } } - - diff --git a/sdks/full/rust/src/models/group_create_invite_request.rs b/sdks/full/rust/src/models/group_create_invite_request.rs index c4a59e94e5..2c19fd9fd0 100644 --- a/sdks/full/rust/src/models/group_create_invite_request.rs +++ b/sdks/full/rust/src/models/group_create_invite_request.rs @@ -4,30 +4,25 @@ * 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 GroupCreateInviteRequest { - /// How long until the group invite expires (in milliseconds). - #[serde(rename = "ttl", skip_serializing_if = "Option::is_none")] - pub ttl: Option, - /// How many times the group invite can be used. - #[serde(rename = "use_count", skip_serializing_if = "Option::is_none")] - pub use_count: Option, + /// How long until the group invite expires (in milliseconds). + #[serde(rename = "ttl", skip_serializing_if = "Option::is_none")] + pub ttl: Option, + /// How many times the group invite can be used. + #[serde(rename = "use_count", skip_serializing_if = "Option::is_none")] + pub use_count: Option, } impl GroupCreateInviteRequest { - pub fn new() -> GroupCreateInviteRequest { - GroupCreateInviteRequest { - ttl: None, - use_count: None, - } - } + pub fn new() -> GroupCreateInviteRequest { + GroupCreateInviteRequest { + ttl: None, + use_count: None, + } + } } - - diff --git a/sdks/full/rust/src/models/group_create_invite_response.rs b/sdks/full/rust/src/models/group_create_invite_response.rs index 47edeb56b1..adf04e61e5 100644 --- a/sdks/full/rust/src/models/group_create_invite_response.rs +++ b/sdks/full/rust/src/models/group_create_invite_response.rs @@ -4,26 +4,19 @@ * 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 GroupCreateInviteResponse { - /// The code that will be passed to `rivet.api.group#ConsumeInvite` to join a group. - #[serde(rename = "code")] - pub code: String, + /// The code that will be passed to `rivet.api.group#ConsumeInvite` to join a group. + #[serde(rename = "code")] + pub code: String, } impl GroupCreateInviteResponse { - pub fn new(code: String) -> GroupCreateInviteResponse { - GroupCreateInviteResponse { - code, - } - } + pub fn new(code: String) -> GroupCreateInviteResponse { + GroupCreateInviteResponse { code } + } } - - diff --git a/sdks/full/rust/src/models/group_create_request.rs b/sdks/full/rust/src/models/group_create_request.rs index 503c9ce897..1ee55bb191 100644 --- a/sdks/full/rust/src/models/group_create_request.rs +++ b/sdks/full/rust/src/models/group_create_request.rs @@ -4,26 +4,19 @@ * 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 GroupCreateRequest { - /// Represent a resource's readable display name. - #[serde(rename = "display_name")] - pub display_name: String, + /// Represent a resource's readable display name. + #[serde(rename = "display_name")] + pub display_name: String, } impl GroupCreateRequest { - pub fn new(display_name: String) -> GroupCreateRequest { - GroupCreateRequest { - display_name, - } - } + pub fn new(display_name: String) -> GroupCreateRequest { + GroupCreateRequest { display_name } + } } - - diff --git a/sdks/full/rust/src/models/group_create_response.rs b/sdks/full/rust/src/models/group_create_response.rs index f31960ece8..ea200e8016 100644 --- a/sdks/full/rust/src/models/group_create_response.rs +++ b/sdks/full/rust/src/models/group_create_response.rs @@ -4,25 +4,18 @@ * 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 GroupCreateResponse { - #[serde(rename = "group_id")] - pub group_id: uuid::Uuid, + #[serde(rename = "group_id")] + pub group_id: uuid::Uuid, } impl GroupCreateResponse { - pub fn new(group_id: uuid::Uuid) -> GroupCreateResponse { - GroupCreateResponse { - group_id, - } - } + pub fn new(group_id: uuid::Uuid) -> GroupCreateResponse { + GroupCreateResponse { group_id } + } } - - diff --git a/sdks/full/rust/src/models/group_external_links.rs b/sdks/full/rust/src/models/group_external_links.rs index b9e0f15885..6ae7c869c8 100644 --- a/sdks/full/rust/src/models/group_external_links.rs +++ b/sdks/full/rust/src/models/group_external_links.rs @@ -4,28 +4,22 @@ * 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 */ /// GroupExternalLinks : External links for this group. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct GroupExternalLinks { - /// A link to this group's profile page. - #[serde(rename = "profile")] - pub profile: String, + /// A link to this group's profile page. + #[serde(rename = "profile")] + pub profile: String, } impl GroupExternalLinks { - /// External links for this group. - pub fn new(profile: String) -> GroupExternalLinks { - GroupExternalLinks { - profile, - } - } + /// External links for this group. + pub fn new(profile: String) -> GroupExternalLinks { + GroupExternalLinks { profile } + } } - - diff --git a/sdks/full/rust/src/models/group_get_bans_response.rs b/sdks/full/rust/src/models/group_get_bans_response.rs index b2727d9fa0..5db580a07d 100644 --- a/sdks/full/rust/src/models/group_get_bans_response.rs +++ b/sdks/full/rust/src/models/group_get_bans_response.rs @@ -4,33 +4,31 @@ * 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 GroupGetBansResponse { - /// The pagination anchor. - #[serde(rename = "anchor", skip_serializing_if = "Option::is_none")] - pub anchor: Option, - /// A list of banned group members. - #[serde(rename = "banned_identities")] - pub banned_identities: Vec, - #[serde(rename = "watch")] - pub watch: Box, + /// The pagination anchor. + #[serde(rename = "anchor", skip_serializing_if = "Option::is_none")] + pub anchor: Option, + /// A list of banned group members. + #[serde(rename = "banned_identities")] + pub banned_identities: Vec, + #[serde(rename = "watch")] + pub watch: Box, } impl GroupGetBansResponse { - pub fn new(banned_identities: Vec, watch: crate::models::WatchResponse) -> GroupGetBansResponse { - GroupGetBansResponse { - anchor: None, - banned_identities, - watch: Box::new(watch), - } - } + pub fn new( + banned_identities: Vec, + watch: crate::models::WatchResponse, + ) -> GroupGetBansResponse { + GroupGetBansResponse { + anchor: None, + banned_identities, + watch: Box::new(watch), + } + } } - - diff --git a/sdks/full/rust/src/models/group_get_invite_response.rs b/sdks/full/rust/src/models/group_get_invite_response.rs index caead9d125..eb18e86d3c 100644 --- a/sdks/full/rust/src/models/group_get_invite_response.rs +++ b/sdks/full/rust/src/models/group_get_invite_response.rs @@ -4,25 +4,20 @@ * 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 GroupGetInviteResponse { - #[serde(rename = "group")] - pub group: Box, + #[serde(rename = "group")] + pub group: Box, } impl GroupGetInviteResponse { - pub fn new(group: crate::models::GroupHandle) -> GroupGetInviteResponse { - GroupGetInviteResponse { - group: Box::new(group), - } - } + pub fn new(group: crate::models::GroupHandle) -> GroupGetInviteResponse { + GroupGetInviteResponse { + group: Box::new(group), + } + } } - - diff --git a/sdks/full/rust/src/models/group_get_join_requests_response.rs b/sdks/full/rust/src/models/group_get_join_requests_response.rs index 62988ed18c..c9f9ac37e7 100644 --- a/sdks/full/rust/src/models/group_get_join_requests_response.rs +++ b/sdks/full/rust/src/models/group_get_join_requests_response.rs @@ -4,33 +4,31 @@ * 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 GroupGetJoinRequestsResponse { - /// The pagination anchor. - #[serde(rename = "anchor", skip_serializing_if = "Option::is_none")] - pub anchor: Option, - /// A list of group join requests. - #[serde(rename = "join_requests")] - pub join_requests: Vec, - #[serde(rename = "watch")] - pub watch: Box, + /// The pagination anchor. + #[serde(rename = "anchor", skip_serializing_if = "Option::is_none")] + pub anchor: Option, + /// A list of group join requests. + #[serde(rename = "join_requests")] + pub join_requests: Vec, + #[serde(rename = "watch")] + pub watch: Box, } impl GroupGetJoinRequestsResponse { - pub fn new(join_requests: Vec, watch: crate::models::WatchResponse) -> GroupGetJoinRequestsResponse { - GroupGetJoinRequestsResponse { - anchor: None, - join_requests, - watch: Box::new(watch), - } - } + pub fn new( + join_requests: Vec, + watch: crate::models::WatchResponse, + ) -> GroupGetJoinRequestsResponse { + GroupGetJoinRequestsResponse { + anchor: None, + join_requests, + watch: Box::new(watch), + } + } } - - diff --git a/sdks/full/rust/src/models/group_get_members_response.rs b/sdks/full/rust/src/models/group_get_members_response.rs index 7b4917659c..c79310751f 100644 --- a/sdks/full/rust/src/models/group_get_members_response.rs +++ b/sdks/full/rust/src/models/group_get_members_response.rs @@ -4,33 +4,31 @@ * 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 GroupGetMembersResponse { - /// The pagination anchor. - #[serde(rename = "anchor", skip_serializing_if = "Option::is_none")] - pub anchor: Option, - /// A list of group members. - #[serde(rename = "members")] - pub members: Vec, - #[serde(rename = "watch")] - pub watch: Box, + /// The pagination anchor. + #[serde(rename = "anchor", skip_serializing_if = "Option::is_none")] + pub anchor: Option, + /// A list of group members. + #[serde(rename = "members")] + pub members: Vec, + #[serde(rename = "watch")] + pub watch: Box, } impl GroupGetMembersResponse { - pub fn new(members: Vec, watch: crate::models::WatchResponse) -> GroupGetMembersResponse { - GroupGetMembersResponse { - anchor: None, - members, - watch: Box::new(watch), - } - } + pub fn new( + members: Vec, + watch: crate::models::WatchResponse, + ) -> GroupGetMembersResponse { + GroupGetMembersResponse { + anchor: None, + members, + watch: Box::new(watch), + } + } } - - diff --git a/sdks/full/rust/src/models/group_get_profile_response.rs b/sdks/full/rust/src/models/group_get_profile_response.rs index d89ac68b35..9aba3fa350 100644 --- a/sdks/full/rust/src/models/group_get_profile_response.rs +++ b/sdks/full/rust/src/models/group_get_profile_response.rs @@ -4,28 +4,26 @@ * 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 GroupGetProfileResponse { - #[serde(rename = "group")] - pub group: Box, - #[serde(rename = "watch")] - pub watch: Box, + #[serde(rename = "group")] + pub group: Box, + #[serde(rename = "watch")] + pub watch: Box, } impl GroupGetProfileResponse { - pub fn new(group: crate::models::GroupProfile, watch: crate::models::WatchResponse) -> GroupGetProfileResponse { - GroupGetProfileResponse { - group: Box::new(group), - watch: Box::new(watch), - } - } + pub fn new( + group: crate::models::GroupProfile, + watch: crate::models::WatchResponse, + ) -> GroupGetProfileResponse { + GroupGetProfileResponse { + group: Box::new(group), + watch: Box::new(watch), + } + } } - - diff --git a/sdks/full/rust/src/models/group_get_summary_response.rs b/sdks/full/rust/src/models/group_get_summary_response.rs index cc55fd9905..bdc9c75117 100644 --- a/sdks/full/rust/src/models/group_get_summary_response.rs +++ b/sdks/full/rust/src/models/group_get_summary_response.rs @@ -4,25 +4,20 @@ * 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 GroupGetSummaryResponse { - #[serde(rename = "group")] - pub group: Box, + #[serde(rename = "group")] + pub group: Box, } impl GroupGetSummaryResponse { - pub fn new(group: crate::models::GroupSummary) -> GroupGetSummaryResponse { - GroupGetSummaryResponse { - group: Box::new(group), - } - } + pub fn new(group: crate::models::GroupSummary) -> GroupGetSummaryResponse { + GroupGetSummaryResponse { + group: Box::new(group), + } + } } - - diff --git a/sdks/full/rust/src/models/group_handle.rs b/sdks/full/rust/src/models/group_handle.rs index 6aed5a1bfa..e0dc00ee00 100644 --- a/sdks/full/rust/src/models/group_handle.rs +++ b/sdks/full/rust/src/models/group_handle.rs @@ -4,42 +4,42 @@ * 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 */ /// GroupHandle : A group handle. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct GroupHandle { - /// The URL of this group's avatar image - #[serde(rename = "avatar_url", skip_serializing_if = "Option::is_none")] - pub avatar_url: Option, - /// Represent a resource's readable display name. - #[serde(rename = "display_name")] - pub display_name: String, - #[serde(rename = "external")] - pub external: Box, - #[serde(rename = "group_id")] - pub group_id: uuid::Uuid, - /// Whether or not this group is a developer group. - #[serde(rename = "is_developer", skip_serializing_if = "Option::is_none")] - pub is_developer: Option, + /// The URL of this group's avatar image + #[serde(rename = "avatar_url", skip_serializing_if = "Option::is_none")] + pub avatar_url: Option, + /// Represent a resource's readable display name. + #[serde(rename = "display_name")] + pub display_name: String, + #[serde(rename = "external")] + pub external: Box, + #[serde(rename = "group_id")] + pub group_id: uuid::Uuid, + /// Whether or not this group is a developer group. + #[serde(rename = "is_developer", skip_serializing_if = "Option::is_none")] + pub is_developer: Option, } impl GroupHandle { - /// A group handle. - pub fn new(display_name: String, external: crate::models::GroupExternalLinks, group_id: uuid::Uuid) -> GroupHandle { - GroupHandle { - avatar_url: None, - display_name, - external: Box::new(external), - group_id, - is_developer: None, - } - } + /// A group handle. + pub fn new( + display_name: String, + external: crate::models::GroupExternalLinks, + group_id: uuid::Uuid, + ) -> GroupHandle { + GroupHandle { + avatar_url: None, + display_name, + external: Box::new(external), + group_id, + is_developer: None, + } + } } - - diff --git a/sdks/full/rust/src/models/group_join_request.rs b/sdks/full/rust/src/models/group_join_request.rs index 64edb19238..b75c57750f 100644 --- a/sdks/full/rust/src/models/group_join_request.rs +++ b/sdks/full/rust/src/models/group_join_request.rs @@ -4,31 +4,27 @@ * 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 */ /// GroupJoinRequest : A group join request. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct GroupJoinRequest { - #[serde(rename = "identity")] - pub identity: Box, - /// RFC3339 timestamp - #[serde(rename = "ts")] - pub ts: String, + #[serde(rename = "identity")] + pub identity: Box, + /// RFC3339 timestamp + #[serde(rename = "ts")] + pub ts: String, } impl GroupJoinRequest { - /// A group join request. - pub fn new(identity: crate::models::IdentityHandle, ts: String) -> GroupJoinRequest { - GroupJoinRequest { - identity: Box::new(identity), - ts, - } - } + /// A group join request. + pub fn new(identity: crate::models::IdentityHandle, ts: String) -> GroupJoinRequest { + GroupJoinRequest { + identity: Box::new(identity), + ts, + } + } } - - diff --git a/sdks/full/rust/src/models/group_list_suggested_response.rs b/sdks/full/rust/src/models/group_list_suggested_response.rs index 2fe41ffa8e..31296a5b52 100644 --- a/sdks/full/rust/src/models/group_list_suggested_response.rs +++ b/sdks/full/rust/src/models/group_list_suggested_response.rs @@ -4,29 +4,27 @@ * 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 GroupListSuggestedResponse { - /// A list of group summaries. - #[serde(rename = "groups")] - pub groups: Vec, - #[serde(rename = "watch")] - pub watch: Box, + /// A list of group summaries. + #[serde(rename = "groups")] + pub groups: Vec, + #[serde(rename = "watch")] + pub watch: Box, } impl GroupListSuggestedResponse { - pub fn new(groups: Vec, watch: crate::models::WatchResponse) -> GroupListSuggestedResponse { - GroupListSuggestedResponse { - groups, - watch: Box::new(watch), - } - } + pub fn new( + groups: Vec, + watch: crate::models::WatchResponse, + ) -> GroupListSuggestedResponse { + GroupListSuggestedResponse { + groups, + watch: Box::new(watch), + } + } } - - diff --git a/sdks/full/rust/src/models/group_member.rs b/sdks/full/rust/src/models/group_member.rs index aecd0ba064..99ae2414ef 100644 --- a/sdks/full/rust/src/models/group_member.rs +++ b/sdks/full/rust/src/models/group_member.rs @@ -4,27 +4,23 @@ * 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 */ /// GroupMember : A group member. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct GroupMember { - #[serde(rename = "identity")] - pub identity: Box, + #[serde(rename = "identity")] + pub identity: Box, } impl GroupMember { - /// A group member. - pub fn new(identity: crate::models::IdentityHandle) -> GroupMember { - GroupMember { - identity: Box::new(identity), - } - } + /// A group member. + pub fn new(identity: crate::models::IdentityHandle) -> GroupMember { + GroupMember { + identity: Box::new(identity), + } + } } - - diff --git a/sdks/full/rust/src/models/group_prepare_avatar_upload_request.rs b/sdks/full/rust/src/models/group_prepare_avatar_upload_request.rs index e07a49db68..676cff4a9a 100644 --- a/sdks/full/rust/src/models/group_prepare_avatar_upload_request.rs +++ b/sdks/full/rust/src/models/group_prepare_avatar_upload_request.rs @@ -4,34 +4,29 @@ * 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 GroupPrepareAvatarUploadRequest { - /// Unsigned 64 bit integer. - #[serde(rename = "content_length")] - pub content_length: i64, - /// The MIME type of the group avatar. - #[serde(rename = "mime", skip_serializing_if = "Option::is_none")] - pub mime: Option, - /// The path/filename of the group avatar. - #[serde(rename = "path")] - pub path: String, + /// Unsigned 64 bit integer. + #[serde(rename = "content_length")] + pub content_length: i64, + /// The MIME type of the group avatar. + #[serde(rename = "mime", skip_serializing_if = "Option::is_none")] + pub mime: Option, + /// The path/filename of the group avatar. + #[serde(rename = "path")] + pub path: String, } impl GroupPrepareAvatarUploadRequest { - pub fn new(content_length: i64, path: String) -> GroupPrepareAvatarUploadRequest { - GroupPrepareAvatarUploadRequest { - content_length, - mime: None, - path, - } - } + pub fn new(content_length: i64, path: String) -> GroupPrepareAvatarUploadRequest { + GroupPrepareAvatarUploadRequest { + content_length, + mime: None, + path, + } + } } - - diff --git a/sdks/full/rust/src/models/group_prepare_avatar_upload_response.rs b/sdks/full/rust/src/models/group_prepare_avatar_upload_response.rs index 4917e80c8d..04f10e7ac7 100644 --- a/sdks/full/rust/src/models/group_prepare_avatar_upload_response.rs +++ b/sdks/full/rust/src/models/group_prepare_avatar_upload_response.rs @@ -4,28 +4,26 @@ * 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 GroupPrepareAvatarUploadResponse { - #[serde(rename = "presigned_request")] - pub presigned_request: Box, - #[serde(rename = "upload_id")] - pub upload_id: uuid::Uuid, + #[serde(rename = "presigned_request")] + pub presigned_request: Box, + #[serde(rename = "upload_id")] + pub upload_id: uuid::Uuid, } impl GroupPrepareAvatarUploadResponse { - pub fn new(presigned_request: crate::models::UploadPresignedRequest, upload_id: uuid::Uuid) -> GroupPrepareAvatarUploadResponse { - GroupPrepareAvatarUploadResponse { - presigned_request: Box::new(presigned_request), - upload_id, - } - } + pub fn new( + presigned_request: crate::models::UploadPresignedRequest, + upload_id: uuid::Uuid, + ) -> GroupPrepareAvatarUploadResponse { + GroupPrepareAvatarUploadResponse { + presigned_request: Box::new(presigned_request), + upload_id, + } + } } - - diff --git a/sdks/full/rust/src/models/group_profile.rs b/sdks/full/rust/src/models/group_profile.rs index c7ac6c1011..be6a629ebf 100644 --- a/sdks/full/rust/src/models/group_profile.rs +++ b/sdks/full/rust/src/models/group_profile.rs @@ -4,72 +4,83 @@ * 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 */ /// GroupProfile : A list of group profiles. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct GroupProfile { - /// The URL of this group's avatar image. - #[serde(rename = "avatar_url", skip_serializing_if = "Option::is_none")] - pub avatar_url: Option, - /// Detailed information about a profile. - #[serde(rename = "bio")] - pub bio: String, - /// Represent a resource's readable display name. - #[serde(rename = "display_name")] - pub display_name: String, - #[serde(rename = "external")] - pub external: Box, - #[serde(rename = "group_id")] - pub group_id: uuid::Uuid, - /// Whether or not the current identity is a member of this group. - #[serde(rename = "is_current_identity_member", skip_serializing_if = "Option::is_none")] - pub is_current_identity_member: Option, - /// Whether or not the current identity is currently requesting to join this group. - #[serde(rename = "is_current_identity_requesting_join", skip_serializing_if = "Option::is_none")] - pub is_current_identity_requesting_join: Option, - /// Whether or not this group is a developer. - #[serde(rename = "is_developer", skip_serializing_if = "Option::is_none")] - pub is_developer: Option, - /// A list of group join requests. - #[serde(rename = "join_requests")] - pub join_requests: Vec, - /// Unsigned 32 bit integer. - #[serde(rename = "member_count", skip_serializing_if = "Option::is_none")] - pub member_count: Option, - /// A list of group members. - #[serde(rename = "members")] - pub members: Vec, - #[serde(rename = "owner_identity_id")] - pub owner_identity_id: uuid::Uuid, - #[serde(rename = "publicity")] - pub publicity: crate::models::GroupPublicity, + /// The URL of this group's avatar image. + #[serde(rename = "avatar_url", skip_serializing_if = "Option::is_none")] + pub avatar_url: Option, + /// Detailed information about a profile. + #[serde(rename = "bio")] + pub bio: String, + /// Represent a resource's readable display name. + #[serde(rename = "display_name")] + pub display_name: String, + #[serde(rename = "external")] + pub external: Box, + #[serde(rename = "group_id")] + pub group_id: uuid::Uuid, + /// Whether or not the current identity is a member of this group. + #[serde( + rename = "is_current_identity_member", + skip_serializing_if = "Option::is_none" + )] + pub is_current_identity_member: Option, + /// Whether or not the current identity is currently requesting to join this group. + #[serde( + rename = "is_current_identity_requesting_join", + skip_serializing_if = "Option::is_none" + )] + pub is_current_identity_requesting_join: Option, + /// Whether or not this group is a developer. + #[serde(rename = "is_developer", skip_serializing_if = "Option::is_none")] + pub is_developer: Option, + /// A list of group join requests. + #[serde(rename = "join_requests")] + pub join_requests: Vec, + /// Unsigned 32 bit integer. + #[serde(rename = "member_count", skip_serializing_if = "Option::is_none")] + pub member_count: Option, + /// A list of group members. + #[serde(rename = "members")] + pub members: Vec, + #[serde(rename = "owner_identity_id")] + pub owner_identity_id: uuid::Uuid, + #[serde(rename = "publicity")] + pub publicity: crate::models::GroupPublicity, } impl GroupProfile { - /// A list of group profiles. - pub fn new(bio: String, display_name: String, external: crate::models::GroupExternalLinks, group_id: uuid::Uuid, join_requests: Vec, members: Vec, owner_identity_id: uuid::Uuid, publicity: crate::models::GroupPublicity) -> GroupProfile { - GroupProfile { - avatar_url: None, - bio, - display_name, - external: Box::new(external), - group_id, - is_current_identity_member: None, - is_current_identity_requesting_join: None, - is_developer: None, - join_requests, - member_count: None, - members, - owner_identity_id, - publicity, - } - } + /// A list of group profiles. + pub fn new( + bio: String, + display_name: String, + external: crate::models::GroupExternalLinks, + group_id: uuid::Uuid, + join_requests: Vec, + members: Vec, + owner_identity_id: uuid::Uuid, + publicity: crate::models::GroupPublicity, + ) -> GroupProfile { + GroupProfile { + avatar_url: None, + bio, + display_name, + external: Box::new(external), + group_id, + is_current_identity_member: None, + is_current_identity_requesting_join: None, + is_developer: None, + join_requests, + member_count: None, + members, + owner_identity_id, + publicity, + } + } } - - diff --git a/sdks/full/rust/src/models/group_publicity.rs b/sdks/full/rust/src/models/group_publicity.rs index e8d758d80b..1e540fd925 100644 --- a/sdks/full/rust/src/models/group_publicity.rs +++ b/sdks/full/rust/src/models/group_publicity.rs @@ -4,7 +4,7 @@ * 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 */ @@ -13,28 +13,23 @@ /// The current publicity value for the given group. #[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] pub enum GroupPublicity { - #[serde(rename = "open")] - Open, - #[serde(rename = "closed")] - Closed, - + #[serde(rename = "open")] + Open, + #[serde(rename = "closed")] + Closed, } impl ToString for GroupPublicity { - fn to_string(&self) -> String { - match self { - Self::Open => String::from("open"), - Self::Closed => String::from("closed"), - } - } + fn to_string(&self) -> String { + match self { + Self::Open => String::from("open"), + Self::Closed => String::from("closed"), + } + } } impl Default for GroupPublicity { - fn default() -> GroupPublicity { - Self::Open - } + fn default() -> GroupPublicity { + Self::Open + } } - - - - diff --git a/sdks/full/rust/src/models/group_resolve_join_request_request.rs b/sdks/full/rust/src/models/group_resolve_join_request_request.rs index 32c1e7fef7..79f4861803 100644 --- a/sdks/full/rust/src/models/group_resolve_join_request_request.rs +++ b/sdks/full/rust/src/models/group_resolve_join_request_request.rs @@ -4,25 +4,18 @@ * 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 GroupResolveJoinRequestRequest { - #[serde(rename = "resolution", skip_serializing_if = "Option::is_none")] - pub resolution: Option, + #[serde(rename = "resolution", skip_serializing_if = "Option::is_none")] + pub resolution: Option, } impl GroupResolveJoinRequestRequest { - pub fn new() -> GroupResolveJoinRequestRequest { - GroupResolveJoinRequestRequest { - resolution: None, - } - } + pub fn new() -> GroupResolveJoinRequestRequest { + GroupResolveJoinRequestRequest { resolution: None } + } } - - diff --git a/sdks/full/rust/src/models/group_summary.rs b/sdks/full/rust/src/models/group_summary.rs index 85ae0cfede..e153020a22 100644 --- a/sdks/full/rust/src/models/group_summary.rs +++ b/sdks/full/rust/src/models/group_summary.rs @@ -4,57 +4,62 @@ * 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 GroupSummary { - /// The URL of this group's avatar image. - #[serde(rename = "avatar_url", skip_serializing_if = "Option::is_none")] - pub avatar_url: Option, - /// Follows regex ^(?:[^\\n\\r]+\\n?|\\n){1,5}$ - #[serde(rename = "bio")] - pub bio: String, - /// Represent a resource's readable display name. - #[serde(rename = "display_name")] - pub display_name: String, - #[serde(rename = "external")] - pub external: Box, - #[serde(rename = "group_id")] - pub group_id: uuid::Uuid, - /// Whether or not the current identity is a member of this group. - #[serde(rename = "is_current_identity_member")] - pub is_current_identity_member: bool, - /// **Deprecated** Whether or not this group is a developer. - #[serde(rename = "is_developer")] - pub is_developer: bool, - #[serde(rename = "member_count")] - pub member_count: i32, - #[serde(rename = "owner_identity_id")] - pub owner_identity_id: uuid::Uuid, - #[serde(rename = "publicity")] - pub publicity: crate::models::GroupPublicity, + /// The URL of this group's avatar image. + #[serde(rename = "avatar_url", skip_serializing_if = "Option::is_none")] + pub avatar_url: Option, + /// Follows regex ^(?:[^\\n\\r]+\\n?|\\n){1,5}$ + #[serde(rename = "bio")] + pub bio: String, + /// Represent a resource's readable display name. + #[serde(rename = "display_name")] + pub display_name: String, + #[serde(rename = "external")] + pub external: Box, + #[serde(rename = "group_id")] + pub group_id: uuid::Uuid, + /// Whether or not the current identity is a member of this group. + #[serde(rename = "is_current_identity_member")] + pub is_current_identity_member: bool, + /// **Deprecated** Whether or not this group is a developer. + #[serde(rename = "is_developer")] + pub is_developer: bool, + #[serde(rename = "member_count")] + pub member_count: i32, + #[serde(rename = "owner_identity_id")] + pub owner_identity_id: uuid::Uuid, + #[serde(rename = "publicity")] + pub publicity: crate::models::GroupPublicity, } impl GroupSummary { - pub fn new(bio: String, display_name: String, external: crate::models::GroupExternalLinks, group_id: uuid::Uuid, is_current_identity_member: bool, is_developer: bool, member_count: i32, owner_identity_id: uuid::Uuid, publicity: crate::models::GroupPublicity) -> GroupSummary { - GroupSummary { - avatar_url: None, - bio, - display_name, - external: Box::new(external), - group_id, - is_current_identity_member, - is_developer, - member_count, - owner_identity_id, - publicity, - } - } + pub fn new( + bio: String, + display_name: String, + external: crate::models::GroupExternalLinks, + group_id: uuid::Uuid, + is_current_identity_member: bool, + is_developer: bool, + member_count: i32, + owner_identity_id: uuid::Uuid, + publicity: crate::models::GroupPublicity, + ) -> GroupSummary { + GroupSummary { + avatar_url: None, + bio, + display_name, + external: Box::new(external), + group_id, + is_current_identity_member, + is_developer, + member_count, + owner_identity_id, + publicity, + } + } } - - diff --git a/sdks/full/rust/src/models/group_transfer_ownership_request.rs b/sdks/full/rust/src/models/group_transfer_ownership_request.rs index 39cbd20782..00711905d3 100644 --- a/sdks/full/rust/src/models/group_transfer_ownership_request.rs +++ b/sdks/full/rust/src/models/group_transfer_ownership_request.rs @@ -4,26 +4,21 @@ * 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 GroupTransferOwnershipRequest { - /// Identity to transfer the group to. Must be a member of the group. - #[serde(rename = "new_owner_identity_id")] - pub new_owner_identity_id: String, + /// Identity to transfer the group to. Must be a member of the group. + #[serde(rename = "new_owner_identity_id")] + pub new_owner_identity_id: String, } impl GroupTransferOwnershipRequest { - pub fn new(new_owner_identity_id: String) -> GroupTransferOwnershipRequest { - GroupTransferOwnershipRequest { - new_owner_identity_id, - } - } + pub fn new(new_owner_identity_id: String) -> GroupTransferOwnershipRequest { + GroupTransferOwnershipRequest { + new_owner_identity_id, + } + } } - - diff --git a/sdks/full/rust/src/models/group_update_profile_request.rs b/sdks/full/rust/src/models/group_update_profile_request.rs index e8e7672df5..5e443ca780 100644 --- a/sdks/full/rust/src/models/group_update_profile_request.rs +++ b/sdks/full/rust/src/models/group_update_profile_request.rs @@ -4,33 +4,28 @@ * 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 GroupUpdateProfileRequest { - /// Detailed information about a profile. - #[serde(rename = "bio", skip_serializing_if = "Option::is_none")] - pub bio: Option, - /// Represent a resource's readable display name. - #[serde(rename = "display_name", skip_serializing_if = "Option::is_none")] - pub display_name: Option, - #[serde(rename = "publicity", skip_serializing_if = "Option::is_none")] - pub publicity: Option, + /// Detailed information about a profile. + #[serde(rename = "bio", skip_serializing_if = "Option::is_none")] + pub bio: Option, + /// Represent a resource's readable display name. + #[serde(rename = "display_name", skip_serializing_if = "Option::is_none")] + pub display_name: Option, + #[serde(rename = "publicity", skip_serializing_if = "Option::is_none")] + pub publicity: Option, } impl GroupUpdateProfileRequest { - pub fn new() -> GroupUpdateProfileRequest { - GroupUpdateProfileRequest { - bio: None, - display_name: None, - publicity: None, - } - } + pub fn new() -> GroupUpdateProfileRequest { + GroupUpdateProfileRequest { + bio: None, + display_name: None, + publicity: None, + } + } } - - diff --git a/sdks/full/rust/src/models/group_validate_profile_request.rs b/sdks/full/rust/src/models/group_validate_profile_request.rs index 501acb5beb..9cd8de28c9 100644 --- a/sdks/full/rust/src/models/group_validate_profile_request.rs +++ b/sdks/full/rust/src/models/group_validate_profile_request.rs @@ -4,33 +4,28 @@ * 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 GroupValidateProfileRequest { - /// Represent a resource's readable display name. - #[serde(rename = "bio", skip_serializing_if = "Option::is_none")] - pub bio: Option, - /// Represent a resource's readable display name. - #[serde(rename = "display_name", skip_serializing_if = "Option::is_none")] - pub display_name: Option, - #[serde(rename = "publicity", skip_serializing_if = "Option::is_none")] - pub publicity: Option, + /// Represent a resource's readable display name. + #[serde(rename = "bio", skip_serializing_if = "Option::is_none")] + pub bio: Option, + /// Represent a resource's readable display name. + #[serde(rename = "display_name", skip_serializing_if = "Option::is_none")] + pub display_name: Option, + #[serde(rename = "publicity", skip_serializing_if = "Option::is_none")] + pub publicity: Option, } impl GroupValidateProfileRequest { - pub fn new() -> GroupValidateProfileRequest { - GroupValidateProfileRequest { - bio: None, - display_name: None, - publicity: None, - } - } + pub fn new() -> GroupValidateProfileRequest { + GroupValidateProfileRequest { + bio: None, + display_name: None, + publicity: None, + } + } } - - diff --git a/sdks/full/rust/src/models/group_validate_profile_response.rs b/sdks/full/rust/src/models/group_validate_profile_response.rs index decad7e290..794edc06d0 100644 --- a/sdks/full/rust/src/models/group_validate_profile_response.rs +++ b/sdks/full/rust/src/models/group_validate_profile_response.rs @@ -4,26 +4,19 @@ * 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 GroupValidateProfileResponse { - /// A list of validation errors. - #[serde(rename = "errors")] - pub errors: Vec, + /// A list of validation errors. + #[serde(rename = "errors")] + pub errors: Vec, } impl GroupValidateProfileResponse { - pub fn new(errors: Vec) -> GroupValidateProfileResponse { - GroupValidateProfileResponse { - errors, - } - } + pub fn new(errors: Vec) -> GroupValidateProfileResponse { + GroupValidateProfileResponse { errors } + } } - - diff --git a/sdks/full/rust/src/models/identity_dev_state.rs b/sdks/full/rust/src/models/identity_dev_state.rs index bfe9d673a4..b36d78c727 100644 --- a/sdks/full/rust/src/models/identity_dev_state.rs +++ b/sdks/full/rust/src/models/identity_dev_state.rs @@ -4,7 +4,7 @@ * 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 */ @@ -13,31 +13,26 @@ /// The state of the given identity's developer status. #[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] pub enum IdentityDevState { - #[serde(rename = "inactive")] - Inactive, - #[serde(rename = "pending")] - Pending, - #[serde(rename = "accepted")] - Accepted, - + #[serde(rename = "inactive")] + Inactive, + #[serde(rename = "pending")] + Pending, + #[serde(rename = "accepted")] + Accepted, } impl ToString for IdentityDevState { - fn to_string(&self) -> String { - match self { - Self::Inactive => String::from("inactive"), - Self::Pending => String::from("pending"), - Self::Accepted => String::from("accepted"), - } - } + fn to_string(&self) -> String { + match self { + Self::Inactive => String::from("inactive"), + Self::Pending => String::from("pending"), + Self::Accepted => String::from("accepted"), + } + } } impl Default for IdentityDevState { - fn default() -> IdentityDevState { - Self::Inactive - } + fn default() -> IdentityDevState { + Self::Inactive + } } - - - - diff --git a/sdks/full/rust/src/models/identity_email_linked_account.rs b/sdks/full/rust/src/models/identity_email_linked_account.rs index 6c458bb42f..a86d5eca1f 100644 --- a/sdks/full/rust/src/models/identity_email_linked_account.rs +++ b/sdks/full/rust/src/models/identity_email_linked_account.rs @@ -4,28 +4,22 @@ * 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 */ /// IdentityEmailLinkedAccount : An identity's linked email. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct IdentityEmailLinkedAccount { - /// A valid email address - #[serde(rename = "email")] - pub email: String, + /// A valid email address + #[serde(rename = "email")] + pub email: String, } impl IdentityEmailLinkedAccount { - /// An identity's linked email. - pub fn new(email: String) -> IdentityEmailLinkedAccount { - IdentityEmailLinkedAccount { - email, - } - } + /// An identity's linked email. + pub fn new(email: String) -> IdentityEmailLinkedAccount { + IdentityEmailLinkedAccount { email } + } } - - diff --git a/sdks/full/rust/src/models/identity_external_links.rs b/sdks/full/rust/src/models/identity_external_links.rs index dddc3a0917..35a1d52d88 100644 --- a/sdks/full/rust/src/models/identity_external_links.rs +++ b/sdks/full/rust/src/models/identity_external_links.rs @@ -4,32 +4,28 @@ * 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 */ /// IdentityExternalLinks : External links for an identity. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct IdentityExternalLinks { - /// A link to this identity's profile page. - #[serde(rename = "profile")] - pub profile: String, - /// A link to the Rivet settings page. - #[serde(rename = "settings", skip_serializing_if = "Option::is_none")] - pub settings: Option, + /// A link to this identity's profile page. + #[serde(rename = "profile")] + pub profile: String, + /// A link to the Rivet settings page. + #[serde(rename = "settings", skip_serializing_if = "Option::is_none")] + pub settings: Option, } impl IdentityExternalLinks { - /// External links for an identity. - pub fn new(profile: String) -> IdentityExternalLinks { - IdentityExternalLinks { - profile, - settings: None, - } - } + /// External links for an identity. + pub fn new(profile: String) -> IdentityExternalLinks { + IdentityExternalLinks { + profile, + settings: None, + } + } } - - diff --git a/sdks/full/rust/src/models/identity_game_activity.rs b/sdks/full/rust/src/models/identity_game_activity.rs index e4be94ffcb..c2c874b53f 100644 --- a/sdks/full/rust/src/models/identity_game_activity.rs +++ b/sdks/full/rust/src/models/identity_game_activity.rs @@ -4,39 +4,45 @@ * 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 */ /// IdentityGameActivity : The game an identity is currently participating in. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct IdentityGameActivity { - #[serde(rename = "game")] - pub game: Box, - /// A short activity message about the current game activity. - #[serde(rename = "message")] - pub message: String, - /// JSON data seen only by the given identity and their mutual followers. - #[serde(rename = "mutual_metadata", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")] - pub mutual_metadata: Option>, - /// JSON data seen by anyone. - #[serde(rename = "public_metadata", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")] - pub public_metadata: Option>, + #[serde(rename = "game")] + pub game: Box, + /// A short activity message about the current game activity. + #[serde(rename = "message")] + pub message: String, + /// JSON data seen only by the given identity and their mutual followers. + #[serde( + rename = "mutual_metadata", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub mutual_metadata: Option>, + /// JSON data seen by anyone. + #[serde( + rename = "public_metadata", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub public_metadata: Option>, } impl IdentityGameActivity { - /// The game an identity is currently participating in. - pub fn new(game: crate::models::GameHandle, message: String) -> IdentityGameActivity { - IdentityGameActivity { - game: Box::new(game), - message, - mutual_metadata: None, - public_metadata: None, - } - } + /// The game an identity is currently participating in. + pub fn new(game: crate::models::GameHandle, message: String) -> IdentityGameActivity { + IdentityGameActivity { + game: Box::new(game), + message, + mutual_metadata: None, + public_metadata: None, + } + } } - - diff --git a/sdks/full/rust/src/models/identity_game_link_status.rs b/sdks/full/rust/src/models/identity_game_link_status.rs index 8fc24f518e..b9c9934697 100644 --- a/sdks/full/rust/src/models/identity_game_link_status.rs +++ b/sdks/full/rust/src/models/identity_game_link_status.rs @@ -4,39 +4,33 @@ * 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 IdentityGameLinkStatus { - #[serde(rename = "incomplete")] - Incomplete, - #[serde(rename = "complete")] - Complete, - #[serde(rename = "cancelled")] - Cancelled, - + #[serde(rename = "incomplete")] + Incomplete, + #[serde(rename = "complete")] + Complete, + #[serde(rename = "cancelled")] + Cancelled, } impl ToString for IdentityGameLinkStatus { - fn to_string(&self) -> String { - match self { - Self::Incomplete => String::from("incomplete"), - Self::Complete => String::from("complete"), - Self::Cancelled => String::from("cancelled"), - } - } + fn to_string(&self) -> String { + match self { + Self::Incomplete => String::from("incomplete"), + Self::Complete => String::from("complete"), + Self::Cancelled => String::from("cancelled"), + } + } } impl Default for IdentityGameLinkStatus { - fn default() -> IdentityGameLinkStatus { - Self::Incomplete - } + fn default() -> IdentityGameLinkStatus { + Self::Incomplete + } } - - - - diff --git a/sdks/full/rust/src/models/identity_get_handles_response.rs b/sdks/full/rust/src/models/identity_get_handles_response.rs index ddbb9f7a0a..ac8508481f 100644 --- a/sdks/full/rust/src/models/identity_get_handles_response.rs +++ b/sdks/full/rust/src/models/identity_get_handles_response.rs @@ -4,28 +4,26 @@ * 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 IdentityGetHandlesResponse { - #[serde(rename = "identities")] - pub identities: Vec, - #[serde(rename = "watch")] - pub watch: Box, + #[serde(rename = "identities")] + pub identities: Vec, + #[serde(rename = "watch")] + pub watch: Box, } impl IdentityGetHandlesResponse { - pub fn new(identities: Vec, watch: crate::models::WatchResponse) -> IdentityGetHandlesResponse { - IdentityGetHandlesResponse { - identities, - watch: Box::new(watch), - } - } + pub fn new( + identities: Vec, + watch: crate::models::WatchResponse, + ) -> IdentityGetHandlesResponse { + IdentityGetHandlesResponse { + identities, + watch: Box::new(watch), + } + } } - - diff --git a/sdks/full/rust/src/models/identity_get_profile_response.rs b/sdks/full/rust/src/models/identity_get_profile_response.rs index a1e34af613..77765e009b 100644 --- a/sdks/full/rust/src/models/identity_get_profile_response.rs +++ b/sdks/full/rust/src/models/identity_get_profile_response.rs @@ -4,28 +4,26 @@ * 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 IdentityGetProfileResponse { - #[serde(rename = "identity")] - pub identity: Box, - #[serde(rename = "watch")] - pub watch: Box, + #[serde(rename = "identity")] + pub identity: Box, + #[serde(rename = "watch")] + pub watch: Box, } impl IdentityGetProfileResponse { - pub fn new(identity: crate::models::IdentityProfile, watch: crate::models::WatchResponse) -> IdentityGetProfileResponse { - IdentityGetProfileResponse { - identity: Box::new(identity), - watch: Box::new(watch), - } - } + pub fn new( + identity: crate::models::IdentityProfile, + watch: crate::models::WatchResponse, + ) -> IdentityGetProfileResponse { + IdentityGetProfileResponse { + identity: Box::new(identity), + watch: Box::new(watch), + } + } } - - diff --git a/sdks/full/rust/src/models/identity_get_summaries_response.rs b/sdks/full/rust/src/models/identity_get_summaries_response.rs index bf83a8b651..42b328cd1f 100644 --- a/sdks/full/rust/src/models/identity_get_summaries_response.rs +++ b/sdks/full/rust/src/models/identity_get_summaries_response.rs @@ -4,28 +4,26 @@ * 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 IdentityGetSummariesResponse { - #[serde(rename = "identities")] - pub identities: Vec, - #[serde(rename = "watch")] - pub watch: Box, + #[serde(rename = "identities")] + pub identities: Vec, + #[serde(rename = "watch")] + pub watch: Box, } impl IdentityGetSummariesResponse { - pub fn new(identities: Vec, watch: crate::models::WatchResponse) -> IdentityGetSummariesResponse { - IdentityGetSummariesResponse { - identities, - watch: Box::new(watch), - } - } + pub fn new( + identities: Vec, + watch: crate::models::WatchResponse, + ) -> IdentityGetSummariesResponse { + IdentityGetSummariesResponse { + identities, + watch: Box::new(watch), + } + } } - - diff --git a/sdks/full/rust/src/models/identity_global_event.rs b/sdks/full/rust/src/models/identity_global_event.rs index e3533a36a9..733befecce 100644 --- a/sdks/full/rust/src/models/identity_global_event.rs +++ b/sdks/full/rust/src/models/identity_global_event.rs @@ -4,34 +4,30 @@ * 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 */ /// IdentityGlobalEvent : An event relevant to the current identity. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct IdentityGlobalEvent { - #[serde(rename = "kind")] - pub kind: Box, - #[serde(rename = "notification", skip_serializing_if = "Option::is_none")] - pub notification: Option>, - /// RFC3339 timestamp - #[serde(rename = "ts")] - pub ts: String, + #[serde(rename = "kind")] + pub kind: Box, + #[serde(rename = "notification", skip_serializing_if = "Option::is_none")] + pub notification: Option>, + /// RFC3339 timestamp + #[serde(rename = "ts")] + pub ts: String, } impl IdentityGlobalEvent { - /// An event relevant to the current identity. - pub fn new(kind: crate::models::IdentityGlobalEventKind, ts: String) -> IdentityGlobalEvent { - IdentityGlobalEvent { - kind: Box::new(kind), - notification: None, - ts, - } - } + /// An event relevant to the current identity. + pub fn new(kind: crate::models::IdentityGlobalEventKind, ts: String) -> IdentityGlobalEvent { + IdentityGlobalEvent { + kind: Box::new(kind), + notification: None, + ts, + } + } } - - diff --git a/sdks/full/rust/src/models/identity_global_event_identity_update.rs b/sdks/full/rust/src/models/identity_global_event_identity_update.rs index 5ccdc16e9f..0af36942a3 100644 --- a/sdks/full/rust/src/models/identity_global_event_identity_update.rs +++ b/sdks/full/rust/src/models/identity_global_event_identity_update.rs @@ -4,25 +4,20 @@ * 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 IdentityGlobalEventIdentityUpdate { - #[serde(rename = "identity")] - pub identity: Box, + #[serde(rename = "identity")] + pub identity: Box, } impl IdentityGlobalEventIdentityUpdate { - pub fn new(identity: crate::models::IdentityProfile) -> IdentityGlobalEventIdentityUpdate { - IdentityGlobalEventIdentityUpdate { - identity: Box::new(identity), - } - } + pub fn new(identity: crate::models::IdentityProfile) -> IdentityGlobalEventIdentityUpdate { + IdentityGlobalEventIdentityUpdate { + identity: Box::new(identity), + } + } } - - diff --git a/sdks/full/rust/src/models/identity_global_event_kind.rs b/sdks/full/rust/src/models/identity_global_event_kind.rs index fab257077b..23f8447a1a 100644 --- a/sdks/full/rust/src/models/identity_global_event_kind.rs +++ b/sdks/full/rust/src/models/identity_global_event_kind.rs @@ -4,25 +4,20 @@ * 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 IdentityGlobalEventKind { - #[serde(rename = "identity_update", skip_serializing_if = "Option::is_none")] - pub identity_update: Option>, + #[serde(rename = "identity_update", skip_serializing_if = "Option::is_none")] + pub identity_update: Option>, } impl IdentityGlobalEventKind { - pub fn new() -> IdentityGlobalEventKind { - IdentityGlobalEventKind { - identity_update: None, - } - } + pub fn new() -> IdentityGlobalEventKind { + IdentityGlobalEventKind { + identity_update: None, + } + } } - - diff --git a/sdks/full/rust/src/models/identity_global_event_notification.rs b/sdks/full/rust/src/models/identity_global_event_notification.rs index 8472601185..aa81ce7b00 100644 --- a/sdks/full/rust/src/models/identity_global_event_notification.rs +++ b/sdks/full/rust/src/models/identity_global_event_notification.rs @@ -4,38 +4,39 @@ * 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 */ /// IdentityGlobalEventNotification : Notifications represent information that should be presented to the user immediately. At the moment, only chat message events have associated notifications. # Display Notifications should be displayed in an unobtrusive manner throughout the entire game. Notifications should disappear after a few seconds if not interacted with. # Interactions If your platform supports it, notifications should be able to be clicked or tapped in order to open the relevant context for the event. For a simple implementation of notification interactions, open `url` in a web browser to present the relevant context. For example, a chat message notification will open the thread the chat message was sent in. For advanced implementations that implement a custom chat UI, use `GlobalEvent.kind` to determine what action to take when the notification is interacted with. For example, if the global event kind is `GlobalEventChatMessage`, then open the chat UI for the given thread. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct IdentityGlobalEventNotification { - #[serde(rename = "description")] - pub description: String, - /// URL to an image thumbnail that should be shown for this notification. - #[serde(rename = "thumbnail_url")] - pub thumbnail_url: String, - #[serde(rename = "title")] - pub title: String, - /// Rivet Hub URL that holds the relevant context for this notification. - #[serde(rename = "url")] - pub url: String, + #[serde(rename = "description")] + pub description: String, + /// URL to an image thumbnail that should be shown for this notification. + #[serde(rename = "thumbnail_url")] + pub thumbnail_url: String, + #[serde(rename = "title")] + pub title: String, + /// Rivet Hub URL that holds the relevant context for this notification. + #[serde(rename = "url")] + pub url: String, } impl IdentityGlobalEventNotification { - /// Notifications represent information that should be presented to the user immediately. At the moment, only chat message events have associated notifications. # Display Notifications should be displayed in an unobtrusive manner throughout the entire game. Notifications should disappear after a few seconds if not interacted with. # Interactions If your platform supports it, notifications should be able to be clicked or tapped in order to open the relevant context for the event. For a simple implementation of notification interactions, open `url` in a web browser to present the relevant context. For example, a chat message notification will open the thread the chat message was sent in. For advanced implementations that implement a custom chat UI, use `GlobalEvent.kind` to determine what action to take when the notification is interacted with. For example, if the global event kind is `GlobalEventChatMessage`, then open the chat UI for the given thread. - pub fn new(description: String, thumbnail_url: String, title: String, url: String) -> IdentityGlobalEventNotification { - IdentityGlobalEventNotification { - description, - thumbnail_url, - title, - url, - } - } + /// Notifications represent information that should be presented to the user immediately. At the moment, only chat message events have associated notifications. # Display Notifications should be displayed in an unobtrusive manner throughout the entire game. Notifications should disappear after a few seconds if not interacted with. # Interactions If your platform supports it, notifications should be able to be clicked or tapped in order to open the relevant context for the event. For a simple implementation of notification interactions, open `url` in a web browser to present the relevant context. For example, a chat message notification will open the thread the chat message was sent in. For advanced implementations that implement a custom chat UI, use `GlobalEvent.kind` to determine what action to take when the notification is interacted with. For example, if the global event kind is `GlobalEventChatMessage`, then open the chat UI for the given thread. + pub fn new( + description: String, + thumbnail_url: String, + title: String, + url: String, + ) -> IdentityGlobalEventNotification { + IdentityGlobalEventNotification { + description, + thumbnail_url, + title, + url, + } + } } - - diff --git a/sdks/full/rust/src/models/identity_group.rs b/sdks/full/rust/src/models/identity_group.rs index a280ad6ad2..2767ddae91 100644 --- a/sdks/full/rust/src/models/identity_group.rs +++ b/sdks/full/rust/src/models/identity_group.rs @@ -4,27 +4,23 @@ * 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 */ /// IdentityGroup : A group that the given identity. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct IdentityGroup { - #[serde(rename = "group")] - pub group: Box, + #[serde(rename = "group")] + pub group: Box, } impl IdentityGroup { - /// A group that the given identity. - pub fn new(group: crate::models::GroupHandle) -> IdentityGroup { - IdentityGroup { - group: Box::new(group), - } - } + /// A group that the given identity. + pub fn new(group: crate::models::GroupHandle) -> IdentityGroup { + IdentityGroup { + group: Box::new(group), + } + } } - - diff --git a/sdks/full/rust/src/models/identity_handle.rs b/sdks/full/rust/src/models/identity_handle.rs index aa3767fe0e..70c97f06d6 100644 --- a/sdks/full/rust/src/models/identity_handle.rs +++ b/sdks/full/rust/src/models/identity_handle.rs @@ -4,45 +4,48 @@ * 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 */ /// IdentityHandle : An identity handle. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct IdentityHandle { - #[serde(rename = "account_number")] - pub account_number: i32, - /// The URL of this identity's avatar image. - #[serde(rename = "avatar_url")] - pub avatar_url: String, - /// Represent a resource's readable display name. - #[serde(rename = "display_name")] - pub display_name: String, - #[serde(rename = "external")] - pub external: Box, - #[serde(rename = "identity_id")] - pub identity_id: uuid::Uuid, - /// Whether or not this identity is registered with a linked account. - #[serde(rename = "is_registered")] - pub is_registered: bool, + #[serde(rename = "account_number")] + pub account_number: i32, + /// The URL of this identity's avatar image. + #[serde(rename = "avatar_url")] + pub avatar_url: String, + /// Represent a resource's readable display name. + #[serde(rename = "display_name")] + pub display_name: String, + #[serde(rename = "external")] + pub external: Box, + #[serde(rename = "identity_id")] + pub identity_id: uuid::Uuid, + /// Whether or not this identity is registered with a linked account. + #[serde(rename = "is_registered")] + pub is_registered: bool, } impl IdentityHandle { - /// An identity handle. - pub fn new(account_number: i32, avatar_url: String, display_name: String, external: crate::models::IdentityExternalLinks, identity_id: uuid::Uuid, is_registered: bool) -> IdentityHandle { - IdentityHandle { - account_number, - avatar_url, - display_name, - external: Box::new(external), - identity_id, - is_registered, - } - } + /// An identity handle. + pub fn new( + account_number: i32, + avatar_url: String, + display_name: String, + external: crate::models::IdentityExternalLinks, + identity_id: uuid::Uuid, + is_registered: bool, + ) -> IdentityHandle { + IdentityHandle { + account_number, + avatar_url, + display_name, + external: Box::new(external), + identity_id, + is_registered, + } + } } - - diff --git a/sdks/full/rust/src/models/identity_linked_account.rs b/sdks/full/rust/src/models/identity_linked_account.rs index b0f4f62dde..d262a579e7 100644 --- a/sdks/full/rust/src/models/identity_linked_account.rs +++ b/sdks/full/rust/src/models/identity_linked_account.rs @@ -4,30 +4,26 @@ * 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 */ /// IdentityLinkedAccount : A union representing an identity's linked accounts. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct IdentityLinkedAccount { - #[serde(rename = "default_user", skip_serializing_if = "Option::is_none")] - pub default_user: Option, - #[serde(rename = "email", skip_serializing_if = "Option::is_none")] - pub email: Option>, + #[serde(rename = "default_user", skip_serializing_if = "Option::is_none")] + pub default_user: Option, + #[serde(rename = "email", skip_serializing_if = "Option::is_none")] + pub email: Option>, } impl IdentityLinkedAccount { - /// A union representing an identity's linked accounts. - pub fn new() -> IdentityLinkedAccount { - IdentityLinkedAccount { - default_user: None, - email: None, - } - } + /// A union representing an identity's linked accounts. + pub fn new() -> IdentityLinkedAccount { + IdentityLinkedAccount { + default_user: None, + email: None, + } + } } - - diff --git a/sdks/full/rust/src/models/identity_list_activities_response.rs b/sdks/full/rust/src/models/identity_list_activities_response.rs index 373cbb29e5..c9f1f3edba 100644 --- a/sdks/full/rust/src/models/identity_list_activities_response.rs +++ b/sdks/full/rust/src/models/identity_list_activities_response.rs @@ -4,37 +4,38 @@ * 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 IdentityListActivitiesResponse { - #[serde(rename = "games")] - pub games: Vec, - #[serde(rename = "identities")] - pub identities: Vec, - #[serde(rename = "suggested_groups")] - pub suggested_groups: Vec, - #[serde(rename = "suggested_players")] - pub suggested_players: Vec, - #[serde(rename = "watch")] - pub watch: Box, + #[serde(rename = "games")] + pub games: Vec, + #[serde(rename = "identities")] + pub identities: Vec, + #[serde(rename = "suggested_groups")] + pub suggested_groups: Vec, + #[serde(rename = "suggested_players")] + pub suggested_players: Vec, + #[serde(rename = "watch")] + pub watch: Box, } impl IdentityListActivitiesResponse { - pub fn new(games: Vec, identities: Vec, suggested_groups: Vec, suggested_players: Vec, watch: crate::models::WatchResponse) -> IdentityListActivitiesResponse { - IdentityListActivitiesResponse { - games, - identities, - suggested_groups, - suggested_players, - watch: Box::new(watch), - } - } + pub fn new( + games: Vec, + identities: Vec, + suggested_groups: Vec, + suggested_players: Vec, + watch: crate::models::WatchResponse, + ) -> IdentityListActivitiesResponse { + IdentityListActivitiesResponse { + games, + identities, + suggested_groups, + suggested_players, + watch: Box::new(watch), + } + } } - - diff --git a/sdks/full/rust/src/models/identity_prepare_avatar_upload_request.rs b/sdks/full/rust/src/models/identity_prepare_avatar_upload_request.rs index 89c23ec726..94c9b44fd6 100644 --- a/sdks/full/rust/src/models/identity_prepare_avatar_upload_request.rs +++ b/sdks/full/rust/src/models/identity_prepare_avatar_upload_request.rs @@ -4,32 +4,31 @@ * 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 IdentityPrepareAvatarUploadRequest { - #[serde(rename = "content_length")] - pub content_length: i64, - /// See https://www.iana.org/assignments/media-types/media-types.xhtml - #[serde(rename = "mime")] - pub mime: String, - #[serde(rename = "path")] - pub path: String, + #[serde(rename = "content_length")] + pub content_length: i64, + /// See https://www.iana.org/assignments/media-types/media-types.xhtml + #[serde(rename = "mime")] + pub mime: String, + #[serde(rename = "path")] + pub path: String, } impl IdentityPrepareAvatarUploadRequest { - pub fn new(content_length: i64, mime: String, path: String) -> IdentityPrepareAvatarUploadRequest { - IdentityPrepareAvatarUploadRequest { - content_length, - mime, - path, - } - } + pub fn new( + content_length: i64, + mime: String, + path: String, + ) -> IdentityPrepareAvatarUploadRequest { + IdentityPrepareAvatarUploadRequest { + content_length, + mime, + path, + } + } } - - diff --git a/sdks/full/rust/src/models/identity_prepare_avatar_upload_response.rs b/sdks/full/rust/src/models/identity_prepare_avatar_upload_response.rs index 756fdda3de..414223d33a 100644 --- a/sdks/full/rust/src/models/identity_prepare_avatar_upload_response.rs +++ b/sdks/full/rust/src/models/identity_prepare_avatar_upload_response.rs @@ -4,28 +4,26 @@ * 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 IdentityPrepareAvatarUploadResponse { - #[serde(rename = "presigned_request")] - pub presigned_request: Box, - #[serde(rename = "upload_id")] - pub upload_id: uuid::Uuid, + #[serde(rename = "presigned_request")] + pub presigned_request: Box, + #[serde(rename = "upload_id")] + pub upload_id: uuid::Uuid, } impl IdentityPrepareAvatarUploadResponse { - pub fn new(presigned_request: crate::models::UploadPresignedRequest, upload_id: uuid::Uuid) -> IdentityPrepareAvatarUploadResponse { - IdentityPrepareAvatarUploadResponse { - presigned_request: Box::new(presigned_request), - upload_id, - } - } + pub fn new( + presigned_request: crate::models::UploadPresignedRequest, + upload_id: uuid::Uuid, + ) -> IdentityPrepareAvatarUploadResponse { + IdentityPrepareAvatarUploadResponse { + presigned_request: Box::new(presigned_request), + upload_id, + } + } } - - diff --git a/sdks/full/rust/src/models/identity_profile.rs b/sdks/full/rust/src/models/identity_profile.rs index ef5de34586..cbc1644fa9 100644 --- a/sdks/full/rust/src/models/identity_profile.rs +++ b/sdks/full/rust/src/models/identity_profile.rs @@ -4,94 +4,108 @@ * 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 */ /// IdentityProfile : An identity profile. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct IdentityProfile { - #[serde(rename = "account_number")] - pub account_number: i32, - /// The URL of this identity's avatar image. - #[serde(rename = "avatar_url")] - pub avatar_url: String, - /// Whether or not this identity is awaiting account deletion. Only visible to when the requestee is this identity. - #[serde(rename = "awaiting_deletion", skip_serializing_if = "Option::is_none")] - pub awaiting_deletion: Option, - /// Follows regex ^(?:[^\\n\\r]+\\n?|\\n){1,5}$ - #[serde(rename = "bio")] - pub bio: String, - #[serde(rename = "dev_state", skip_serializing_if = "Option::is_none")] - pub dev_state: Option, - /// Represent a resource's readable display name. - #[serde(rename = "display_name")] - pub display_name: String, - #[serde(rename = "external")] - pub external: Box, - #[serde(rename = "follower_count")] - pub follower_count: i64, - /// Whether or not the requestee's identity is following this identity. - #[serde(rename = "following")] - pub following: bool, - #[serde(rename = "following_count")] - pub following_count: i64, - #[serde(rename = "games")] - pub games: Vec, - #[serde(rename = "groups")] - pub groups: Vec, - #[serde(rename = "identity_id")] - pub identity_id: uuid::Uuid, - /// Whether or not this identity is an admin. - #[serde(rename = "is_admin")] - pub is_admin: bool, - /// Whether or not this identity is both following and is followed by the requestee's identity. - #[serde(rename = "is_following_me")] - pub is_following_me: bool, - /// Whether or not this game user has been linked through the Rivet dashboard. - #[serde(rename = "is_game_linked", skip_serializing_if = "Option::is_none")] - pub is_game_linked: Option, - #[serde(rename = "is_mutual_following")] - pub is_mutual_following: bool, - /// Whether or not this identity is registered with a linked account. - #[serde(rename = "is_registered")] - pub is_registered: bool, - /// RFC3339 timestamp - #[serde(rename = "join_ts")] - pub join_ts: String, - #[serde(rename = "linked_accounts")] - pub linked_accounts: Vec, + #[serde(rename = "account_number")] + pub account_number: i32, + /// The URL of this identity's avatar image. + #[serde(rename = "avatar_url")] + pub avatar_url: String, + /// Whether or not this identity is awaiting account deletion. Only visible to when the requestee is this identity. + #[serde(rename = "awaiting_deletion", skip_serializing_if = "Option::is_none")] + pub awaiting_deletion: Option, + /// Follows regex ^(?:[^\\n\\r]+\\n?|\\n){1,5}$ + #[serde(rename = "bio")] + pub bio: String, + #[serde(rename = "dev_state", skip_serializing_if = "Option::is_none")] + pub dev_state: Option, + /// Represent a resource's readable display name. + #[serde(rename = "display_name")] + pub display_name: String, + #[serde(rename = "external")] + pub external: Box, + #[serde(rename = "follower_count")] + pub follower_count: i64, + /// Whether or not the requestee's identity is following this identity. + #[serde(rename = "following")] + pub following: bool, + #[serde(rename = "following_count")] + pub following_count: i64, + #[serde(rename = "games")] + pub games: Vec, + #[serde(rename = "groups")] + pub groups: Vec, + #[serde(rename = "identity_id")] + pub identity_id: uuid::Uuid, + /// Whether or not this identity is an admin. + #[serde(rename = "is_admin")] + pub is_admin: bool, + /// Whether or not this identity is both following and is followed by the requestee's identity. + #[serde(rename = "is_following_me")] + pub is_following_me: bool, + /// Whether or not this game user has been linked through the Rivet dashboard. + #[serde(rename = "is_game_linked", skip_serializing_if = "Option::is_none")] + pub is_game_linked: Option, + #[serde(rename = "is_mutual_following")] + pub is_mutual_following: bool, + /// Whether or not this identity is registered with a linked account. + #[serde(rename = "is_registered")] + pub is_registered: bool, + /// RFC3339 timestamp + #[serde(rename = "join_ts")] + pub join_ts: String, + #[serde(rename = "linked_accounts")] + pub linked_accounts: Vec, } impl IdentityProfile { - /// An identity profile. - pub fn new(account_number: i32, avatar_url: String, bio: String, display_name: String, external: crate::models::IdentityExternalLinks, follower_count: i64, following: bool, following_count: i64, games: Vec, groups: Vec, identity_id: uuid::Uuid, is_admin: bool, is_following_me: bool, is_mutual_following: bool, is_registered: bool, join_ts: String, linked_accounts: Vec) -> IdentityProfile { - IdentityProfile { - account_number, - avatar_url, - awaiting_deletion: None, - bio, - dev_state: None, - display_name, - external: Box::new(external), - follower_count, - following, - following_count, - games, - groups, - identity_id, - is_admin, - is_following_me, - is_game_linked: None, - is_mutual_following, - is_registered, - join_ts, - linked_accounts, - } - } + /// An identity profile. + pub fn new( + account_number: i32, + avatar_url: String, + bio: String, + display_name: String, + external: crate::models::IdentityExternalLinks, + follower_count: i64, + following: bool, + following_count: i64, + games: Vec, + groups: Vec, + identity_id: uuid::Uuid, + is_admin: bool, + is_following_me: bool, + is_mutual_following: bool, + is_registered: bool, + join_ts: String, + linked_accounts: Vec, + ) -> IdentityProfile { + IdentityProfile { + account_number, + avatar_url, + awaiting_deletion: None, + bio, + dev_state: None, + display_name, + external: Box::new(external), + follower_count, + following, + following_count, + games, + groups, + identity_id, + is_admin, + is_following_me, + is_game_linked: None, + is_mutual_following, + is_registered, + join_ts, + linked_accounts, + } + } } - - diff --git a/sdks/full/rust/src/models/identity_set_game_activity_request.rs b/sdks/full/rust/src/models/identity_set_game_activity_request.rs index cb53bb90bb..1de50baf6e 100644 --- a/sdks/full/rust/src/models/identity_set_game_activity_request.rs +++ b/sdks/full/rust/src/models/identity_set_game_activity_request.rs @@ -4,25 +4,22 @@ * 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 IdentitySetGameActivityRequest { - #[serde(rename = "game_activity")] - pub game_activity: Box, + #[serde(rename = "game_activity")] + pub game_activity: Box, } impl IdentitySetGameActivityRequest { - pub fn new(game_activity: crate::models::IdentityUpdateGameActivity) -> IdentitySetGameActivityRequest { - IdentitySetGameActivityRequest { - game_activity: Box::new(game_activity), - } - } + pub fn new( + game_activity: crate::models::IdentityUpdateGameActivity, + ) -> IdentitySetGameActivityRequest { + IdentitySetGameActivityRequest { + game_activity: Box::new(game_activity), + } + } } - - diff --git a/sdks/full/rust/src/models/identity_setup_request.rs b/sdks/full/rust/src/models/identity_setup_request.rs index dba1402ee0..89389dd45c 100644 --- a/sdks/full/rust/src/models/identity_setup_request.rs +++ b/sdks/full/rust/src/models/identity_setup_request.rs @@ -4,26 +4,24 @@ * 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 IdentitySetupRequest { - /// Documentation at https://jwt.io/ - #[serde(rename = "existing_identity_token", skip_serializing_if = "Option::is_none")] - pub existing_identity_token: Option, + /// Documentation at https://jwt.io/ + #[serde( + rename = "existing_identity_token", + skip_serializing_if = "Option::is_none" + )] + pub existing_identity_token: Option, } impl IdentitySetupRequest { - pub fn new() -> IdentitySetupRequest { - IdentitySetupRequest { - existing_identity_token: None, - } - } + pub fn new() -> IdentitySetupRequest { + IdentitySetupRequest { + existing_identity_token: None, + } + } } - - diff --git a/sdks/full/rust/src/models/identity_setup_response.rs b/sdks/full/rust/src/models/identity_setup_response.rs index d72d496270..aaa588629f 100644 --- a/sdks/full/rust/src/models/identity_setup_response.rs +++ b/sdks/full/rust/src/models/identity_setup_response.rs @@ -4,36 +4,36 @@ * 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 IdentitySetupResponse { - #[serde(rename = "game_id")] - pub game_id: uuid::Uuid, - #[serde(rename = "identity")] - pub identity: Box, - /// Documentation at https://jwt.io/ - #[serde(rename = "identity_token")] - pub identity_token: String, - /// RFC3339 timestamp - #[serde(rename = "identity_token_expire_ts")] - pub identity_token_expire_ts: String, + #[serde(rename = "game_id")] + pub game_id: uuid::Uuid, + #[serde(rename = "identity")] + pub identity: Box, + /// Documentation at https://jwt.io/ + #[serde(rename = "identity_token")] + pub identity_token: String, + /// RFC3339 timestamp + #[serde(rename = "identity_token_expire_ts")] + pub identity_token_expire_ts: String, } impl IdentitySetupResponse { - pub fn new(game_id: uuid::Uuid, identity: crate::models::IdentityProfile, identity_token: String, identity_token_expire_ts: String) -> IdentitySetupResponse { - IdentitySetupResponse { - game_id, - identity: Box::new(identity), - identity_token, - identity_token_expire_ts, - } - } + pub fn new( + game_id: uuid::Uuid, + identity: crate::models::IdentityProfile, + identity_token: String, + identity_token_expire_ts: String, + ) -> IdentitySetupResponse { + IdentitySetupResponse { + game_id, + identity: Box::new(identity), + identity_token, + identity_token_expire_ts, + } + } } - - diff --git a/sdks/full/rust/src/models/identity_signup_for_beta_request.rs b/sdks/full/rust/src/models/identity_signup_for_beta_request.rs index 7e4e94dd23..f01715e87b 100644 --- a/sdks/full/rust/src/models/identity_signup_for_beta_request.rs +++ b/sdks/full/rust/src/models/identity_signup_for_beta_request.rs @@ -4,37 +4,37 @@ * 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 IdentitySignupForBetaRequest { - #[serde(rename = "company_name", skip_serializing_if = "Option::is_none")] - pub company_name: Option, - #[serde(rename = "company_size")] - pub company_size: String, - #[serde(rename = "goals")] - pub goals: String, - #[serde(rename = "name")] - pub name: String, - #[serde(rename = "preferred_tools")] - pub preferred_tools: String, + #[serde(rename = "company_name", skip_serializing_if = "Option::is_none")] + pub company_name: Option, + #[serde(rename = "company_size")] + pub company_size: String, + #[serde(rename = "goals")] + pub goals: String, + #[serde(rename = "name")] + pub name: String, + #[serde(rename = "preferred_tools")] + pub preferred_tools: String, } impl IdentitySignupForBetaRequest { - pub fn new(company_size: String, goals: String, name: String, preferred_tools: String) -> IdentitySignupForBetaRequest { - IdentitySignupForBetaRequest { - company_name: None, - company_size, - goals, - name, - preferred_tools, - } - } + pub fn new( + company_size: String, + goals: String, + name: String, + preferred_tools: String, + ) -> IdentitySignupForBetaRequest { + IdentitySignupForBetaRequest { + company_name: None, + company_size, + goals, + name, + preferred_tools, + } + } } - - diff --git a/sdks/full/rust/src/models/identity_status.rs b/sdks/full/rust/src/models/identity_status.rs index 992b7897ac..ef1bdb6832 100644 --- a/sdks/full/rust/src/models/identity_status.rs +++ b/sdks/full/rust/src/models/identity_status.rs @@ -4,7 +4,7 @@ * 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 */ @@ -13,31 +13,26 @@ /// The current status of an identity. This helps players understand if another player is currently playing or has their game in the background. #[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] pub enum IdentityStatus { - #[serde(rename = "online")] - Online, - #[serde(rename = "away")] - Away, - #[serde(rename = "offline")] - Offline, - + #[serde(rename = "online")] + Online, + #[serde(rename = "away")] + Away, + #[serde(rename = "offline")] + Offline, } impl ToString for IdentityStatus { - fn to_string(&self) -> String { - match self { - Self::Online => String::from("online"), - Self::Away => String::from("away"), - Self::Offline => String::from("offline"), - } - } + fn to_string(&self) -> String { + match self { + Self::Online => String::from("online"), + Self::Away => String::from("away"), + Self::Offline => String::from("offline"), + } + } } impl Default for IdentityStatus { - fn default() -> IdentityStatus { - Self::Online - } + fn default() -> IdentityStatus { + Self::Online + } } - - - - diff --git a/sdks/full/rust/src/models/identity_summary.rs b/sdks/full/rust/src/models/identity_summary.rs index d1d1fd63ec..c5e27c7e43 100644 --- a/sdks/full/rust/src/models/identity_summary.rs +++ b/sdks/full/rust/src/models/identity_summary.rs @@ -4,56 +4,62 @@ * 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 */ /// IdentitySummary : An identity summary. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct IdentitySummary { - #[serde(rename = "account_number")] - pub account_number: i32, - /// The URL of this identity's avatar image. - #[serde(rename = "avatar_url")] - pub avatar_url: String, - /// Represent a resource's readable display name. - #[serde(rename = "display_name")] - pub display_name: String, - #[serde(rename = "external")] - pub external: Box, - /// Whether or not the requestee's identity is following this identity. - #[serde(rename = "following")] - pub following: bool, - #[serde(rename = "identity_id")] - pub identity_id: uuid::Uuid, - /// Whether or not this identity is both following and is followed by the requestee's identity. - #[serde(rename = "is_following_me")] - pub is_following_me: bool, - #[serde(rename = "is_mutual_following")] - pub is_mutual_following: bool, - /// Whether or not this identity is registered with a linked account. - #[serde(rename = "is_registered")] - pub is_registered: bool, + #[serde(rename = "account_number")] + pub account_number: i32, + /// The URL of this identity's avatar image. + #[serde(rename = "avatar_url")] + pub avatar_url: String, + /// Represent a resource's readable display name. + #[serde(rename = "display_name")] + pub display_name: String, + #[serde(rename = "external")] + pub external: Box, + /// Whether or not the requestee's identity is following this identity. + #[serde(rename = "following")] + pub following: bool, + #[serde(rename = "identity_id")] + pub identity_id: uuid::Uuid, + /// Whether or not this identity is both following and is followed by the requestee's identity. + #[serde(rename = "is_following_me")] + pub is_following_me: bool, + #[serde(rename = "is_mutual_following")] + pub is_mutual_following: bool, + /// Whether or not this identity is registered with a linked account. + #[serde(rename = "is_registered")] + pub is_registered: bool, } impl IdentitySummary { - /// An identity summary. - pub fn new(account_number: i32, avatar_url: String, display_name: String, external: crate::models::IdentityExternalLinks, following: bool, identity_id: uuid::Uuid, is_following_me: bool, is_mutual_following: bool, is_registered: bool) -> IdentitySummary { - IdentitySummary { - account_number, - avatar_url, - display_name, - external: Box::new(external), - following, - identity_id, - is_following_me, - is_mutual_following, - is_registered, - } - } + /// An identity summary. + pub fn new( + account_number: i32, + avatar_url: String, + display_name: String, + external: crate::models::IdentityExternalLinks, + following: bool, + identity_id: uuid::Uuid, + is_following_me: bool, + is_mutual_following: bool, + is_registered: bool, + ) -> IdentitySummary { + IdentitySummary { + account_number, + avatar_url, + display_name, + external: Box::new(external), + following, + identity_id, + is_following_me, + is_mutual_following, + is_registered, + } + } } - - diff --git a/sdks/full/rust/src/models/identity_update_game_activity.rs b/sdks/full/rust/src/models/identity_update_game_activity.rs index eb5698c4e9..3512ba8268 100644 --- a/sdks/full/rust/src/models/identity_update_game_activity.rs +++ b/sdks/full/rust/src/models/identity_update_game_activity.rs @@ -4,36 +4,42 @@ * 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 */ /// IdentityUpdateGameActivity : Information about the identity's current game. This is information that all other identities can see about what the current identity is doing. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct IdentityUpdateGameActivity { - /// A short message about the current game activity. - #[serde(rename = "message", skip_serializing_if = "Option::is_none")] - pub message: Option, - /// JSON data seen only by the given identity and their mutual followers. - #[serde(rename = "mutual_metadata", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")] - pub mutual_metadata: Option>, - /// JSON data seen by anyone. - #[serde(rename = "public_metadata", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")] - pub public_metadata: Option>, + /// A short message about the current game activity. + #[serde(rename = "message", skip_serializing_if = "Option::is_none")] + pub message: Option, + /// JSON data seen only by the given identity and their mutual followers. + #[serde( + rename = "mutual_metadata", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub mutual_metadata: Option>, + /// JSON data seen by anyone. + #[serde( + rename = "public_metadata", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub public_metadata: Option>, } impl IdentityUpdateGameActivity { - /// Information about the identity's current game. This is information that all other identities can see about what the current identity is doing. - pub fn new() -> IdentityUpdateGameActivity { - IdentityUpdateGameActivity { - message: None, - mutual_metadata: None, - public_metadata: None, - } - } + /// Information about the identity's current game. This is information that all other identities can see about what the current identity is doing. + pub fn new() -> IdentityUpdateGameActivity { + IdentityUpdateGameActivity { + message: None, + mutual_metadata: None, + public_metadata: None, + } + } } - - diff --git a/sdks/full/rust/src/models/identity_update_profile_request.rs b/sdks/full/rust/src/models/identity_update_profile_request.rs index 24d90a91c4..a85d8a40ab 100644 --- a/sdks/full/rust/src/models/identity_update_profile_request.rs +++ b/sdks/full/rust/src/models/identity_update_profile_request.rs @@ -4,33 +4,28 @@ * 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 IdentityUpdateProfileRequest { - #[serde(rename = "account_number", skip_serializing_if = "Option::is_none")] - pub account_number: Option, - /// Follows regex ^(?:[^\\n\\r]+\\n?|\\n){1,5}$ - #[serde(rename = "bio", skip_serializing_if = "Option::is_none")] - pub bio: Option, - /// Represent a resource's readable display name. - #[serde(rename = "display_name", skip_serializing_if = "Option::is_none")] - pub display_name: Option, + #[serde(rename = "account_number", skip_serializing_if = "Option::is_none")] + pub account_number: Option, + /// Follows regex ^(?:[^\\n\\r]+\\n?|\\n){1,5}$ + #[serde(rename = "bio", skip_serializing_if = "Option::is_none")] + pub bio: Option, + /// Represent a resource's readable display name. + #[serde(rename = "display_name", skip_serializing_if = "Option::is_none")] + pub display_name: Option, } impl IdentityUpdateProfileRequest { - pub fn new() -> IdentityUpdateProfileRequest { - IdentityUpdateProfileRequest { - account_number: None, - bio: None, - display_name: None, - } - } + pub fn new() -> IdentityUpdateProfileRequest { + IdentityUpdateProfileRequest { + account_number: None, + bio: None, + display_name: None, + } + } } - - diff --git a/sdks/full/rust/src/models/identity_update_status_request.rs b/sdks/full/rust/src/models/identity_update_status_request.rs index c6c79c6881..8c41927f5c 100644 --- a/sdks/full/rust/src/models/identity_update_status_request.rs +++ b/sdks/full/rust/src/models/identity_update_status_request.rs @@ -4,25 +4,18 @@ * 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 IdentityUpdateStatusRequest { - #[serde(rename = "status")] - pub status: crate::models::IdentityStatus, + #[serde(rename = "status")] + pub status: crate::models::IdentityStatus, } impl IdentityUpdateStatusRequest { - pub fn new(status: crate::models::IdentityStatus) -> IdentityUpdateStatusRequest { - IdentityUpdateStatusRequest { - status, - } - } + pub fn new(status: crate::models::IdentityStatus) -> IdentityUpdateStatusRequest { + IdentityUpdateStatusRequest { status } + } } - - diff --git a/sdks/full/rust/src/models/identity_validate_profile_response.rs b/sdks/full/rust/src/models/identity_validate_profile_response.rs index f08e3f02b1..36054e28d4 100644 --- a/sdks/full/rust/src/models/identity_validate_profile_response.rs +++ b/sdks/full/rust/src/models/identity_validate_profile_response.rs @@ -4,25 +4,18 @@ * 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 IdentityValidateProfileResponse { - #[serde(rename = "errors")] - pub errors: Vec, + #[serde(rename = "errors")] + pub errors: Vec, } impl IdentityValidateProfileResponse { - pub fn new(errors: Vec) -> IdentityValidateProfileResponse { - IdentityValidateProfileResponse { - errors, - } - } + pub fn new(errors: Vec) -> IdentityValidateProfileResponse { + IdentityValidateProfileResponse { errors } + } } - - diff --git a/sdks/full/rust/src/models/identity_watch_events_response.rs b/sdks/full/rust/src/models/identity_watch_events_response.rs index e04fd721dc..268c6dd650 100644 --- a/sdks/full/rust/src/models/identity_watch_events_response.rs +++ b/sdks/full/rust/src/models/identity_watch_events_response.rs @@ -4,28 +4,26 @@ * 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 IdentityWatchEventsResponse { - #[serde(rename = "events")] - pub events: Vec, - #[serde(rename = "watch")] - pub watch: Box, + #[serde(rename = "events")] + pub events: Vec, + #[serde(rename = "watch")] + pub watch: Box, } impl IdentityWatchEventsResponse { - pub fn new(events: Vec, watch: crate::models::WatchResponse) -> IdentityWatchEventsResponse { - IdentityWatchEventsResponse { - events, - watch: Box::new(watch), - } - } + pub fn new( + events: Vec, + watch: crate::models::WatchResponse, + ) -> IdentityWatchEventsResponse { + IdentityWatchEventsResponse { + events, + watch: Box::new(watch), + } + } } - - diff --git a/sdks/full/rust/src/models/matchmaker_create_lobby_response.rs b/sdks/full/rust/src/models/matchmaker_create_lobby_response.rs index 0d1bcc029a..fab017c125 100644 --- a/sdks/full/rust/src/models/matchmaker_create_lobby_response.rs +++ b/sdks/full/rust/src/models/matchmaker_create_lobby_response.rs @@ -4,31 +4,30 @@ * 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 MatchmakerCreateLobbyResponse { - #[serde(rename = "lobby")] - pub lobby: Box, - #[serde(rename = "player")] - pub player: Box, - #[serde(rename = "ports")] - pub ports: ::std::collections::HashMap, + #[serde(rename = "lobby")] + pub lobby: Box, + #[serde(rename = "player")] + pub player: Box, + #[serde(rename = "ports")] + pub ports: ::std::collections::HashMap, } impl MatchmakerCreateLobbyResponse { - pub fn new(lobby: crate::models::MatchmakerJoinLobby, player: crate::models::MatchmakerJoinPlayer, ports: ::std::collections::HashMap) -> MatchmakerCreateLobbyResponse { - MatchmakerCreateLobbyResponse { - lobby: Box::new(lobby), - player: Box::new(player), - ports, - } - } + pub fn new( + lobby: crate::models::MatchmakerJoinLobby, + player: crate::models::MatchmakerJoinPlayer, + ports: ::std::collections::HashMap, + ) -> MatchmakerCreateLobbyResponse { + MatchmakerCreateLobbyResponse { + lobby: Box::new(lobby), + player: Box::new(player), + ports, + } + } } - - diff --git a/sdks/full/rust/src/models/matchmaker_custom_lobby_publicity.rs b/sdks/full/rust/src/models/matchmaker_custom_lobby_publicity.rs index e3dcead796..8bdb09d8f0 100644 --- a/sdks/full/rust/src/models/matchmaker_custom_lobby_publicity.rs +++ b/sdks/full/rust/src/models/matchmaker_custom_lobby_publicity.rs @@ -4,36 +4,30 @@ * 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 MatchmakerCustomLobbyPublicity { - #[serde(rename = "public")] - Public, - #[serde(rename = "private")] - Private, - + #[serde(rename = "public")] + Public, + #[serde(rename = "private")] + Private, } impl ToString for MatchmakerCustomLobbyPublicity { - fn to_string(&self) -> String { - match self { - Self::Public => String::from("public"), - Self::Private => String::from("private"), - } - } + fn to_string(&self) -> String { + match self { + Self::Public => String::from("public"), + Self::Private => String::from("private"), + } + } } impl Default for MatchmakerCustomLobbyPublicity { - fn default() -> MatchmakerCustomLobbyPublicity { - Self::Public - } + fn default() -> MatchmakerCustomLobbyPublicity { + Self::Public + } } - - - - diff --git a/sdks/full/rust/src/models/matchmaker_find_lobby_response.rs b/sdks/full/rust/src/models/matchmaker_find_lobby_response.rs index 0a72c11058..9c30250ecf 100644 --- a/sdks/full/rust/src/models/matchmaker_find_lobby_response.rs +++ b/sdks/full/rust/src/models/matchmaker_find_lobby_response.rs @@ -4,31 +4,30 @@ * 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 MatchmakerFindLobbyResponse { - #[serde(rename = "lobby")] - pub lobby: Box, - #[serde(rename = "player")] - pub player: Box, - #[serde(rename = "ports")] - pub ports: ::std::collections::HashMap, + #[serde(rename = "lobby")] + pub lobby: Box, + #[serde(rename = "player")] + pub player: Box, + #[serde(rename = "ports")] + pub ports: ::std::collections::HashMap, } impl MatchmakerFindLobbyResponse { - pub fn new(lobby: crate::models::MatchmakerJoinLobby, player: crate::models::MatchmakerJoinPlayer, ports: ::std::collections::HashMap) -> MatchmakerFindLobbyResponse { - MatchmakerFindLobbyResponse { - lobby: Box::new(lobby), - player: Box::new(player), - ports, - } - } + pub fn new( + lobby: crate::models::MatchmakerJoinLobby, + player: crate::models::MatchmakerJoinPlayer, + ports: ::std::collections::HashMap, + ) -> MatchmakerFindLobbyResponse { + MatchmakerFindLobbyResponse { + lobby: Box::new(lobby), + player: Box::new(player), + ports, + } + } } - - diff --git a/sdks/full/rust/src/models/matchmaker_game_mode_info.rs b/sdks/full/rust/src/models/matchmaker_game_mode_info.rs index d3d921a688..a45e9f3615 100644 --- a/sdks/full/rust/src/models/matchmaker_game_mode_info.rs +++ b/sdks/full/rust/src/models/matchmaker_game_mode_info.rs @@ -4,28 +4,22 @@ * 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 */ /// MatchmakerGameModeInfo : A game mode that the player can join. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct MatchmakerGameModeInfo { - /// A human readable short identifier used to references resources. Different than a `uuid` because this is intended to be human readable. Different than `DisplayName` because this should not include special characters and be short. - #[serde(rename = "game_mode_id")] - pub game_mode_id: String, + /// A human readable short identifier used to references resources. Different than a `uuid` because this is intended to be human readable. Different than `DisplayName` because this should not include special characters and be short. + #[serde(rename = "game_mode_id")] + pub game_mode_id: String, } impl MatchmakerGameModeInfo { - /// A game mode that the player can join. - pub fn new(game_mode_id: String) -> MatchmakerGameModeInfo { - MatchmakerGameModeInfo { - game_mode_id, - } - } + /// A game mode that the player can join. + pub fn new(game_mode_id: String) -> MatchmakerGameModeInfo { + MatchmakerGameModeInfo { game_mode_id } + } } - - diff --git a/sdks/full/rust/src/models/matchmaker_game_mode_statistics.rs b/sdks/full/rust/src/models/matchmaker_game_mode_statistics.rs index d2da15d2d9..e12272fc15 100644 --- a/sdks/full/rust/src/models/matchmaker_game_mode_statistics.rs +++ b/sdks/full/rust/src/models/matchmaker_game_mode_statistics.rs @@ -4,28 +4,26 @@ * 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 MatchmakerGameModeStatistics { - #[serde(rename = "player_count")] - pub player_count: i64, - #[serde(rename = "regions")] - pub regions: ::std::collections::HashMap, + #[serde(rename = "player_count")] + pub player_count: i64, + #[serde(rename = "regions")] + pub regions: ::std::collections::HashMap, } impl MatchmakerGameModeStatistics { - pub fn new(player_count: i64, regions: ::std::collections::HashMap) -> MatchmakerGameModeStatistics { - MatchmakerGameModeStatistics { - player_count, - regions, - } - } + pub fn new( + player_count: i64, + regions: ::std::collections::HashMap, + ) -> MatchmakerGameModeStatistics { + MatchmakerGameModeStatistics { + player_count, + regions, + } + } } - - diff --git a/sdks/full/rust/src/models/matchmaker_get_statistics_response.rs b/sdks/full/rust/src/models/matchmaker_get_statistics_response.rs index 4275e93a5e..3650ef1378 100644 --- a/sdks/full/rust/src/models/matchmaker_get_statistics_response.rs +++ b/sdks/full/rust/src/models/matchmaker_get_statistics_response.rs @@ -4,28 +4,30 @@ * 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 MatchmakerGetStatisticsResponse { - #[serde(rename = "game_modes")] - pub game_modes: ::std::collections::HashMap, - #[serde(rename = "player_count")] - pub player_count: i64, + #[serde(rename = "game_modes")] + pub game_modes: + ::std::collections::HashMap, + #[serde(rename = "player_count")] + pub player_count: i64, } impl MatchmakerGetStatisticsResponse { - pub fn new(game_modes: ::std::collections::HashMap, player_count: i64) -> MatchmakerGetStatisticsResponse { - MatchmakerGetStatisticsResponse { - game_modes, - player_count, - } - } + pub fn new( + game_modes: ::std::collections::HashMap< + String, + crate::models::MatchmakerGameModeStatistics, + >, + player_count: i64, + ) -> MatchmakerGetStatisticsResponse { + MatchmakerGetStatisticsResponse { + game_modes, + player_count, + } + } } - - diff --git a/sdks/full/rust/src/models/matchmaker_join_lobby.rs b/sdks/full/rust/src/models/matchmaker_join_lobby.rs index aaf5bd9cd7..5b963a7bdc 100644 --- a/sdks/full/rust/src/models/matchmaker_join_lobby.rs +++ b/sdks/full/rust/src/models/matchmaker_join_lobby.rs @@ -4,37 +4,38 @@ * 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 */ /// MatchmakerJoinLobby : A matchmaker lobby. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct MatchmakerJoinLobby { - #[serde(rename = "lobby_id")] - pub lobby_id: uuid::Uuid, - #[serde(rename = "player")] - pub player: Box, - /// **Deprecated** - #[serde(rename = "ports")] - pub ports: ::std::collections::HashMap, - #[serde(rename = "region")] - pub region: Box, + #[serde(rename = "lobby_id")] + pub lobby_id: uuid::Uuid, + #[serde(rename = "player")] + pub player: Box, + /// **Deprecated** + #[serde(rename = "ports")] + pub ports: ::std::collections::HashMap, + #[serde(rename = "region")] + pub region: Box, } impl MatchmakerJoinLobby { - /// A matchmaker lobby. - pub fn new(lobby_id: uuid::Uuid, player: crate::models::MatchmakerJoinPlayer, ports: ::std::collections::HashMap, region: crate::models::MatchmakerJoinRegion) -> MatchmakerJoinLobby { - MatchmakerJoinLobby { - lobby_id, - player: Box::new(player), - ports, - region: Box::new(region), - } - } + /// A matchmaker lobby. + pub fn new( + lobby_id: uuid::Uuid, + player: crate::models::MatchmakerJoinPlayer, + ports: ::std::collections::HashMap, + region: crate::models::MatchmakerJoinRegion, + ) -> MatchmakerJoinLobby { + MatchmakerJoinLobby { + lobby_id, + player: Box::new(player), + ports, + region: Box::new(region), + } + } } - - diff --git a/sdks/full/rust/src/models/matchmaker_join_lobby_response.rs b/sdks/full/rust/src/models/matchmaker_join_lobby_response.rs index d284339b25..c502c5a62f 100644 --- a/sdks/full/rust/src/models/matchmaker_join_lobby_response.rs +++ b/sdks/full/rust/src/models/matchmaker_join_lobby_response.rs @@ -4,31 +4,30 @@ * 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 MatchmakerJoinLobbyResponse { - #[serde(rename = "lobby")] - pub lobby: Box, - #[serde(rename = "player")] - pub player: Box, - #[serde(rename = "ports")] - pub ports: ::std::collections::HashMap, + #[serde(rename = "lobby")] + pub lobby: Box, + #[serde(rename = "player")] + pub player: Box, + #[serde(rename = "ports")] + pub ports: ::std::collections::HashMap, } impl MatchmakerJoinLobbyResponse { - pub fn new(lobby: crate::models::MatchmakerJoinLobby, player: crate::models::MatchmakerJoinPlayer, ports: ::std::collections::HashMap) -> MatchmakerJoinLobbyResponse { - MatchmakerJoinLobbyResponse { - lobby: Box::new(lobby), - player: Box::new(player), - ports, - } - } + pub fn new( + lobby: crate::models::MatchmakerJoinLobby, + player: crate::models::MatchmakerJoinPlayer, + ports: ::std::collections::HashMap, + ) -> MatchmakerJoinLobbyResponse { + MatchmakerJoinLobbyResponse { + lobby: Box::new(lobby), + player: Box::new(player), + ports, + } + } } - - diff --git a/sdks/full/rust/src/models/matchmaker_join_player.rs b/sdks/full/rust/src/models/matchmaker_join_player.rs index 198434b8ac..3645390464 100644 --- a/sdks/full/rust/src/models/matchmaker_join_player.rs +++ b/sdks/full/rust/src/models/matchmaker_join_player.rs @@ -4,28 +4,22 @@ * 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 */ /// MatchmakerJoinPlayer : A matchmaker lobby player. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct MatchmakerJoinPlayer { - /// Documentation at https://jwt.io/ - #[serde(rename = "token")] - pub token: String, + /// Documentation at https://jwt.io/ + #[serde(rename = "token")] + pub token: String, } impl MatchmakerJoinPlayer { - /// A matchmaker lobby player. - pub fn new(token: String) -> MatchmakerJoinPlayer { - MatchmakerJoinPlayer { - token, - } - } + /// A matchmaker lobby player. + pub fn new(token: String) -> MatchmakerJoinPlayer { + MatchmakerJoinPlayer { token } + } } - - diff --git a/sdks/full/rust/src/models/matchmaker_join_port.rs b/sdks/full/rust/src/models/matchmaker_join_port.rs index 86e07f170a..cdb1083dd9 100644 --- a/sdks/full/rust/src/models/matchmaker_join_port.rs +++ b/sdks/full/rust/src/models/matchmaker_join_port.rs @@ -4,40 +4,35 @@ * 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 MatchmakerJoinPort { - /// The host for the given port. Will be null if using a port range. - #[serde(rename = "host", skip_serializing_if = "Option::is_none")] - pub host: Option, - #[serde(rename = "hostname")] - pub hostname: String, - /// Whether or not this lobby port uses TLS. You cannot mix a non-TLS and TLS ports. - #[serde(rename = "is_tls")] - pub is_tls: bool, - /// The port number for this lobby. Will be null if using a port range. - #[serde(rename = "port", skip_serializing_if = "Option::is_none")] - pub port: Option, - #[serde(rename = "port_range", skip_serializing_if = "Option::is_none")] - pub port_range: Option>, + /// The host for the given port. Will be null if using a port range. + #[serde(rename = "host", skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(rename = "hostname")] + pub hostname: String, + /// Whether or not this lobby port uses TLS. You cannot mix a non-TLS and TLS ports. + #[serde(rename = "is_tls")] + pub is_tls: bool, + /// The port number for this lobby. Will be null if using a port range. + #[serde(rename = "port", skip_serializing_if = "Option::is_none")] + pub port: Option, + #[serde(rename = "port_range", skip_serializing_if = "Option::is_none")] + pub port_range: Option>, } impl MatchmakerJoinPort { - pub fn new(hostname: String, is_tls: bool) -> MatchmakerJoinPort { - MatchmakerJoinPort { - host: None, - hostname, - is_tls, - port: None, - port_range: None, - } - } + pub fn new(hostname: String, is_tls: bool) -> MatchmakerJoinPort { + MatchmakerJoinPort { + host: None, + hostname, + is_tls, + port: None, + port_range: None, + } + } } - - diff --git a/sdks/full/rust/src/models/matchmaker_join_port_range.rs b/sdks/full/rust/src/models/matchmaker_join_port_range.rs index 5b793d5c52..cf8eb661fb 100644 --- a/sdks/full/rust/src/models/matchmaker_join_port_range.rs +++ b/sdks/full/rust/src/models/matchmaker_join_port_range.rs @@ -4,32 +4,25 @@ * 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 */ /// MatchmakerJoinPortRange : Inclusive range of ports that can be connected to. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct MatchmakerJoinPortRange { - /// Maximum port that can be connected to. Inclusive range. - #[serde(rename = "max")] - pub max: i32, - /// Minimum port that can be connected to. Inclusive range. - #[serde(rename = "min")] - pub min: i32, + /// Maximum port that can be connected to. Inclusive range. + #[serde(rename = "max")] + pub max: i32, + /// Minimum port that can be connected to. Inclusive range. + #[serde(rename = "min")] + pub min: i32, } impl MatchmakerJoinPortRange { - /// Inclusive range of ports that can be connected to. - pub fn new(max: i32, min: i32) -> MatchmakerJoinPortRange { - MatchmakerJoinPortRange { - max, - min, - } - } + /// Inclusive range of ports that can be connected to. + pub fn new(max: i32, min: i32) -> MatchmakerJoinPortRange { + MatchmakerJoinPortRange { max, min } + } } - - diff --git a/sdks/full/rust/src/models/matchmaker_join_region.rs b/sdks/full/rust/src/models/matchmaker_join_region.rs index 7f38d680cf..79f4b2ff46 100644 --- a/sdks/full/rust/src/models/matchmaker_join_region.rs +++ b/sdks/full/rust/src/models/matchmaker_join_region.rs @@ -4,32 +4,28 @@ * 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 */ /// MatchmakerJoinRegion : A matchmaker lobby region. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct MatchmakerJoinRegion { - /// Represent a resource's readable display name. - #[serde(rename = "display_name")] - pub display_name: String, - /// A human readable short identifier used to references resources. Different than a `uuid` because this is intended to be human readable. Different than `DisplayName` because this should not include special characters and be short. - #[serde(rename = "region_id")] - pub region_id: String, + /// Represent a resource's readable display name. + #[serde(rename = "display_name")] + pub display_name: String, + /// A human readable short identifier used to references resources. Different than a `uuid` because this is intended to be human readable. Different than `DisplayName` because this should not include special characters and be short. + #[serde(rename = "region_id")] + pub region_id: String, } impl MatchmakerJoinRegion { - /// A matchmaker lobby region. - pub fn new(display_name: String, region_id: String) -> MatchmakerJoinRegion { - MatchmakerJoinRegion { - display_name, - region_id, - } - } + /// A matchmaker lobby region. + pub fn new(display_name: String, region_id: String) -> MatchmakerJoinRegion { + MatchmakerJoinRegion { + display_name, + region_id, + } + } } - - diff --git a/sdks/full/rust/src/models/matchmaker_list_lobbies_response.rs b/sdks/full/rust/src/models/matchmaker_list_lobbies_response.rs index 181d6b0bd0..3ead5b1d9b 100644 --- a/sdks/full/rust/src/models/matchmaker_list_lobbies_response.rs +++ b/sdks/full/rust/src/models/matchmaker_list_lobbies_response.rs @@ -4,31 +4,30 @@ * 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 MatchmakerListLobbiesResponse { - #[serde(rename = "game_modes")] - pub game_modes: Vec, - #[serde(rename = "lobbies")] - pub lobbies: Vec, - #[serde(rename = "regions")] - pub regions: Vec, + #[serde(rename = "game_modes")] + pub game_modes: Vec, + #[serde(rename = "lobbies")] + pub lobbies: Vec, + #[serde(rename = "regions")] + pub regions: Vec, } impl MatchmakerListLobbiesResponse { - pub fn new(game_modes: Vec, lobbies: Vec, regions: Vec) -> MatchmakerListLobbiesResponse { - MatchmakerListLobbiesResponse { - game_modes, - lobbies, - regions, - } - } + pub fn new( + game_modes: Vec, + lobbies: Vec, + regions: Vec, + ) -> MatchmakerListLobbiesResponse { + MatchmakerListLobbiesResponse { + game_modes, + lobbies, + regions, + } + } } - - diff --git a/sdks/full/rust/src/models/matchmaker_list_regions_response.rs b/sdks/full/rust/src/models/matchmaker_list_regions_response.rs index 07eae13752..c418c2237a 100644 --- a/sdks/full/rust/src/models/matchmaker_list_regions_response.rs +++ b/sdks/full/rust/src/models/matchmaker_list_regions_response.rs @@ -4,25 +4,18 @@ * 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 MatchmakerListRegionsResponse { - #[serde(rename = "regions")] - pub regions: Vec, + #[serde(rename = "regions")] + pub regions: Vec, } impl MatchmakerListRegionsResponse { - pub fn new(regions: Vec) -> MatchmakerListRegionsResponse { - MatchmakerListRegionsResponse { - regions, - } - } + pub fn new(regions: Vec) -> MatchmakerListRegionsResponse { + MatchmakerListRegionsResponse { regions } + } } - - diff --git a/sdks/full/rust/src/models/matchmaker_lobbies_create_request.rs b/sdks/full/rust/src/models/matchmaker_lobbies_create_request.rs index 4a61128a8f..c4b058ecb7 100644 --- a/sdks/full/rust/src/models/matchmaker_lobbies_create_request.rs +++ b/sdks/full/rust/src/models/matchmaker_lobbies_create_request.rs @@ -4,46 +4,51 @@ * 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 MatchmakerLobbiesCreateRequest { - #[serde(rename = "captcha", skip_serializing_if = "Option::is_none")] - pub captcha: Option>, - #[serde(rename = "game_mode")] - pub game_mode: String, - #[serde(rename = "lobby_config", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")] - pub lobby_config: Option>, - #[serde(rename = "max_players", skip_serializing_if = "Option::is_none")] - pub max_players: Option, - #[serde(rename = "publicity", skip_serializing_if = "Option::is_none")] - pub publicity: Option, - #[serde(rename = "region", skip_serializing_if = "Option::is_none")] - pub region: Option, - #[serde(rename = "tags", skip_serializing_if = "Option::is_none")] - pub tags: Option<::std::collections::HashMap>, - #[serde(rename = "verification_data", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")] - pub verification_data: Option>, + #[serde(rename = "captcha", skip_serializing_if = "Option::is_none")] + pub captcha: Option>, + #[serde(rename = "game_mode")] + pub game_mode: String, + #[serde( + rename = "lobby_config", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub lobby_config: Option>, + #[serde(rename = "max_players", skip_serializing_if = "Option::is_none")] + pub max_players: Option, + #[serde(rename = "publicity", skip_serializing_if = "Option::is_none")] + pub publicity: Option, + #[serde(rename = "region", skip_serializing_if = "Option::is_none")] + pub region: Option, + #[serde(rename = "tags", skip_serializing_if = "Option::is_none")] + pub tags: Option<::std::collections::HashMap>, + #[serde( + rename = "verification_data", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub verification_data: Option>, } impl MatchmakerLobbiesCreateRequest { - pub fn new(game_mode: String) -> MatchmakerLobbiesCreateRequest { - MatchmakerLobbiesCreateRequest { - captcha: None, - game_mode, - lobby_config: None, - max_players: None, - publicity: None, - region: None, - tags: None, - verification_data: None, - } - } + pub fn new(game_mode: String) -> MatchmakerLobbiesCreateRequest { + MatchmakerLobbiesCreateRequest { + captcha: None, + game_mode, + lobby_config: None, + max_players: None, + publicity: None, + region: None, + tags: None, + verification_data: None, + } + } } - - diff --git a/sdks/full/rust/src/models/matchmaker_lobbies_find_request.rs b/sdks/full/rust/src/models/matchmaker_lobbies_find_request.rs index 6761c70629..f76487ae22 100644 --- a/sdks/full/rust/src/models/matchmaker_lobbies_find_request.rs +++ b/sdks/full/rust/src/models/matchmaker_lobbies_find_request.rs @@ -4,43 +4,46 @@ * 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 MatchmakerLobbiesFindRequest { - #[serde(rename = "captcha", skip_serializing_if = "Option::is_none")] - pub captcha: Option>, - #[serde(rename = "game_modes")] - pub game_modes: Vec, - #[serde(rename = "max_players", skip_serializing_if = "Option::is_none")] - pub max_players: Option, - #[serde(rename = "prevent_auto_create_lobby", skip_serializing_if = "Option::is_none")] - pub prevent_auto_create_lobby: Option, - #[serde(rename = "regions", skip_serializing_if = "Option::is_none")] - pub regions: Option>, - #[serde(rename = "tags", skip_serializing_if = "Option::is_none")] - pub tags: Option<::std::collections::HashMap>, - #[serde(rename = "verification_data", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")] - pub verification_data: Option>, + #[serde(rename = "captcha", skip_serializing_if = "Option::is_none")] + pub captcha: Option>, + #[serde(rename = "game_modes")] + pub game_modes: Vec, + #[serde(rename = "max_players", skip_serializing_if = "Option::is_none")] + pub max_players: Option, + #[serde( + rename = "prevent_auto_create_lobby", + skip_serializing_if = "Option::is_none" + )] + pub prevent_auto_create_lobby: Option, + #[serde(rename = "regions", skip_serializing_if = "Option::is_none")] + pub regions: Option>, + #[serde(rename = "tags", skip_serializing_if = "Option::is_none")] + pub tags: Option<::std::collections::HashMap>, + #[serde( + rename = "verification_data", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub verification_data: Option>, } impl MatchmakerLobbiesFindRequest { - pub fn new(game_modes: Vec) -> MatchmakerLobbiesFindRequest { - MatchmakerLobbiesFindRequest { - captcha: None, - game_modes, - max_players: None, - prevent_auto_create_lobby: None, - regions: None, - tags: None, - verification_data: None, - } - } + pub fn new(game_modes: Vec) -> MatchmakerLobbiesFindRequest { + MatchmakerLobbiesFindRequest { + captcha: None, + game_modes, + max_players: None, + prevent_auto_create_lobby: None, + regions: None, + tags: None, + verification_data: None, + } + } } - - diff --git a/sdks/full/rust/src/models/matchmaker_lobbies_join_request.rs b/sdks/full/rust/src/models/matchmaker_lobbies_join_request.rs index 6f622e00a1..f029003f63 100644 --- a/sdks/full/rust/src/models/matchmaker_lobbies_join_request.rs +++ b/sdks/full/rust/src/models/matchmaker_lobbies_join_request.rs @@ -4,31 +4,31 @@ * 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 MatchmakerLobbiesJoinRequest { - #[serde(rename = "captcha", skip_serializing_if = "Option::is_none")] - pub captcha: Option>, - #[serde(rename = "lobby_id")] - pub lobby_id: String, - #[serde(rename = "verification_data", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")] - pub verification_data: Option>, + #[serde(rename = "captcha", skip_serializing_if = "Option::is_none")] + pub captcha: Option>, + #[serde(rename = "lobby_id")] + pub lobby_id: String, + #[serde( + rename = "verification_data", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub verification_data: Option>, } impl MatchmakerLobbiesJoinRequest { - pub fn new(lobby_id: String) -> MatchmakerLobbiesJoinRequest { - MatchmakerLobbiesJoinRequest { - captcha: None, - lobby_id, - verification_data: None, - } - } + pub fn new(lobby_id: String) -> MatchmakerLobbiesJoinRequest { + MatchmakerLobbiesJoinRequest { + captcha: None, + lobby_id, + verification_data: None, + } + } } - - diff --git a/sdks/full/rust/src/models/matchmaker_lobbies_set_closed_request.rs b/sdks/full/rust/src/models/matchmaker_lobbies_set_closed_request.rs index 32b2a4cfe2..196665e468 100644 --- a/sdks/full/rust/src/models/matchmaker_lobbies_set_closed_request.rs +++ b/sdks/full/rust/src/models/matchmaker_lobbies_set_closed_request.rs @@ -4,25 +4,18 @@ * 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 MatchmakerLobbiesSetClosedRequest { - #[serde(rename = "is_closed")] - pub is_closed: bool, + #[serde(rename = "is_closed")] + pub is_closed: bool, } impl MatchmakerLobbiesSetClosedRequest { - pub fn new(is_closed: bool) -> MatchmakerLobbiesSetClosedRequest { - MatchmakerLobbiesSetClosedRequest { - is_closed, - } - } + pub fn new(is_closed: bool) -> MatchmakerLobbiesSetClosedRequest { + MatchmakerLobbiesSetClosedRequest { is_closed } + } } - - diff --git a/sdks/full/rust/src/models/matchmaker_lobby_info.rs b/sdks/full/rust/src/models/matchmaker_lobby_info.rs index bdae0cba81..a8b03ff8c7 100644 --- a/sdks/full/rust/src/models/matchmaker_lobby_info.rs +++ b/sdks/full/rust/src/models/matchmaker_lobby_info.rs @@ -4,48 +4,57 @@ * 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 */ /// MatchmakerLobbyInfo : A public lobby in the lobby list. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct MatchmakerLobbyInfo { - #[serde(rename = "game_mode_id")] - pub game_mode_id: String, - #[serde(rename = "lobby_id")] - pub lobby_id: uuid::Uuid, - #[serde(rename = "max_players_direct")] - pub max_players_direct: i32, - #[serde(rename = "max_players_normal")] - pub max_players_normal: i32, - #[serde(rename = "max_players_party")] - pub max_players_party: i32, - #[serde(rename = "region_id")] - pub region_id: String, - #[serde(rename = "state", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")] - pub state: Option>, - #[serde(rename = "total_player_count")] - pub total_player_count: i32, + #[serde(rename = "game_mode_id")] + pub game_mode_id: String, + #[serde(rename = "lobby_id")] + pub lobby_id: uuid::Uuid, + #[serde(rename = "max_players_direct")] + pub max_players_direct: i32, + #[serde(rename = "max_players_normal")] + pub max_players_normal: i32, + #[serde(rename = "max_players_party")] + pub max_players_party: i32, + #[serde(rename = "region_id")] + pub region_id: String, + #[serde( + rename = "state", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub state: Option>, + #[serde(rename = "total_player_count")] + pub total_player_count: i32, } impl MatchmakerLobbyInfo { - /// A public lobby in the lobby list. - pub fn new(game_mode_id: String, lobby_id: uuid::Uuid, max_players_direct: i32, max_players_normal: i32, max_players_party: i32, region_id: String, total_player_count: i32) -> MatchmakerLobbyInfo { - MatchmakerLobbyInfo { - game_mode_id, - lobby_id, - max_players_direct, - max_players_normal, - max_players_party, - region_id, - state: None, - total_player_count, - } - } + /// A public lobby in the lobby list. + pub fn new( + game_mode_id: String, + lobby_id: uuid::Uuid, + max_players_direct: i32, + max_players_normal: i32, + max_players_party: i32, + region_id: String, + total_player_count: i32, + ) -> MatchmakerLobbyInfo { + MatchmakerLobbyInfo { + game_mode_id, + lobby_id, + max_players_direct, + max_players_normal, + max_players_party, + region_id, + state: None, + total_player_count, + } + } } - - diff --git a/sdks/full/rust/src/models/matchmaker_players_connected_request.rs b/sdks/full/rust/src/models/matchmaker_players_connected_request.rs index c5de54c33c..00930513c4 100644 --- a/sdks/full/rust/src/models/matchmaker_players_connected_request.rs +++ b/sdks/full/rust/src/models/matchmaker_players_connected_request.rs @@ -4,25 +4,18 @@ * 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 MatchmakerPlayersConnectedRequest { - #[serde(rename = "player_token")] - pub player_token: String, + #[serde(rename = "player_token")] + pub player_token: String, } impl MatchmakerPlayersConnectedRequest { - pub fn new(player_token: String) -> MatchmakerPlayersConnectedRequest { - MatchmakerPlayersConnectedRequest { - player_token, - } - } + pub fn new(player_token: String) -> MatchmakerPlayersConnectedRequest { + MatchmakerPlayersConnectedRequest { player_token } + } } - - diff --git a/sdks/full/rust/src/models/matchmaker_region_info.rs b/sdks/full/rust/src/models/matchmaker_region_info.rs index ed5df899d6..6329a0d4b3 100644 --- a/sdks/full/rust/src/models/matchmaker_region_info.rs +++ b/sdks/full/rust/src/models/matchmaker_region_info.rs @@ -4,42 +4,44 @@ * 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 */ /// MatchmakerRegionInfo : A region that the player can connect to. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct MatchmakerRegionInfo { - #[serde(rename = "datacenter_coord")] - pub datacenter_coord: Box, - #[serde(rename = "datacenter_distance_from_client")] - pub datacenter_distance_from_client: Box, - /// Represent a resource's readable display name. - #[serde(rename = "provider_display_name")] - pub provider_display_name: String, - /// Represent a resource's readable display name. - #[serde(rename = "region_display_name")] - pub region_display_name: String, - /// A human readable short identifier used to references resources. Different than a `uuid` because this is intended to be human readable. Different than `DisplayName` because this should not include special characters and be short. - #[serde(rename = "region_id")] - pub region_id: String, + #[serde(rename = "datacenter_coord")] + pub datacenter_coord: Box, + #[serde(rename = "datacenter_distance_from_client")] + pub datacenter_distance_from_client: Box, + /// Represent a resource's readable display name. + #[serde(rename = "provider_display_name")] + pub provider_display_name: String, + /// Represent a resource's readable display name. + #[serde(rename = "region_display_name")] + pub region_display_name: String, + /// A human readable short identifier used to references resources. Different than a `uuid` because this is intended to be human readable. Different than `DisplayName` because this should not include special characters and be short. + #[serde(rename = "region_id")] + pub region_id: String, } impl MatchmakerRegionInfo { - /// A region that the player can connect to. - pub fn new(datacenter_coord: crate::models::GeoCoord, datacenter_distance_from_client: crate::models::GeoDistance, provider_display_name: String, region_display_name: String, region_id: String) -> MatchmakerRegionInfo { - MatchmakerRegionInfo { - datacenter_coord: Box::new(datacenter_coord), - datacenter_distance_from_client: Box::new(datacenter_distance_from_client), - provider_display_name, - region_display_name, - region_id, - } - } + /// A region that the player can connect to. + pub fn new( + datacenter_coord: crate::models::GeoCoord, + datacenter_distance_from_client: crate::models::GeoDistance, + provider_display_name: String, + region_display_name: String, + region_id: String, + ) -> MatchmakerRegionInfo { + MatchmakerRegionInfo { + datacenter_coord: Box::new(datacenter_coord), + datacenter_distance_from_client: Box::new(datacenter_distance_from_client), + provider_display_name, + region_display_name, + region_id, + } + } } - - diff --git a/sdks/full/rust/src/models/matchmaker_region_statistics.rs b/sdks/full/rust/src/models/matchmaker_region_statistics.rs index 1f213d2419..b98695d5c1 100644 --- a/sdks/full/rust/src/models/matchmaker_region_statistics.rs +++ b/sdks/full/rust/src/models/matchmaker_region_statistics.rs @@ -4,25 +4,18 @@ * 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 MatchmakerRegionStatistics { - #[serde(rename = "player_count")] - pub player_count: i64, + #[serde(rename = "player_count")] + pub player_count: i64, } impl MatchmakerRegionStatistics { - pub fn new(player_count: i64) -> MatchmakerRegionStatistics { - MatchmakerRegionStatistics { - player_count, - } - } + pub fn new(player_count: i64) -> MatchmakerRegionStatistics { + MatchmakerRegionStatistics { player_count } + } } - - diff --git a/sdks/full/rust/src/models/portal_get_game_profile_response.rs b/sdks/full/rust/src/models/portal_get_game_profile_response.rs index 956b0da212..8e42244a81 100644 --- a/sdks/full/rust/src/models/portal_get_game_profile_response.rs +++ b/sdks/full/rust/src/models/portal_get_game_profile_response.rs @@ -4,28 +4,26 @@ * 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 PortalGetGameProfileResponse { - #[serde(rename = "game")] - pub game: Box, - #[serde(rename = "watch")] - pub watch: Box, + #[serde(rename = "game")] + pub game: Box, + #[serde(rename = "watch")] + pub watch: Box, } impl PortalGetGameProfileResponse { - pub fn new(game: crate::models::GameProfile, watch: crate::models::WatchResponse) -> PortalGetGameProfileResponse { - PortalGetGameProfileResponse { - game: Box::new(game), - watch: Box::new(watch), - } - } + pub fn new( + game: crate::models::GameProfile, + watch: crate::models::WatchResponse, + ) -> PortalGetGameProfileResponse { + PortalGetGameProfileResponse { + game: Box::new(game), + watch: Box::new(watch), + } + } } - - diff --git a/sdks/full/rust/src/models/portal_get_suggested_games_response.rs b/sdks/full/rust/src/models/portal_get_suggested_games_response.rs index a663aeaac5..f3eaad952a 100644 --- a/sdks/full/rust/src/models/portal_get_suggested_games_response.rs +++ b/sdks/full/rust/src/models/portal_get_suggested_games_response.rs @@ -4,29 +4,27 @@ * 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 PortalGetSuggestedGamesResponse { - /// A list of game summaries. - #[serde(rename = "games")] - pub games: Vec, - #[serde(rename = "watch")] - pub watch: Box, + /// A list of game summaries. + #[serde(rename = "games")] + pub games: Vec, + #[serde(rename = "watch")] + pub watch: Box, } impl PortalGetSuggestedGamesResponse { - pub fn new(games: Vec, watch: crate::models::WatchResponse) -> PortalGetSuggestedGamesResponse { - PortalGetSuggestedGamesResponse { - games, - watch: Box::new(watch), - } - } + pub fn new( + games: Vec, + watch: crate::models::WatchResponse, + ) -> PortalGetSuggestedGamesResponse { + PortalGetSuggestedGamesResponse { + games, + watch: Box::new(watch), + } + } } - - diff --git a/sdks/full/rust/src/models/portal_notification_register_firebase_service.rs b/sdks/full/rust/src/models/portal_notification_register_firebase_service.rs index 213357992e..89005a210b 100644 --- a/sdks/full/rust/src/models/portal_notification_register_firebase_service.rs +++ b/sdks/full/rust/src/models/portal_notification_register_firebase_service.rs @@ -4,25 +4,18 @@ * 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 PortalNotificationRegisterFirebaseService { - #[serde(rename = "access_key")] - pub access_key: String, + #[serde(rename = "access_key")] + pub access_key: String, } impl PortalNotificationRegisterFirebaseService { - pub fn new(access_key: String) -> PortalNotificationRegisterFirebaseService { - PortalNotificationRegisterFirebaseService { - access_key, - } - } + pub fn new(access_key: String) -> PortalNotificationRegisterFirebaseService { + PortalNotificationRegisterFirebaseService { access_key } + } } - - diff --git a/sdks/full/rust/src/models/portal_notification_register_service.rs b/sdks/full/rust/src/models/portal_notification_register_service.rs index 1058fd743b..e9232ea5ec 100644 --- a/sdks/full/rust/src/models/portal_notification_register_service.rs +++ b/sdks/full/rust/src/models/portal_notification_register_service.rs @@ -4,25 +4,18 @@ * 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 PortalNotificationRegisterService { - #[serde(rename = "firebase", skip_serializing_if = "Option::is_none")] - pub firebase: Option>, + #[serde(rename = "firebase", skip_serializing_if = "Option::is_none")] + pub firebase: Option>, } impl PortalNotificationRegisterService { - pub fn new() -> PortalNotificationRegisterService { - PortalNotificationRegisterService { - firebase: None, - } - } + pub fn new() -> PortalNotificationRegisterService { + PortalNotificationRegisterService { firebase: None } + } } - - diff --git a/sdks/full/rust/src/models/portal_notification_unregister_service.rs b/sdks/full/rust/src/models/portal_notification_unregister_service.rs index d4bda04c73..f7d60722c9 100644 --- a/sdks/full/rust/src/models/portal_notification_unregister_service.rs +++ b/sdks/full/rust/src/models/portal_notification_unregister_service.rs @@ -4,33 +4,27 @@ * 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 PortalNotificationUnregisterService { - #[serde(rename = "firebase")] - Firebase, - + #[serde(rename = "firebase")] + Firebase, } impl ToString for PortalNotificationUnregisterService { - fn to_string(&self) -> String { - match self { - Self::Firebase => String::from("firebase"), - } - } + fn to_string(&self) -> String { + match self { + Self::Firebase => String::from("firebase"), + } + } } impl Default for PortalNotificationUnregisterService { - fn default() -> PortalNotificationUnregisterService { - Self::Firebase - } + fn default() -> PortalNotificationUnregisterService { + Self::Firebase + } } - - - - diff --git a/sdks/full/rust/src/models/provision_datacenters_get_tls_response.rs b/sdks/full/rust/src/models/provision_datacenters_get_tls_response.rs index a2039a21ba..c74afabfb0 100644 --- a/sdks/full/rust/src/models/provision_datacenters_get_tls_response.rs +++ b/sdks/full/rust/src/models/provision_datacenters_get_tls_response.rs @@ -4,28 +4,26 @@ * 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 ProvisionDatacentersGetTlsResponse { - #[serde(rename = "job_cert_pem")] - pub job_cert_pem: String, - #[serde(rename = "job_private_key_pem")] - pub job_private_key_pem: String, + #[serde(rename = "job_cert_pem")] + pub job_cert_pem: String, + #[serde(rename = "job_private_key_pem")] + pub job_private_key_pem: String, } impl ProvisionDatacentersGetTlsResponse { - pub fn new(job_cert_pem: String, job_private_key_pem: String) -> ProvisionDatacentersGetTlsResponse { - ProvisionDatacentersGetTlsResponse { - job_cert_pem, - job_private_key_pem, - } - } + pub fn new( + job_cert_pem: String, + job_private_key_pem: String, + ) -> ProvisionDatacentersGetTlsResponse { + ProvisionDatacentersGetTlsResponse { + job_cert_pem, + job_private_key_pem, + } + } } - - diff --git a/sdks/full/rust/src/models/provision_servers_get_info_response.rs b/sdks/full/rust/src/models/provision_servers_get_info_response.rs index 7c7048be3d..a328594c55 100644 --- a/sdks/full/rust/src/models/provision_servers_get_info_response.rs +++ b/sdks/full/rust/src/models/provision_servers_get_info_response.rs @@ -4,40 +4,42 @@ * 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 ProvisionServersGetInfoResponse { - #[serde(rename = "cluster_id")] - pub cluster_id: uuid::Uuid, - #[serde(rename = "datacenter_id")] - pub datacenter_id: uuid::Uuid, - #[serde(rename = "name")] - pub name: String, - #[serde(rename = "public_ip")] - pub public_ip: String, - #[serde(rename = "server_id")] - pub server_id: uuid::Uuid, - #[serde(rename = "vlan_ip")] - pub vlan_ip: String, + #[serde(rename = "cluster_id")] + pub cluster_id: uuid::Uuid, + #[serde(rename = "datacenter_id")] + pub datacenter_id: uuid::Uuid, + #[serde(rename = "name")] + pub name: String, + #[serde(rename = "public_ip")] + pub public_ip: String, + #[serde(rename = "server_id")] + pub server_id: uuid::Uuid, + #[serde(rename = "vlan_ip")] + pub vlan_ip: String, } impl ProvisionServersGetInfoResponse { - pub fn new(cluster_id: uuid::Uuid, datacenter_id: uuid::Uuid, name: String, public_ip: String, server_id: uuid::Uuid, vlan_ip: String) -> ProvisionServersGetInfoResponse { - ProvisionServersGetInfoResponse { - cluster_id, - datacenter_id, - name, - public_ip, - server_id, - vlan_ip, - } - } + pub fn new( + cluster_id: uuid::Uuid, + datacenter_id: uuid::Uuid, + name: String, + public_ip: String, + server_id: uuid::Uuid, + vlan_ip: String, + ) -> ProvisionServersGetInfoResponse { + ProvisionServersGetInfoResponse { + cluster_id, + datacenter_id, + name, + public_ip, + server_id, + vlan_ip, + } + } } - - diff --git a/sdks/full/rust/src/models/servers_build.rs b/sdks/full/rust/src/models/servers_build.rs index fdd8d54e66..fb591dbeb5 100644 --- a/sdks/full/rust/src/models/servers_build.rs +++ b/sdks/full/rust/src/models/servers_build.rs @@ -4,40 +4,41 @@ * 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 ServersBuild { - /// Unsigned 64 bit integer. - #[serde(rename = "content_length")] - pub content_length: i64, - /// RFC3339 timestamp - #[serde(rename = "created_at")] - pub created_at: String, - #[serde(rename = "id")] - pub id: uuid::Uuid, - #[serde(rename = "name")] - pub name: String, - /// Tags of this build - #[serde(rename = "tags")] - pub tags: ::std::collections::HashMap, + /// Unsigned 64 bit integer. + #[serde(rename = "content_length")] + pub content_length: i64, + /// RFC3339 timestamp + #[serde(rename = "created_at")] + pub created_at: String, + #[serde(rename = "id")] + pub id: uuid::Uuid, + #[serde(rename = "name")] + pub name: String, + /// Tags of this build + #[serde(rename = "tags")] + pub tags: ::std::collections::HashMap, } impl ServersBuild { - pub fn new(content_length: i64, created_at: String, id: uuid::Uuid, name: String, tags: ::std::collections::HashMap) -> ServersBuild { - ServersBuild { - content_length, - created_at, - id, - name, - tags, - } - } + pub fn new( + content_length: i64, + created_at: String, + id: uuid::Uuid, + name: String, + tags: ::std::collections::HashMap, + ) -> ServersBuild { + ServersBuild { + content_length, + created_at, + id, + name, + tags, + } + } } - - diff --git a/sdks/full/rust/src/models/servers_build_compression.rs b/sdks/full/rust/src/models/servers_build_compression.rs index fd549d6279..ab301d44e2 100644 --- a/sdks/full/rust/src/models/servers_build_compression.rs +++ b/sdks/full/rust/src/models/servers_build_compression.rs @@ -4,36 +4,30 @@ * 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 ServersBuildCompression { - #[serde(rename = "none")] - None, - #[serde(rename = "lz4")] - Lz4, - + #[serde(rename = "none")] + None, + #[serde(rename = "lz4")] + Lz4, } impl ToString for ServersBuildCompression { - fn to_string(&self) -> String { - match self { - Self::None => String::from("none"), - Self::Lz4 => String::from("lz4"), - } - } + fn to_string(&self) -> String { + match self { + Self::None => String::from("none"), + Self::Lz4 => String::from("lz4"), + } + } } impl Default for ServersBuildCompression { - fn default() -> ServersBuildCompression { - Self::None - } + fn default() -> ServersBuildCompression { + Self::None + } } - - - - diff --git a/sdks/full/rust/src/models/servers_build_kind.rs b/sdks/full/rust/src/models/servers_build_kind.rs index 853abbb0e7..e79562ffe6 100644 --- a/sdks/full/rust/src/models/servers_build_kind.rs +++ b/sdks/full/rust/src/models/servers_build_kind.rs @@ -4,36 +4,30 @@ * 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 ServersBuildKind { - #[serde(rename = "docker_image")] - DockerImage, - #[serde(rename = "oci_bundle")] - OciBundle, - + #[serde(rename = "docker_image")] + DockerImage, + #[serde(rename = "oci_bundle")] + OciBundle, } impl ToString for ServersBuildKind { - fn to_string(&self) -> String { - match self { - Self::DockerImage => String::from("docker_image"), - Self::OciBundle => String::from("oci_bundle"), - } - } + fn to_string(&self) -> String { + match self { + Self::DockerImage => String::from("docker_image"), + Self::OciBundle => String::from("oci_bundle"), + } + } } impl Default for ServersBuildKind { - fn default() -> ServersBuildKind { - Self::DockerImage - } + fn default() -> ServersBuildKind { + Self::DockerImage + } } - - - - diff --git a/sdks/full/rust/src/models/servers_create_build_request.rs b/sdks/full/rust/src/models/servers_create_build_request.rs index eb128a33f3..d0d067ca91 100644 --- a/sdks/full/rust/src/models/servers_create_build_request.rs +++ b/sdks/full/rust/src/models/servers_create_build_request.rs @@ -4,44 +4,46 @@ * 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 ServersCreateBuildRequest { - #[serde(rename = "compression", skip_serializing_if = "Option::is_none")] - pub compression: Option, - #[serde(rename = "image_file")] - pub image_file: Box, - /// A tag given to the game build. - #[serde(rename = "image_tag")] - pub image_tag: String, - #[serde(rename = "kind", skip_serializing_if = "Option::is_none")] - pub kind: Option, - #[serde(rename = "multipart_upload", skip_serializing_if = "Option::is_none")] - pub multipart_upload: Option, - #[serde(rename = "name")] - pub name: String, - #[serde(rename = "prewarm_datacenters", skip_serializing_if = "Option::is_none")] - pub prewarm_datacenters: Option>, + #[serde(rename = "compression", skip_serializing_if = "Option::is_none")] + pub compression: Option, + #[serde(rename = "image_file")] + pub image_file: Box, + /// A tag given to the game build. + #[serde(rename = "image_tag")] + pub image_tag: String, + #[serde(rename = "kind", skip_serializing_if = "Option::is_none")] + pub kind: Option, + #[serde(rename = "multipart_upload", skip_serializing_if = "Option::is_none")] + pub multipart_upload: Option, + #[serde(rename = "name")] + pub name: String, + #[serde( + rename = "prewarm_datacenters", + skip_serializing_if = "Option::is_none" + )] + pub prewarm_datacenters: Option>, } impl ServersCreateBuildRequest { - pub fn new(image_file: crate::models::UploadPrepareFile, image_tag: String, name: String) -> ServersCreateBuildRequest { - ServersCreateBuildRequest { - compression: None, - image_file: Box::new(image_file), - image_tag, - kind: None, - multipart_upload: None, - name, - prewarm_datacenters: None, - } - } + pub fn new( + image_file: crate::models::UploadPrepareFile, + image_tag: String, + name: String, + ) -> ServersCreateBuildRequest { + ServersCreateBuildRequest { + compression: None, + image_file: Box::new(image_file), + image_tag, + kind: None, + multipart_upload: None, + name, + prewarm_datacenters: None, + } + } } - - diff --git a/sdks/full/rust/src/models/servers_create_build_response.rs b/sdks/full/rust/src/models/servers_create_build_response.rs index c277171564..ef947a0bd9 100644 --- a/sdks/full/rust/src/models/servers_create_build_response.rs +++ b/sdks/full/rust/src/models/servers_create_build_response.rs @@ -4,31 +4,32 @@ * 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 ServersCreateBuildResponse { - #[serde(rename = "build")] - pub build: uuid::Uuid, - #[serde(rename = "image_presigned_request", skip_serializing_if = "Option::is_none")] - pub image_presigned_request: Option>, - #[serde(rename = "image_presigned_requests", skip_serializing_if = "Option::is_none")] - pub image_presigned_requests: Option>, + #[serde(rename = "build")] + pub build: uuid::Uuid, + #[serde( + rename = "image_presigned_request", + skip_serializing_if = "Option::is_none" + )] + pub image_presigned_request: Option>, + #[serde( + rename = "image_presigned_requests", + skip_serializing_if = "Option::is_none" + )] + pub image_presigned_requests: Option>, } impl ServersCreateBuildResponse { - pub fn new(build: uuid::Uuid) -> ServersCreateBuildResponse { - ServersCreateBuildResponse { - build, - image_presigned_request: None, - image_presigned_requests: None, - } - } + pub fn new(build: uuid::Uuid) -> ServersCreateBuildResponse { + ServersCreateBuildResponse { + build, + image_presigned_request: None, + image_presigned_requests: None, + } + } } - - diff --git a/sdks/full/rust/src/models/servers_create_server_network_request.rs b/sdks/full/rust/src/models/servers_create_server_network_request.rs index d469cc181d..78756844c5 100644 --- a/sdks/full/rust/src/models/servers_create_server_network_request.rs +++ b/sdks/full/rust/src/models/servers_create_server_network_request.rs @@ -4,28 +4,22 @@ * 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 ServersCreateServerNetworkRequest { - #[serde(rename = "mode", skip_serializing_if = "Option::is_none")] - pub mode: Option, - #[serde(rename = "ports")] - pub ports: ::std::collections::HashMap, + #[serde(rename = "mode", skip_serializing_if = "Option::is_none")] + pub mode: Option, + #[serde(rename = "ports")] + pub ports: ::std::collections::HashMap, } impl ServersCreateServerNetworkRequest { - pub fn new(ports: ::std::collections::HashMap) -> ServersCreateServerNetworkRequest { - ServersCreateServerNetworkRequest { - mode: None, - ports, - } - } + pub fn new( + ports: ::std::collections::HashMap, + ) -> ServersCreateServerNetworkRequest { + ServersCreateServerNetworkRequest { mode: None, ports } + } } - - diff --git a/sdks/full/rust/src/models/servers_create_server_port_request.rs b/sdks/full/rust/src/models/servers_create_server_port_request.rs index d818685f71..c11370436b 100644 --- a/sdks/full/rust/src/models/servers_create_server_port_request.rs +++ b/sdks/full/rust/src/models/servers_create_server_port_request.rs @@ -4,31 +4,26 @@ * 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 ServersCreateServerPortRequest { - #[serde(rename = "internal_port", skip_serializing_if = "Option::is_none")] - pub internal_port: Option, - #[serde(rename = "protocol")] - pub protocol: crate::models::ServersPortProtocol, - #[serde(rename = "routing", skip_serializing_if = "Option::is_none")] - pub routing: Option>, + #[serde(rename = "internal_port", skip_serializing_if = "Option::is_none")] + pub internal_port: Option, + #[serde(rename = "protocol")] + pub protocol: crate::models::ServersPortProtocol, + #[serde(rename = "routing", skip_serializing_if = "Option::is_none")] + pub routing: Option>, } impl ServersCreateServerPortRequest { - pub fn new(protocol: crate::models::ServersPortProtocol) -> ServersCreateServerPortRequest { - ServersCreateServerPortRequest { - internal_port: None, - protocol, - routing: None, - } - } + pub fn new(protocol: crate::models::ServersPortProtocol) -> ServersCreateServerPortRequest { + ServersCreateServerPortRequest { + internal_port: None, + protocol, + routing: None, + } + } } - - diff --git a/sdks/full/rust/src/models/servers_create_server_request.rs b/sdks/full/rust/src/models/servers_create_server_request.rs index 84c0f99936..bf213b3ca6 100644 --- a/sdks/full/rust/src/models/servers_create_server_request.rs +++ b/sdks/full/rust/src/models/servers_create_server_request.rs @@ -4,40 +4,41 @@ * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) * * The version of the OpenAPI document: 0.0.1 - * + * * Generated by: https://openapi-generator.tech */ - - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct ServersCreateServerRequest { - #[serde(rename = "datacenter")] - pub datacenter: uuid::Uuid, - #[serde(rename = "lifecycle", skip_serializing_if = "Option::is_none")] - pub lifecycle: Option>, - #[serde(rename = "network")] - pub network: Box, - #[serde(rename = "resources")] - pub resources: Box, - #[serde(rename = "runtime")] - pub runtime: Box, - #[serde(rename = "tags", deserialize_with = "Option::deserialize")] - pub tags: Option, + #[serde(rename = "datacenter")] + pub datacenter: uuid::Uuid, + #[serde(rename = "lifecycle", skip_serializing_if = "Option::is_none")] + pub lifecycle: Option>, + #[serde(rename = "network")] + pub network: Box, + #[serde(rename = "resources")] + pub resources: Box, + #[serde(rename = "runtime")] + pub runtime: Box, + #[serde(rename = "tags", deserialize_with = "Option::deserialize")] + pub tags: Option, } impl ServersCreateServerRequest { - pub fn new(datacenter: uuid::Uuid, network: crate::models::ServersCreateServerNetworkRequest, resources: crate::models::ServersResources, runtime: crate::models::ServersCreateServerRuntimeRequest, tags: Option) -> ServersCreateServerRequest { - ServersCreateServerRequest { - datacenter, - lifecycle: None, - network: Box::new(network), - resources: Box::new(resources), - runtime: Box::new(runtime), - tags, - } - } + pub fn new( + datacenter: uuid::Uuid, + network: crate::models::ServersCreateServerNetworkRequest, + resources: crate::models::ServersResources, + runtime: crate::models::ServersCreateServerRuntimeRequest, + tags: Option, + ) -> ServersCreateServerRequest { + ServersCreateServerRequest { + datacenter, + lifecycle: None, + network: Box::new(network), + resources: Box::new(resources), + runtime: Box::new(runtime), + tags, + } + } } - - diff --git a/sdks/full/rust/src/models/servers_create_server_response.rs b/sdks/full/rust/src/models/servers_create_server_response.rs index 3c32cbd896..b26f499470 100644 --- a/sdks/full/rust/src/models/servers_create_server_response.rs +++ b/sdks/full/rust/src/models/servers_create_server_response.rs @@ -4,25 +4,20 @@ * 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 ServersCreateServerResponse { - #[serde(rename = "server")] - pub server: Box, + #[serde(rename = "server")] + pub server: Box, } impl ServersCreateServerResponse { - pub fn new(server: crate::models::ServersServer) -> ServersCreateServerResponse { - ServersCreateServerResponse { - server: Box::new(server), - } - } + pub fn new(server: crate::models::ServersServer) -> ServersCreateServerResponse { + ServersCreateServerResponse { + server: Box::new(server), + } + } } - - diff --git a/sdks/full/rust/src/models/servers_create_server_runtime_request.rs b/sdks/full/rust/src/models/servers_create_server_runtime_request.rs index 11f4647cf9..4485959944 100644 --- a/sdks/full/rust/src/models/servers_create_server_runtime_request.rs +++ b/sdks/full/rust/src/models/servers_create_server_runtime_request.rs @@ -4,31 +4,26 @@ * 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 ServersCreateServerRuntimeRequest { - #[serde(rename = "arguments", skip_serializing_if = "Option::is_none")] - pub arguments: Option>, - #[serde(rename = "build")] - pub build: uuid::Uuid, - #[serde(rename = "environment", skip_serializing_if = "Option::is_none")] - pub environment: Option<::std::collections::HashMap>, + #[serde(rename = "arguments", skip_serializing_if = "Option::is_none")] + pub arguments: Option>, + #[serde(rename = "build")] + pub build: uuid::Uuid, + #[serde(rename = "environment", skip_serializing_if = "Option::is_none")] + pub environment: Option<::std::collections::HashMap>, } impl ServersCreateServerRuntimeRequest { - pub fn new(build: uuid::Uuid) -> ServersCreateServerRuntimeRequest { - ServersCreateServerRuntimeRequest { - arguments: None, - build, - environment: None, - } - } + pub fn new(build: uuid::Uuid) -> ServersCreateServerRuntimeRequest { + ServersCreateServerRuntimeRequest { + arguments: None, + build, + environment: None, + } + } } - - diff --git a/sdks/full/rust/src/models/servers_datacenter.rs b/sdks/full/rust/src/models/servers_datacenter.rs index b267b68a6e..12af6dabf7 100644 --- a/sdks/full/rust/src/models/servers_datacenter.rs +++ b/sdks/full/rust/src/models/servers_datacenter.rs @@ -4,31 +4,22 @@ * 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 ServersDatacenter { - #[serde(rename = "id")] - pub id: uuid::Uuid, - #[serde(rename = "name")] - pub name: String, - #[serde(rename = "slug")] - pub slug: String, + #[serde(rename = "id")] + pub id: uuid::Uuid, + #[serde(rename = "name")] + pub name: String, + #[serde(rename = "slug")] + pub slug: String, } impl ServersDatacenter { - pub fn new(id: uuid::Uuid, name: String, slug: String) -> ServersDatacenter { - ServersDatacenter { - id, - name, - slug, - } - } + pub fn new(id: uuid::Uuid, name: String, slug: String) -> ServersDatacenter { + ServersDatacenter { id, name, slug } + } } - - diff --git a/sdks/full/rust/src/models/servers_get_build_response.rs b/sdks/full/rust/src/models/servers_get_build_response.rs index 25515b9332..65ac964d73 100644 --- a/sdks/full/rust/src/models/servers_get_build_response.rs +++ b/sdks/full/rust/src/models/servers_get_build_response.rs @@ -4,25 +4,20 @@ * 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 ServersGetBuildResponse { - #[serde(rename = "build")] - pub build: Box, + #[serde(rename = "build")] + pub build: Box, } impl ServersGetBuildResponse { - pub fn new(build: crate::models::ServersBuild) -> ServersGetBuildResponse { - ServersGetBuildResponse { - build: Box::new(build), - } - } + pub fn new(build: crate::models::ServersBuild) -> ServersGetBuildResponse { + ServersGetBuildResponse { + build: Box::new(build), + } + } } - - diff --git a/sdks/full/rust/src/models/servers_get_server_logs_response.rs b/sdks/full/rust/src/models/servers_get_server_logs_response.rs index dd6df5a770..df3bc16c0c 100644 --- a/sdks/full/rust/src/models/servers_get_server_logs_response.rs +++ b/sdks/full/rust/src/models/servers_get_server_logs_response.rs @@ -4,33 +4,32 @@ * 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 ServersGetServerLogsResponse { - /// Sorted old to new. - #[serde(rename = "lines")] - pub lines: Vec, - /// Sorted old to new. - #[serde(rename = "timestamps")] - pub timestamps: Vec, - #[serde(rename = "watch")] - pub watch: Box, + /// Sorted old to new. + #[serde(rename = "lines")] + pub lines: Vec, + /// Sorted old to new. + #[serde(rename = "timestamps")] + pub timestamps: Vec, + #[serde(rename = "watch")] + pub watch: Box, } impl ServersGetServerLogsResponse { - pub fn new(lines: Vec, timestamps: Vec, watch: crate::models::WatchResponse) -> ServersGetServerLogsResponse { - ServersGetServerLogsResponse { - lines, - timestamps, - watch: Box::new(watch), - } - } + pub fn new( + lines: Vec, + timestamps: Vec, + watch: crate::models::WatchResponse, + ) -> ServersGetServerLogsResponse { + ServersGetServerLogsResponse { + lines, + timestamps, + watch: Box::new(watch), + } + } } - - diff --git a/sdks/full/rust/src/models/servers_get_server_response.rs b/sdks/full/rust/src/models/servers_get_server_response.rs index 2f017da813..a6a739546b 100644 --- a/sdks/full/rust/src/models/servers_get_server_response.rs +++ b/sdks/full/rust/src/models/servers_get_server_response.rs @@ -4,25 +4,20 @@ * 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 ServersGetServerResponse { - #[serde(rename = "server")] - pub server: Box, + #[serde(rename = "server")] + pub server: Box, } impl ServersGetServerResponse { - pub fn new(server: crate::models::ServersServer) -> ServersGetServerResponse { - ServersGetServerResponse { - server: Box::new(server), - } - } + pub fn new(server: crate::models::ServersServer) -> ServersGetServerResponse { + ServersGetServerResponse { + server: Box::new(server), + } + } } - - diff --git a/sdks/full/rust/src/models/servers_lifecycle.rs b/sdks/full/rust/src/models/servers_lifecycle.rs index 47b2074f46..6268eb01b8 100644 --- a/sdks/full/rust/src/models/servers_lifecycle.rs +++ b/sdks/full/rust/src/models/servers_lifecycle.rs @@ -4,26 +4,19 @@ * 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 ServersLifecycle { - /// The duration to wait for in milliseconds before killing the server. This should be set to a safe default, and can be overridden during a DELETE request if needed. - #[serde(rename = "kill_timeout", skip_serializing_if = "Option::is_none")] - pub kill_timeout: Option, + /// The duration to wait for in milliseconds before killing the server. This should be set to a safe default, and can be overridden during a DELETE request if needed. + #[serde(rename = "kill_timeout", skip_serializing_if = "Option::is_none")] + pub kill_timeout: Option, } impl ServersLifecycle { - pub fn new() -> ServersLifecycle { - ServersLifecycle { - kill_timeout: None, - } - } + pub fn new() -> ServersLifecycle { + ServersLifecycle { kill_timeout: None } + } } - - diff --git a/sdks/full/rust/src/models/servers_list_builds_response.rs b/sdks/full/rust/src/models/servers_list_builds_response.rs index c3e1d63e80..e9bc64a4ce 100644 --- a/sdks/full/rust/src/models/servers_list_builds_response.rs +++ b/sdks/full/rust/src/models/servers_list_builds_response.rs @@ -4,26 +4,19 @@ * 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 ServersListBuildsResponse { - /// A list of builds for the game associated with the token. - #[serde(rename = "builds")] - pub builds: Vec, + /// A list of builds for the game associated with the token. + #[serde(rename = "builds")] + pub builds: Vec, } impl ServersListBuildsResponse { - pub fn new(builds: Vec) -> ServersListBuildsResponse { - ServersListBuildsResponse { - builds, - } - } + pub fn new(builds: Vec) -> ServersListBuildsResponse { + ServersListBuildsResponse { builds } + } } - - diff --git a/sdks/full/rust/src/models/servers_list_datacenters_response.rs b/sdks/full/rust/src/models/servers_list_datacenters_response.rs index ac3a02b52d..3e228c8d52 100644 --- a/sdks/full/rust/src/models/servers_list_datacenters_response.rs +++ b/sdks/full/rust/src/models/servers_list_datacenters_response.rs @@ -4,25 +4,20 @@ * 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 ServersListDatacentersResponse { - #[serde(rename = "datacenters")] - pub datacenters: Vec, + #[serde(rename = "datacenters")] + pub datacenters: Vec, } impl ServersListDatacentersResponse { - pub fn new(datacenters: Vec) -> ServersListDatacentersResponse { - ServersListDatacentersResponse { - datacenters, - } - } + pub fn new( + datacenters: Vec, + ) -> ServersListDatacentersResponse { + ServersListDatacentersResponse { datacenters } + } } - - diff --git a/sdks/full/rust/src/models/servers_list_servers_response.rs b/sdks/full/rust/src/models/servers_list_servers_response.rs index 202010aa26..75d728f86f 100644 --- a/sdks/full/rust/src/models/servers_list_servers_response.rs +++ b/sdks/full/rust/src/models/servers_list_servers_response.rs @@ -4,26 +4,19 @@ * 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 ServersListServersResponse { - /// A list of servers for the game associated with the token. - #[serde(rename = "servers")] - pub servers: Vec, + /// A list of servers for the game associated with the token. + #[serde(rename = "servers")] + pub servers: Vec, } impl ServersListServersResponse { - pub fn new(servers: Vec) -> ServersListServersResponse { - ServersListServersResponse { - servers, - } - } + pub fn new(servers: Vec) -> ServersListServersResponse { + ServersListServersResponse { servers } + } } - - diff --git a/sdks/full/rust/src/models/servers_log_stream.rs b/sdks/full/rust/src/models/servers_log_stream.rs index b96bdda215..22c8742c30 100644 --- a/sdks/full/rust/src/models/servers_log_stream.rs +++ b/sdks/full/rust/src/models/servers_log_stream.rs @@ -4,36 +4,30 @@ * 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 ServersLogStream { - #[serde(rename = "std_out")] - StdOut, - #[serde(rename = "std_err")] - StdErr, - + #[serde(rename = "std_out")] + StdOut, + #[serde(rename = "std_err")] + StdErr, } impl ToString for ServersLogStream { - fn to_string(&self) -> String { - match self { - Self::StdOut => String::from("std_out"), - Self::StdErr => String::from("std_err"), - } - } + fn to_string(&self) -> String { + match self { + Self::StdOut => String::from("std_out"), + Self::StdErr => String::from("std_err"), + } + } } impl Default for ServersLogStream { - fn default() -> ServersLogStream { - Self::StdOut - } + fn default() -> ServersLogStream { + Self::StdOut + } } - - - - diff --git a/sdks/full/rust/src/models/servers_network.rs b/sdks/full/rust/src/models/servers_network.rs index 97bade5673..5a0b97d95b 100644 --- a/sdks/full/rust/src/models/servers_network.rs +++ b/sdks/full/rust/src/models/servers_network.rs @@ -4,28 +4,22 @@ * 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 ServersNetwork { - #[serde(rename = "mode", skip_serializing_if = "Option::is_none")] - pub mode: Option, - #[serde(rename = "ports")] - pub ports: ::std::collections::HashMap, + #[serde(rename = "mode", skip_serializing_if = "Option::is_none")] + pub mode: Option, + #[serde(rename = "ports")] + pub ports: ::std::collections::HashMap, } impl ServersNetwork { - pub fn new(ports: ::std::collections::HashMap) -> ServersNetwork { - ServersNetwork { - mode: None, - ports, - } - } + pub fn new( + ports: ::std::collections::HashMap, + ) -> ServersNetwork { + ServersNetwork { mode: None, ports } + } } - - diff --git a/sdks/full/rust/src/models/servers_network_mode.rs b/sdks/full/rust/src/models/servers_network_mode.rs index bbb9bd9a5b..d18f6caea8 100644 --- a/sdks/full/rust/src/models/servers_network_mode.rs +++ b/sdks/full/rust/src/models/servers_network_mode.rs @@ -4,36 +4,30 @@ * 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 ServersNetworkMode { - #[serde(rename = "bridge")] - Bridge, - #[serde(rename = "host")] - Host, - + #[serde(rename = "bridge")] + Bridge, + #[serde(rename = "host")] + Host, } impl ToString for ServersNetworkMode { - fn to_string(&self) -> String { - match self { - Self::Bridge => String::from("bridge"), - Self::Host => String::from("host"), - } - } + fn to_string(&self) -> String { + match self { + Self::Bridge => String::from("bridge"), + Self::Host => String::from("host"), + } + } } impl Default for ServersNetworkMode { - fn default() -> ServersNetworkMode { - Self::Bridge - } + fn default() -> ServersNetworkMode { + Self::Bridge + } } - - - - diff --git a/sdks/full/rust/src/models/servers_patch_build_tags_request.rs b/sdks/full/rust/src/models/servers_patch_build_tags_request.rs index 3857d9654a..43bfdcff35 100644 --- a/sdks/full/rust/src/models/servers_patch_build_tags_request.rs +++ b/sdks/full/rust/src/models/servers_patch_build_tags_request.rs @@ -4,29 +4,24 @@ * 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 ServersPatchBuildTagsRequest { - /// Removes the given tag keys from all other builds. - #[serde(rename = "exclusive_tags", skip_serializing_if = "Option::is_none")] - pub exclusive_tags: Option>, - #[serde(rename = "tags", deserialize_with = "Option::deserialize")] - pub tags: Option, + /// Removes the given tag keys from all other builds. + #[serde(rename = "exclusive_tags", skip_serializing_if = "Option::is_none")] + pub exclusive_tags: Option>, + #[serde(rename = "tags", deserialize_with = "Option::deserialize")] + pub tags: Option, } impl ServersPatchBuildTagsRequest { - pub fn new(tags: Option) -> ServersPatchBuildTagsRequest { - ServersPatchBuildTagsRequest { - exclusive_tags: None, - tags, - } - } + pub fn new(tags: Option) -> ServersPatchBuildTagsRequest { + ServersPatchBuildTagsRequest { + exclusive_tags: None, + tags, + } + } } - - diff --git a/sdks/full/rust/src/models/servers_port.rs b/sdks/full/rust/src/models/servers_port.rs index ab305ac1e4..f3fdb8470e 100644 --- a/sdks/full/rust/src/models/servers_port.rs +++ b/sdks/full/rust/src/models/servers_port.rs @@ -4,37 +4,35 @@ * 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 ServersPort { - #[serde(rename = "internal_port", skip_serializing_if = "Option::is_none")] - pub internal_port: Option, - #[serde(rename = "protocol")] - pub protocol: crate::models::ServersPortProtocol, - #[serde(rename = "public_hostname", skip_serializing_if = "Option::is_none")] - pub public_hostname: Option, - #[serde(rename = "public_port", skip_serializing_if = "Option::is_none")] - pub public_port: Option, - #[serde(rename = "routing")] - pub routing: Box, + #[serde(rename = "internal_port", skip_serializing_if = "Option::is_none")] + pub internal_port: Option, + #[serde(rename = "protocol")] + pub protocol: crate::models::ServersPortProtocol, + #[serde(rename = "public_hostname", skip_serializing_if = "Option::is_none")] + pub public_hostname: Option, + #[serde(rename = "public_port", skip_serializing_if = "Option::is_none")] + pub public_port: Option, + #[serde(rename = "routing")] + pub routing: Box, } impl ServersPort { - pub fn new(protocol: crate::models::ServersPortProtocol, routing: crate::models::ServersPortRouting) -> ServersPort { - ServersPort { - internal_port: None, - protocol, - public_hostname: None, - public_port: None, - routing: Box::new(routing), - } - } + pub fn new( + protocol: crate::models::ServersPortProtocol, + routing: crate::models::ServersPortRouting, + ) -> ServersPort { + ServersPort { + internal_port: None, + protocol, + public_hostname: None, + public_port: None, + routing: Box::new(routing), + } + } } - - diff --git a/sdks/full/rust/src/models/servers_port_protocol.rs b/sdks/full/rust/src/models/servers_port_protocol.rs index e2e8c326c9..b5b0e4ca64 100644 --- a/sdks/full/rust/src/models/servers_port_protocol.rs +++ b/sdks/full/rust/src/models/servers_port_protocol.rs @@ -4,45 +4,39 @@ * 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 ServersPortProtocol { - #[serde(rename = "http")] - Http, - #[serde(rename = "https")] - Https, - #[serde(rename = "tcp")] - Tcp, - #[serde(rename = "tcp_tls")] - TcpTls, - #[serde(rename = "udp")] - Udp, - + #[serde(rename = "http")] + Http, + #[serde(rename = "https")] + Https, + #[serde(rename = "tcp")] + Tcp, + #[serde(rename = "tcp_tls")] + TcpTls, + #[serde(rename = "udp")] + Udp, } impl ToString for ServersPortProtocol { - 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"), - } - } + 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 ServersPortProtocol { - fn default() -> ServersPortProtocol { - Self::Http - } + fn default() -> ServersPortProtocol { + Self::Http + } } - - - - diff --git a/sdks/full/rust/src/models/servers_port_routing.rs b/sdks/full/rust/src/models/servers_port_routing.rs index 83f0846fc4..5ba748b474 100644 --- a/sdks/full/rust/src/models/servers_port_routing.rs +++ b/sdks/full/rust/src/models/servers_port_routing.rs @@ -4,28 +4,23 @@ * 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 ServersPortRouting { - #[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, + #[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 ServersPortRouting { - pub fn new() -> ServersPortRouting { - ServersPortRouting { - game_guard: None, - host: None, - } - } + pub fn new() -> ServersPortRouting { + ServersPortRouting { + game_guard: None, + host: None, + } + } } - - diff --git a/sdks/full/rust/src/models/servers_resources.rs b/sdks/full/rust/src/models/servers_resources.rs index d29a3cb0ac..34addff66f 100644 --- a/sdks/full/rust/src/models/servers_resources.rs +++ b/sdks/full/rust/src/models/servers_resources.rs @@ -4,30 +4,22 @@ * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) * * The version of the OpenAPI document: 0.0.1 - * + * * Generated by: https://openapi-generator.tech */ - - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct ServersResources { - /// The number of CPU cores in millicores, or 1/1000 of a core. For example, 1/8 of a core would be 125 millicores, and 1 core would be 1000 millicores. - #[serde(rename = "cpu")] - pub cpu: i32, - /// The amount of memory in megabytes - #[serde(rename = "memory")] - pub memory: i32, + /// The number of CPU cores in millicores, or 1/1000 of a core. For example, 1/8 of a core would be 125 millicores, and 1 core would be 1000 millicores. + #[serde(rename = "cpu")] + pub cpu: i32, + /// The amount of memory in megabytes + #[serde(rename = "memory")] + pub memory: i32, } impl ServersResources { - pub fn new(cpu: i32, memory: i32) -> ServersResources { - ServersResources { - cpu, - memory, - } - } + pub fn new(cpu: i32, memory: i32) -> ServersResources { + ServersResources { cpu, memory } + } } - - diff --git a/sdks/full/rust/src/models/servers_runtime.rs b/sdks/full/rust/src/models/servers_runtime.rs index 489b53a7a9..d29bd15c94 100644 --- a/sdks/full/rust/src/models/servers_runtime.rs +++ b/sdks/full/rust/src/models/servers_runtime.rs @@ -4,31 +4,26 @@ * 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 = "arguments", skip_serializing_if = "Option::is_none")] - pub arguments: Option>, - #[serde(rename = "build")] - pub build: uuid::Uuid, - #[serde(rename = "environment", skip_serializing_if = "Option::is_none")] - pub environment: Option<::std::collections::HashMap>, + #[serde(rename = "arguments", skip_serializing_if = "Option::is_none")] + pub arguments: Option>, + #[serde(rename = "build")] + pub build: uuid::Uuid, + #[serde(rename = "environment", skip_serializing_if = "Option::is_none")] + pub environment: Option<::std::collections::HashMap>, } impl ServersRuntime { - pub fn new(build: uuid::Uuid) -> ServersRuntime { - ServersRuntime { - arguments: None, - build, - environment: None, - } - } + pub fn new(build: uuid::Uuid) -> ServersRuntime { + ServersRuntime { + arguments: None, + build, + environment: None, + } + } } - - diff --git a/sdks/full/rust/src/models/servers_server.rs b/sdks/full/rust/src/models/servers_server.rs index 3238d633ea..2d6738168c 100644 --- a/sdks/full/rust/src/models/servers_server.rs +++ b/sdks/full/rust/src/models/servers_server.rs @@ -4,55 +4,60 @@ * 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 = "created_at")] - pub created_at: i64, - #[serde(rename = "datacenter")] - pub datacenter: uuid::Uuid, - #[serde(rename = "destroyed_at", skip_serializing_if = "Option::is_none")] - pub destroyed_at: Option, - #[serde(rename = "environment")] - pub environment: uuid::Uuid, - #[serde(rename = "id")] - pub id: uuid::Uuid, - #[serde(rename = "lifecycle")] - pub lifecycle: Box, - #[serde(rename = "network")] - pub network: Box, - #[serde(rename = "resources")] - pub resources: Box, - #[serde(rename = "runtime")] - pub runtime: Box, - #[serde(rename = "started_at", skip_serializing_if = "Option::is_none")] - pub started_at: Option, - #[serde(rename = "tags", deserialize_with = "Option::deserialize")] - pub tags: Option, + #[serde(rename = "created_at")] + pub created_at: i64, + #[serde(rename = "datacenter")] + pub datacenter: uuid::Uuid, + #[serde(rename = "destroyed_at", skip_serializing_if = "Option::is_none")] + pub destroyed_at: Option, + #[serde(rename = "environment")] + pub environment: uuid::Uuid, + #[serde(rename = "id")] + pub id: uuid::Uuid, + #[serde(rename = "lifecycle")] + pub lifecycle: Box, + #[serde(rename = "network")] + pub network: Box, + #[serde(rename = "resources")] + pub resources: Box, + #[serde(rename = "runtime")] + pub runtime: Box, + #[serde(rename = "started_at", skip_serializing_if = "Option::is_none")] + pub started_at: Option, + #[serde(rename = "tags", deserialize_with = "Option::deserialize")] + pub tags: Option, } impl ServersServer { - pub fn new(created_at: i64, datacenter: uuid::Uuid, environment: uuid::Uuid, id: uuid::Uuid, lifecycle: crate::models::ServersLifecycle, network: crate::models::ServersNetwork, resources: crate::models::ServersResources, runtime: crate::models::ServersRuntime, tags: Option) -> ServersServer { - ServersServer { - created_at, - datacenter, - destroyed_at: None, - environment, - id, - lifecycle: Box::new(lifecycle), - network: Box::new(network), - resources: Box::new(resources), - runtime: Box::new(runtime), - started_at: None, - tags, - } - } + pub fn new( + created_at: i64, + datacenter: uuid::Uuid, + environment: uuid::Uuid, + id: uuid::Uuid, + lifecycle: crate::models::ServersLifecycle, + network: crate::models::ServersNetwork, + resources: crate::models::ServersResources, + runtime: crate::models::ServersRuntime, + tags: Option, + ) -> ServersServer { + ServersServer { + created_at, + datacenter, + destroyed_at: None, + environment, + id, + lifecycle: Box::new(lifecycle), + network: Box::new(network), + resources: Box::new(resources), + runtime: Box::new(runtime), + started_at: None, + tags, + } + } } - - diff --git a/sdks/full/rust/src/models/upload_prepare_file.rs b/sdks/full/rust/src/models/upload_prepare_file.rs index 0d197af99b..3a4e4fee92 100644 --- a/sdks/full/rust/src/models/upload_prepare_file.rs +++ b/sdks/full/rust/src/models/upload_prepare_file.rs @@ -4,36 +4,32 @@ * 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 */ /// UploadPrepareFile : A file being prepared to upload. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct UploadPrepareFile { - /// Unsigned 64 bit integer. - #[serde(rename = "content_length")] - pub content_length: i64, - /// The MIME type of the file. - #[serde(rename = "content_type", skip_serializing_if = "Option::is_none")] - pub content_type: Option, - /// The path/filename of the file. - #[serde(rename = "path")] - pub path: String, + /// Unsigned 64 bit integer. + #[serde(rename = "content_length")] + pub content_length: i64, + /// The MIME type of the file. + #[serde(rename = "content_type", skip_serializing_if = "Option::is_none")] + pub content_type: Option, + /// The path/filename of the file. + #[serde(rename = "path")] + pub path: String, } impl UploadPrepareFile { - /// A file being prepared to upload. - pub fn new(content_length: i64, path: String) -> UploadPrepareFile { - UploadPrepareFile { - content_length, - content_type: None, - path, - } - } + /// A file being prepared to upload. + pub fn new(content_length: i64, path: String) -> UploadPrepareFile { + UploadPrepareFile { + content_length, + content_type: None, + path, + } + } } - - diff --git a/sdks/full/rust/src/models/upload_presigned_request.rs b/sdks/full/rust/src/models/upload_presigned_request.rs index 7f2ca3aad5..941e8799b9 100644 --- a/sdks/full/rust/src/models/upload_presigned_request.rs +++ b/sdks/full/rust/src/models/upload_presigned_request.rs @@ -4,40 +4,41 @@ * 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 */ /// UploadPresignedRequest : A presigned request used to upload files. Upload your file to the given URL via a PUT request. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct UploadPresignedRequest { - /// The byte offset for this multipart chunk. Always 0 if not a multipart upload. - #[serde(rename = "byte_offset")] - pub byte_offset: i64, - /// Expected size of this upload. - #[serde(rename = "content_length")] - pub content_length: i64, - /// The name of the file to upload. This is the same as the one given in the upload prepare file. - #[serde(rename = "path")] - pub path: String, - /// The URL of the presigned request for which to upload your file to. - #[serde(rename = "url")] - pub url: String, + /// The byte offset for this multipart chunk. Always 0 if not a multipart upload. + #[serde(rename = "byte_offset")] + pub byte_offset: i64, + /// Expected size of this upload. + #[serde(rename = "content_length")] + pub content_length: i64, + /// The name of the file to upload. This is the same as the one given in the upload prepare file. + #[serde(rename = "path")] + pub path: String, + /// The URL of the presigned request for which to upload your file to. + #[serde(rename = "url")] + pub url: String, } impl UploadPresignedRequest { - /// A presigned request used to upload files. Upload your file to the given URL via a PUT request. - pub fn new(byte_offset: i64, content_length: i64, path: String, url: String) -> UploadPresignedRequest { - UploadPresignedRequest { - byte_offset, - content_length, - path, - url, - } - } + /// A presigned request used to upload files. Upload your file to the given URL via a PUT request. + pub fn new( + byte_offset: i64, + content_length: i64, + path: String, + url: String, + ) -> UploadPresignedRequest { + UploadPresignedRequest { + byte_offset, + content_length, + path, + url, + } + } } - - diff --git a/sdks/full/rust/src/models/validation_error.rs b/sdks/full/rust/src/models/validation_error.rs index d4b2471cb7..df6f1ad56d 100644 --- a/sdks/full/rust/src/models/validation_error.rs +++ b/sdks/full/rust/src/models/validation_error.rs @@ -4,28 +4,22 @@ * 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 */ /// ValidationError : An error given by failed content validation. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct ValidationError { - /// A list of strings denoting the origin of a validation error. - #[serde(rename = "path")] - pub path: Vec, + /// A list of strings denoting the origin of a validation error. + #[serde(rename = "path")] + pub path: Vec, } impl ValidationError { - /// An error given by failed content validation. - pub fn new(path: Vec) -> ValidationError { - ValidationError { - path, - } - } + /// An error given by failed content validation. + pub fn new(path: Vec) -> ValidationError { + ValidationError { path } + } } - - diff --git a/sdks/full/rust/src/models/watch_response.rs b/sdks/full/rust/src/models/watch_response.rs index d1ca872c6c..f30fc24b53 100644 --- a/sdks/full/rust/src/models/watch_response.rs +++ b/sdks/full/rust/src/models/watch_response.rs @@ -4,28 +4,22 @@ * 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 */ /// WatchResponse : Provided by watchable endpoints used in blocking loops. - - #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct WatchResponse { - /// Index indicating the version of the data responded. Pass this to `WatchQuery` to block and wait for the next response. - #[serde(rename = "index")] - pub index: String, + /// Index indicating the version of the data responded. Pass this to `WatchQuery` to block and wait for the next response. + #[serde(rename = "index")] + pub index: String, } impl WatchResponse { - /// Provided by watchable endpoints used in blocking loops. - pub fn new(index: String) -> WatchResponse { - WatchResponse { - index, - } - } + /// Provided by watchable endpoints used in blocking loops. + pub fn new(index: String) -> WatchResponse { + WatchResponse { index } + } } - -

*dpBEMPbkuGlzgnR)XAkqXEgGy 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¬ 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%0ANHR_e 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