diff --git a/.openapi-generator/FILES b/.openapi-generator/FILES index 5d07bde..7a03e82 100644 --- a/.openapi-generator/FILES +++ b/.openapi-generator/FILES @@ -50,6 +50,7 @@ docs/GroupAnnouncement.md docs/GroupAuditLogEntry.md docs/GroupGallery.md docs/GroupGalleryImage.md +docs/GroupInstance.md docs/GroupJoinRequestAction.md docs/GroupJoinState.md docs/GroupLimitedMember.md @@ -205,6 +206,7 @@ src/models/group_announcement.rs src/models/group_audit_log_entry.rs src/models/group_gallery.rs src/models/group_gallery_image.rs +src/models/group_instance.rs src/models/group_join_request_action.rs src/models/group_join_state.rs src/models/group_limited_member.rs diff --git a/Cargo.toml b/Cargo.toml index 0ac2583..2a8e5e1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "vrchatapi" -version = "1.17.0" +version = "1.17.1" authors = ["vrchatapi.lpv0t@aries.fyi"] description = "VRChat API Client for Rust" license = "MIT" diff --git a/docs/GroupInstance.md b/docs/GroupInstance.md new file mode 100644 index 0000000..a10fa9d --- /dev/null +++ b/docs/GroupInstance.md @@ -0,0 +1,14 @@ +# GroupInstance + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**instance_id** | **String** | | +**location** | **String** | InstanceID can be \"offline\" on User profiles if you are not friends with that user and \"private\" if you are friends and user is in private instance. | +**world** | [**crate::models::World**](World.md) | | +**member_count** | **i32** | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/GroupsApi.md b/docs/GroupsApi.md index d94a5fb..58d7e8d 100644 --- a/docs/GroupsApi.md +++ b/docs/GroupsApi.md @@ -24,6 +24,7 @@ Method | HTTP request | Description [**get_group_audit_logs**](GroupsApi.md#get_group_audit_logs) | **GET** /groups/{groupId}/auditLogs | Get Group Audit Logs [**get_group_bans**](GroupsApi.md#get_group_bans) | **GET** /groups/{groupId}/bans | Get Group Bans [**get_group_gallery_images**](GroupsApi.md#get_group_gallery_images) | **GET** /groups/{groupId}/galleries/{groupGalleryId} | Get Group Gallery Images +[**get_group_instances**](GroupsApi.md#get_group_instances) | **GET** /groups/{groupId}/instances | Get Group Instances [**get_group_invites**](GroupsApi.md#get_group_invites) | **GET** /groups/{groupId}/invites | Get Group Invites Sent [**get_group_member**](GroupsApi.md#get_group_member) | **GET** /groups/{groupId}/members/{userId} | Get Group Member [**get_group_members**](GroupsApi.md#get_group_members) | **GET** /groups/{groupId}/members | List Group Members @@ -669,6 +670,36 @@ Name | Type | Description | Required | Notes [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) +## get_group_instances + +> Vec get_group_instances(group_id) +Get Group Instances + +Returns a list of group instances + +### Parameters + + +Name | Type | Description | Required | Notes +------------- | ------------- | ------------- | ------------- | ------------- +**group_id** | **String** | Must be a valid group ID. | [required] | + +### Return type + +[**Vec**](GroupInstance.md) + +### Authorization + +[authCookie](../README.md#authCookie) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + ## get_group_invites > Vec get_group_invites(group_id, n, offset) diff --git a/package-lock.json b/package-lock.json index 1c428eb..d833d77 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,7 +5,7 @@ "packages": { "": { "dependencies": { - "@openapitools/openapi-generator-cli": "^2.13.1" + "@openapitools/openapi-generator-cli": "^2.13.2" } }, "node_modules/@lukeed/csprng": { @@ -110,9 +110,9 @@ } }, "node_modules/@openapitools/openapi-generator-cli": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/@openapitools/openapi-generator-cli/-/openapi-generator-cli-2.13.1.tgz", - "integrity": "sha512-WJB6MsFXlA69mpKCuR3hBsdFr7MptNhoIGlyvoYEorBQEg3cd6n1gACHx0fz20B3e03/imvorQlNMsrHTIeU9w==", + "version": "2.13.2", + "resolved": "https://registry.npmjs.org/@openapitools/openapi-generator-cli/-/openapi-generator-cli-2.13.2.tgz", + "integrity": "sha512-Zxq1KQpxqZe55xSUAebY7RSKo1EgPFS37KY74skJRpicDyn/xg+2r0xB30UfE6WRGqaK2YJaJn0GPKbS2pwI1Q==", "hasInstallScript": true, "dependencies": { "@nestjs/axios": "3.0.1", @@ -127,6 +127,7 @@ "console.table": "0.10.0", "fs-extra": "10.1.0", "glob": "7.2.3", + "https-proxy-agent": "7.0.4", "inquirer": "8.2.6", "lodash": "4.17.21", "reflect-metadata": "0.1.13", @@ -144,6 +145,17 @@ "url": "https://opencollective.com/openapi_generator" } }, + "node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/ansi-escapes": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", @@ -453,6 +465,22 @@ "url": "https://opencollective.com/date-fns" } }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, "node_modules/defaults": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", @@ -620,6 +648,18 @@ "node": ">=8" } }, + "node_modules/https-proxy-agent": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", + "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -806,6 +846,11 @@ "node": "*" } }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, "node_modules/mute-stream": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", @@ -1223,9 +1268,9 @@ } }, "@openapitools/openapi-generator-cli": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/@openapitools/openapi-generator-cli/-/openapi-generator-cli-2.13.1.tgz", - "integrity": "sha512-WJB6MsFXlA69mpKCuR3hBsdFr7MptNhoIGlyvoYEorBQEg3cd6n1gACHx0fz20B3e03/imvorQlNMsrHTIeU9w==", + "version": "2.13.2", + "resolved": "https://registry.npmjs.org/@openapitools/openapi-generator-cli/-/openapi-generator-cli-2.13.2.tgz", + "integrity": "sha512-Zxq1KQpxqZe55xSUAebY7RSKo1EgPFS37KY74skJRpicDyn/xg+2r0xB30UfE6WRGqaK2YJaJn0GPKbS2pwI1Q==", "requires": { "@nestjs/axios": "3.0.1", "@nestjs/common": "10.3.0", @@ -1239,6 +1284,7 @@ "console.table": "0.10.0", "fs-extra": "10.1.0", "glob": "7.2.3", + "https-proxy-agent": "7.0.4", "inquirer": "8.2.6", "lodash": "4.17.21", "reflect-metadata": "0.1.13", @@ -1246,6 +1292,14 @@ "tslib": "2.6.2" } }, + "agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "requires": { + "debug": "^4.3.4" + } + }, "ansi-escapes": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", @@ -1459,6 +1513,14 @@ "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.29.3.tgz", "integrity": "sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==" }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, "defaults": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", @@ -1576,6 +1638,15 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, + "https-proxy-agent": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", + "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", + "requires": { + "agent-base": "^7.0.2", + "debug": "4" + } + }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -1706,6 +1777,11 @@ "brace-expansion": "^1.1.7" } }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, "mute-stream": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", diff --git a/package.json b/package.json index dfa7e8f..6ef45a3 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { "dependencies": { - "@openapitools/openapi-generator-cli": "^2.13.1" + "@openapitools/openapi-generator-cli": "^2.13.2" } } diff --git a/src/apis/groups_api.rs b/src/apis/groups_api.rs index 41adab4..26220af 100644 --- a/src/apis/groups_api.rs +++ b/src/apis/groups_api.rs @@ -35,6 +35,7 @@ pub enum AddGroupMemberRoleError { #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum BanGroupMemberError { + Status400(crate::models::Error), Status401(crate::models::Error), Status404(crate::models::Error), UnknownValue(serde_json::Value), @@ -195,6 +196,15 @@ pub enum GetGroupGalleryImagesError { UnknownValue(serde_json::Value), } +/// struct for typed errors of method [`get_group_instances`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum GetGroupInstancesError { + Status401(crate::models::Error), + Status404(crate::models::Error), + UnknownValue(serde_json::Value), +} + /// struct for typed errors of method [`get_group_invites`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] @@ -950,6 +960,34 @@ pub fn get_group_gallery_images(configuration: &configuration::Configuration, gr } } +/// Returns a list of group instances +pub fn get_group_instances(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!("{}/groups/{groupId}/instances", local_var_configuration.base_path, groupId=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()); + } + + let local_var_req = local_var_req_builder.build()?; + let mut local_var_resp = local_var_client.execute(local_var_req)?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text()?; + + 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 members that have been invited to the Group. pub fn get_group_invites(configuration: &configuration::Configuration, group_id: &str, n: Option, offset: Option) -> Result, Error> { let local_var_configuration = configuration; diff --git a/src/models/group_instance.rs b/src/models/group_instance.rs new file mode 100644 index 0000000..db09193 --- /dev/null +++ b/src/models/group_instance.rs @@ -0,0 +1,36 @@ +/* + * VRChat API Documentation + * + * + * Contact: vrchatapi.lpv0t@aries.fyi + * Generated by: https://openapi-generator.tech + */ + + + + +#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] +pub struct GroupInstance { + #[serde(rename = "instanceId")] + pub instance_id: String, + /// InstanceID can be \"offline\" on User profiles if you are not friends with that user and \"private\" if you are friends and user is in private instance. + #[serde(rename = "location")] + pub location: String, + #[serde(rename = "world")] + pub world: Box, + #[serde(rename = "memberCount")] + pub member_count: i32, +} + +impl GroupInstance { + pub fn new(instance_id: String, location: String, world: crate::models::World, member_count: i32) -> GroupInstance { + GroupInstance { + instance_id, + location, + world: Box::new(world), + member_count, + } + } +} + + diff --git a/src/models/group_member_limited_user.rs b/src/models/group_member_limited_user.rs index be42a28..2ddc70b 100644 --- a/src/models/group_member_limited_user.rs +++ b/src/models/group_member_limited_user.rs @@ -17,8 +17,8 @@ pub struct GroupMemberLimitedUser { pub id: Option, #[serde(rename = "displayName", skip_serializing_if = "Option::is_none")] pub display_name: Option, - #[serde(rename = "thumbnailUrl", skip_serializing_if = "Option::is_none")] - pub thumbnail_url: Option, + #[serde(rename = "thumbnailUrl", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")] + pub thumbnail_url: Option>, #[serde(rename = "iconUrl", skip_serializing_if = "Option::is_none")] pub icon_url: Option, #[serde(rename = "profilePicOverride", skip_serializing_if = "Option::is_none")] diff --git a/src/models/mod.rs b/src/models/mod.rs index 89dab0f..5dbcaa3 100644 --- a/src/models/mod.rs +++ b/src/models/mod.rs @@ -86,6 +86,8 @@ pub mod group_gallery; pub use self::group_gallery::GroupGallery; pub mod group_gallery_image; pub use self::group_gallery_image::GroupGalleryImage; +pub mod group_instance; +pub use self::group_instance::GroupInstance; pub mod group_join_request_action; pub use self::group_join_request_action::GroupJoinRequestAction; pub mod group_join_state;