diff --git a/.openapi-generator/FILES b/.openapi-generator/FILES index 7a03e82..d93c286 100644 --- a/.openapi-generator/FILES +++ b/.openapi-generator/FILES @@ -19,6 +19,7 @@ docs/CreateFileVersionRequest.md docs/CreateGroupAnnouncementRequest.md docs/CreateGroupGalleryRequest.md docs/CreateGroupInviteRequest.md +docs/CreateGroupPostRequest.md docs/CreateGroupRequest.md docs/CreateGroupRoleRequest.md docs/CreateWorldRequest.md @@ -59,6 +60,8 @@ docs/GroupMemberLimitedUser.md docs/GroupMemberStatus.md docs/GroupMyMember.md docs/GroupPermission.md +docs/GroupPost.md +docs/GroupPostVisibility.md docs/GroupPrivacy.md docs/GroupRole.md docs/GroupRoleTemplate.md @@ -179,6 +182,7 @@ src/models/create_file_version_request.rs src/models/create_group_announcement_request.rs src/models/create_group_gallery_request.rs src/models/create_group_invite_request.rs +src/models/create_group_post_request.rs src/models/create_group_request.rs src/models/create_group_role_request.rs src/models/create_world_request.rs @@ -215,6 +219,8 @@ src/models/group_member_limited_user.rs src/models/group_member_status.rs src/models/group_my_member.rs src/models/group_permission.rs +src/models/group_post.rs +src/models/group_post_visibility.rs src/models/group_privacy.rs src/models/group_role.rs src/models/group_role_template.rs diff --git a/Cargo.toml b/Cargo.toml index 2a8e5e1..70c296c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "vrchatapi" -version = "1.17.1" +version = "1.17.2" authors = ["vrchatapi.lpv0t@aries.fyi"] description = "VRChat API Client for Rust" license = "MIT" diff --git a/docs/CreateGroupPostRequest.md b/docs/CreateGroupPostRequest.md new file mode 100644 index 0000000..6fe9149 --- /dev/null +++ b/docs/CreateGroupPostRequest.md @@ -0,0 +1,16 @@ +# CreateGroupPostRequest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**title** | **String** | Post title | +**text** | **String** | Post text | +**image_id** | Option<**String**> | | [optional] +**send_notification** | **bool** | Send notification to group members. | [default to false] +**role_ids** | Option<**Vec**> | | [optional] +**visibility** | [**crate::models::GroupPostVisibility**](GroupPostVisibility.md) | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/GroupPost.md b/docs/GroupPost.md new file mode 100644 index 0000000..6b1677e --- /dev/null +++ b/docs/GroupPost.md @@ -0,0 +1,22 @@ +# GroupPost + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | Option<**String**> | | [optional] +**group_id** | Option<**String**> | | [optional] +**author_id** | Option<**String**> | A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. | [optional] +**editor_id** | Option<**String**> | A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. | [optional] +**visibility** | Option<[**crate::models::GroupPostVisibility**](GroupPostVisibility.md)> | | [optional] +**role_id** | Option<**Vec**> | | [optional] +**title** | Option<**String**> | | [optional] +**text** | Option<**String**> | | [optional] +**image_id** | Option<**String**> | | [optional] +**image_url** | Option<**String**> | | [optional] +**created_at** | Option<**String**> | | [optional] +**updated_at** | Option<**String**> | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/GroupPostVisibility.md b/docs/GroupPostVisibility.md new file mode 100644 index 0000000..72c51fc --- /dev/null +++ b/docs/GroupPostVisibility.md @@ -0,0 +1,10 @@ +# GroupPostVisibility + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/GroupsApi.md b/docs/GroupsApi.md index 58d7e8d..a12b3de 100644 --- a/docs/GroupsApi.md +++ b/docs/GroupsApi.md @@ -6,6 +6,7 @@ Method | HTTP request | Description ------------- | ------------- | ------------- [**add_group_gallery_image**](GroupsApi.md#add_group_gallery_image) | **POST** /groups/{groupId}/galleries/{groupGalleryId}/images | Add Group Gallery Image [**add_group_member_role**](GroupsApi.md#add_group_member_role) | **PUT** /groups/{groupId}/members/{userId}/roles/{groupRoleId} | Add Role to GroupMember +[**add_group_post**](GroupsApi.md#add_group_post) | **POST** /groups/{groupId}/posts | Create a post in a Group [**ban_group_member**](GroupsApi.md#ban_group_member) | **POST** /groups/{groupId}/bans | Ban Group Member [**cancel_group_request**](GroupsApi.md#cancel_group_request) | **DELETE** /groups/{groupId}/requests | Cancel Group Join Request [**create_group**](GroupsApi.md#create_group) | **POST** /groups | Create Group @@ -18,6 +19,7 @@ Method | HTTP request | Description [**delete_group_gallery**](GroupsApi.md#delete_group_gallery) | **DELETE** /groups/{groupId}/galleries/{groupGalleryId} | Delete Group Gallery [**delete_group_gallery_image**](GroupsApi.md#delete_group_gallery_image) | **DELETE** /groups/{groupId}/galleries/{groupGalleryId}/images/{groupGalleryImageId} | Delete Group Gallery Image [**delete_group_invite**](GroupsApi.md#delete_group_invite) | **DELETE** /groups/{groupId}/invites/{userId} | Delete User Invite +[**delete_group_post**](GroupsApi.md#delete_group_post) | **DELETE** /groups/{groupId}/posts/{notificationId} | Delete a Group post [**delete_group_role**](GroupsApi.md#delete_group_role) | **DELETE** /groups/{groupId}/roles/{groupRoleId} | Delete Group Role [**get_group**](GroupsApi.md#get_group) | **GET** /groups/{groupId} | Get Group by ID [**get_group_announcements**](GroupsApi.md#get_group_announcements) | **GET** /groups/{groupId}/announcement | Get Group Announcement @@ -29,6 +31,7 @@ Method | HTTP request | Description [**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 [**get_group_permissions**](GroupsApi.md#get_group_permissions) | **GET** /groups/{groupId}/permissions | List Group Permissions +[**get_group_post**](GroupsApi.md#get_group_post) | **GET** /groups/{groupId}/posts | Get posts from a Group [**get_group_requests**](GroupsApi.md#get_group_requests) | **GET** /groups/{groupId}/requests | Get Group Join Requests [**get_group_roles**](GroupsApi.md#get_group_roles) | **GET** /groups/{groupId}/roles | Get Group Roles [**join_group**](GroupsApi.md#join_group) | **POST** /groups/{groupId}/join | Join Group @@ -109,6 +112,37 @@ 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) +## add_group_post + +> crate::models::GroupPost add_group_post(group_id, create_group_post_request) +Create a post in a Group + +Create a post in a Group. + +### Parameters + + +Name | Type | Description | Required | Notes +------------- | ------------- | ------------- | ------------- | ------------- +**group_id** | **String** | Must be a valid group ID. | [required] | +**create_group_post_request** | [**CreateGroupPostRequest**](CreateGroupPostRequest.md) | | [required] | + +### Return type + +[**crate::models::GroupPost**](GroupPost.md) + +### Authorization + +[authCookie](../README.md#authCookie) + +### HTTP request headers + +- **Content-Type**: application/json +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + ## ban_group_member > crate::models::GroupMember ban_group_member(group_id, ban_group_member_request) @@ -478,6 +512,37 @@ 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) +## delete_group_post + +> crate::models::Success delete_group_post(group_id, notification_id) +Delete a Group post + +Delete a Group post + +### Parameters + + +Name | Type | Description | Required | Notes +------------- | ------------- | ------------- | ------------- | ------------- +**group_id** | **String** | Must be a valid group ID. | [required] | +**notification_id** | **String** | Must be a valid notification ID. | [required] | + +### Return type + +[**crate::models::Success**](Success.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) + + ## delete_group_role > Vec delete_group_role(group_id, group_role_id) @@ -826,6 +891,39 @@ 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_post + +> crate::models::GroupPost get_group_post(group_id, n, offset, public_only) +Get posts from a Group + +Get posts from a Group + +### Parameters + + +Name | Type | Description | Required | Notes +------------- | ------------- | ------------- | ------------- | ------------- +**group_id** | **String** | Must be a valid group ID. | [required] | +**n** | Option<**i32**> | The number of objects to return. | |[default to 60] +**offset** | Option<**i32**> | A zero-based offset from the default object sorting from where search results start. | | +**public_only** | Option<**bool**> | See public posts only. | | + +### Return type + +[**crate::models::GroupPost**](GroupPost.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_requests > Vec get_group_requests(group_id, n, offset) diff --git a/package-lock.json b/package-lock.json index d833d77..0caa0f8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,7 +5,7 @@ "packages": { "": { "dependencies": { - "@openapitools/openapi-generator-cli": "^2.13.2" + "@openapitools/openapi-generator-cli": "^2.13.4" } }, "node_modules/@lukeed/csprng": { @@ -17,13 +17,12 @@ } }, "node_modules/@nestjs/axios": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@nestjs/axios/-/axios-3.0.1.tgz", - "integrity": "sha512-VlOZhAGDmOoFdsmewn8AyClAdGpKXQQaY1+3PGB+g6ceurGIdTxZgRX3VXc1T6Zs60PedWjg3A82TDOB05mrzQ==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@nestjs/axios/-/axios-3.0.2.tgz", + "integrity": "sha512-Z6GuOUdNQjP7FX+OuV2Ybyamse+/e0BFdTWBX5JxpBDKA+YkdLynDgG6HTF04zy6e9zPa19UX0WA2VDoehwhXQ==", "peerDependencies": { "@nestjs/common": "^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0", "axios": "^1.3.1", - "reflect-metadata": "^0.1.12", "rxjs": "^6.0.0 || ^7.0.0" } }, @@ -110,16 +109,16 @@ } }, "node_modules/@openapitools/openapi-generator-cli": { - "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==", + "version": "2.13.4", + "resolved": "https://registry.npmjs.org/@openapitools/openapi-generator-cli/-/openapi-generator-cli-2.13.4.tgz", + "integrity": "sha512-4JKyrk55ohQK2FcuZbPdNvxdyXD14jjOIvE8hYjJ+E1cHbRbfXQXbYnjTODFE52Gx8eAxz8C9icuhDYDLn7nww==", "hasInstallScript": true, "dependencies": { - "@nestjs/axios": "3.0.1", + "@nestjs/axios": "3.0.2", "@nestjs/common": "10.3.0", "@nestjs/core": "10.3.0", "@nuxtjs/opencollective": "0.3.2", - "axios": "1.6.5", + "axios": "1.6.8", "chalk": "4.1.2", "commander": "8.3.0", "compare-versions": "4.1.4", @@ -198,11 +197,11 @@ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, "node_modules/axios": { - "version": "1.6.5", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.5.tgz", - "integrity": "sha512-Ii012v05KEVuUoFWmMW/UQv9aRIc3ZwkWDcM+h5Il8izZCtRVpDUfwpoFf7eOtajT3QiGR4yDUx7lPqHJULgbg==", + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz", + "integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==", "dependencies": { - "follow-redirects": "^1.15.4", + "follow-redirects": "^1.15.6", "form-data": "^4.0.0", "proxy-from-env": "^1.1.0" } @@ -559,9 +558,9 @@ } }, "node_modules/follow-redirects": { - "version": "1.15.5", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", - "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", "funding": [ { "type": "individual", @@ -1229,9 +1228,9 @@ "integrity": "sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==" }, "@nestjs/axios": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@nestjs/axios/-/axios-3.0.1.tgz", - "integrity": "sha512-VlOZhAGDmOoFdsmewn8AyClAdGpKXQQaY1+3PGB+g6ceurGIdTxZgRX3VXc1T6Zs60PedWjg3A82TDOB05mrzQ==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@nestjs/axios/-/axios-3.0.2.tgz", + "integrity": "sha512-Z6GuOUdNQjP7FX+OuV2Ybyamse+/e0BFdTWBX5JxpBDKA+YkdLynDgG6HTF04zy6e9zPa19UX0WA2VDoehwhXQ==", "requires": {} }, "@nestjs/common": { @@ -1268,15 +1267,15 @@ } }, "@openapitools/openapi-generator-cli": { - "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==", + "version": "2.13.4", + "resolved": "https://registry.npmjs.org/@openapitools/openapi-generator-cli/-/openapi-generator-cli-2.13.4.tgz", + "integrity": "sha512-4JKyrk55ohQK2FcuZbPdNvxdyXD14jjOIvE8hYjJ+E1cHbRbfXQXbYnjTODFE52Gx8eAxz8C9icuhDYDLn7nww==", "requires": { - "@nestjs/axios": "3.0.1", + "@nestjs/axios": "3.0.2", "@nestjs/common": "10.3.0", "@nestjs/core": "10.3.0", "@nuxtjs/opencollective": "0.3.2", - "axios": "1.6.5", + "axios": "1.6.8", "chalk": "4.1.2", "commander": "8.3.0", "compare-versions": "4.1.4", @@ -1327,11 +1326,11 @@ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, "axios": { - "version": "1.6.5", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.5.tgz", - "integrity": "sha512-Ii012v05KEVuUoFWmMW/UQv9aRIc3ZwkWDcM+h5Il8izZCtRVpDUfwpoFf7eOtajT3QiGR4yDUx7lPqHJULgbg==", + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz", + "integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==", "requires": { - "follow-redirects": "^1.15.4", + "follow-redirects": "^1.15.6", "form-data": "^4.0.0", "proxy-from-env": "^1.1.0" } @@ -1581,9 +1580,9 @@ } }, "follow-redirects": { - "version": "1.15.5", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", - "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==" + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==" }, "form-data": { "version": "4.0.0", diff --git a/package.json b/package.json index 6ef45a3..1383dec 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { "dependencies": { - "@openapitools/openapi-generator-cli": "^2.13.2" + "@openapitools/openapi-generator-cli": "^2.13.4" } } diff --git a/src/apis/groups_api.rs b/src/apis/groups_api.rs index 26220af..1c89dd4 100644 --- a/src/apis/groups_api.rs +++ b/src/apis/groups_api.rs @@ -31,6 +31,14 @@ pub enum AddGroupMemberRoleError { UnknownValue(serde_json::Value), } +/// struct for typed errors of method [`add_group_post`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum AddGroupPostError { + Status401(crate::models::Error), + UnknownValue(serde_json::Value), +} + /// struct for typed errors of method [`ban_group_member`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] @@ -138,10 +146,20 @@ pub enum DeleteGroupGalleryImageError { #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum DeleteGroupInviteError { + Status400(crate::models::Error), Status401(crate::models::Error), UnknownValue(serde_json::Value), } +/// struct for typed errors of method [`delete_group_post`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum DeleteGroupPostError { + Status401(crate::models::Error), + Status404(crate::models::Success), + UnknownValue(serde_json::Value), +} + /// struct for typed errors of method [`delete_group_role`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] @@ -244,6 +262,14 @@ pub enum GetGroupPermissionsError { UnknownValue(serde_json::Value), } +/// struct for typed errors of method [`get_group_post`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum GetGroupPostError { + Status401(crate::models::Error), + UnknownValue(serde_json::Value), +} + /// struct for typed errors of method [`get_group_requests`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] @@ -420,6 +446,35 @@ pub fn add_group_member_role(configuration: &configuration::Configuration, group } } +/// Create a post in a Group. +pub fn add_group_post(configuration: &configuration::Configuration, group_id: &str, create_group_post_request: crate::models::CreateGroupPostRequest) -> Result> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!("{}/groups/{groupId}/posts", local_var_configuration.base_path, groupId=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()); + } + local_var_req_builder = local_var_req_builder.json(&create_group_post_request); + + 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)) + } +} + /// Bans a user from a Group. pub fn ban_group_member(configuration: &configuration::Configuration, group_id: &str, ban_group_member_request: crate::models::BanGroupMemberRequest) -> Result> { let local_var_configuration = configuration; @@ -762,6 +817,34 @@ pub fn delete_group_invite(configuration: &configuration::Configuration, group_i } } +/// Delete a Group post +pub fn delete_group_post(configuration: &configuration::Configuration, group_id: &str, notification_id: &str) -> Result> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!("{}/groups/{groupId}/posts/{notificationId}", local_var_configuration.base_path, groupId=crate::apis::urlencode(group_id), notificationId=crate::apis::urlencode(notification_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()); + } + + 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)) + } +} + /// Deletes a Group Role by ID and returns the remaining roles. pub fn delete_group_role(configuration: &configuration::Configuration, group_id: &str, group_role_id: &str) -> Result, Error> { let local_var_configuration = configuration; @@ -1115,6 +1198,43 @@ pub fn get_group_permissions(configuration: &configuration::Configuration, group } } +/// Get posts from a Group +pub fn get_group_post(configuration: &configuration::Configuration, group_id: &str, n: Option, offset: Option, public_only: Option) -> Result> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!("{}/groups/{groupId}/posts", 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_str) = n { + local_var_req_builder = local_var_req_builder.query(&[("n", &local_var_str.to_string())]); + } + if let Some(ref local_var_str) = offset { + local_var_req_builder = local_var_req_builder.query(&[("offset", &local_var_str.to_string())]); + } + if let Some(ref local_var_str) = public_only { + local_var_req_builder = local_var_req_builder.query(&[("publicOnly", &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 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 requested to join the Group. pub fn get_group_requests(configuration: &configuration::Configuration, group_id: &str, n: Option, offset: Option) -> Result, Error> { let local_var_configuration = configuration; diff --git a/src/models/create_group_post_request.rs b/src/models/create_group_post_request.rs new file mode 100644 index 0000000..abc06df --- /dev/null +++ b/src/models/create_group_post_request.rs @@ -0,0 +1,45 @@ +/* + * VRChat API Documentation + * + * + * Contact: vrchatapi.lpv0t@aries.fyi + * Generated by: https://openapi-generator.tech + */ + + + + +#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] +pub struct CreateGroupPostRequest { + /// Post title + #[serde(rename = "title")] + pub title: String, + /// Post text + #[serde(rename = "text")] + pub text: String, + #[serde(rename = "imageId", skip_serializing_if = "Option::is_none")] + pub image_id: Option, + /// Send notification to group members. + #[serde(rename = "sendNotification")] + pub send_notification: bool, + /// + #[serde(rename = "roleIds", skip_serializing_if = "Option::is_none")] + pub role_ids: Option>, + #[serde(rename = "visibility")] + pub visibility: crate::models::GroupPostVisibility, +} + +impl CreateGroupPostRequest { + pub fn new(title: String, text: String, send_notification: bool, visibility: crate::models::GroupPostVisibility) -> CreateGroupPostRequest { + CreateGroupPostRequest { + title, + text, + image_id: None, + send_notification, + role_ids: None, + visibility, + } + } +} + + diff --git a/src/models/group_post.rs b/src/models/group_post.rs new file mode 100644 index 0000000..6cd4a22 --- /dev/null +++ b/src/models/group_post.rs @@ -0,0 +1,62 @@ +/* + * VRChat API Documentation + * + * + * Contact: vrchatapi.lpv0t@aries.fyi + * Generated by: https://openapi-generator.tech + */ + + + + +#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] +pub struct GroupPost { + #[serde(rename = "id", skip_serializing_if = "Option::is_none")] + pub id: Option, + #[serde(rename = "groupId", skip_serializing_if = "Option::is_none")] + pub group_id: Option, + /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. + #[serde(rename = "authorId", skip_serializing_if = "Option::is_none")] + pub author_id: Option, + /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. + #[serde(rename = "editorId", skip_serializing_if = "Option::is_none")] + pub editor_id: Option, + #[serde(rename = "visibility", skip_serializing_if = "Option::is_none")] + pub visibility: Option, + /// + #[serde(rename = "roleId", skip_serializing_if = "Option::is_none")] + pub role_id: Option>, + #[serde(rename = "title", skip_serializing_if = "Option::is_none")] + pub title: Option, + #[serde(rename = "text", skip_serializing_if = "Option::is_none")] + pub text: Option, + #[serde(rename = "imageId", skip_serializing_if = "Option::is_none")] + pub image_id: Option, + #[serde(rename = "imageUrl", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")] + pub image_url: Option>, + #[serde(rename = "createdAt", skip_serializing_if = "Option::is_none")] + pub created_at: Option, + #[serde(rename = "updatedAt", skip_serializing_if = "Option::is_none")] + pub updated_at: Option, +} + +impl GroupPost { + pub fn new() -> GroupPost { + GroupPost { + id: None, + group_id: None, + author_id: None, + editor_id: None, + visibility: None, + role_id: None, + title: None, + text: None, + image_id: None, + image_url: None, + created_at: None, + updated_at: None, + } + } +} + + diff --git a/src/models/group_post_visibility.rs b/src/models/group_post_visibility.rs new file mode 100644 index 0000000..da7e3df --- /dev/null +++ b/src/models/group_post_visibility.rs @@ -0,0 +1,37 @@ +/* + * VRChat API Documentation + * + * + * Contact: vrchatapi.lpv0t@aries.fyi + * Generated by: https://openapi-generator.tech + */ + + +/// +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum GroupPostVisibility { + #[serde(rename = "group")] + Group, + #[serde(rename = "public")] + Public, + +} + +impl ToString for GroupPostVisibility { + fn to_string(&self) -> String { + match self { + Self::Group => String::from("group"), + Self::Public => String::from("public"), + } + } +} + +impl Default for GroupPostVisibility { + fn default() -> GroupPostVisibility { + Self::Group + } +} + + + + diff --git a/src/models/mod.rs b/src/models/mod.rs index 5dbcaa3..a1970f9 100644 --- a/src/models/mod.rs +++ b/src/models/mod.rs @@ -32,6 +32,8 @@ pub mod create_group_gallery_request; pub use self::create_group_gallery_request::CreateGroupGalleryRequest; pub mod create_group_invite_request; pub use self::create_group_invite_request::CreateGroupInviteRequest; +pub mod create_group_post_request; +pub use self::create_group_post_request::CreateGroupPostRequest; pub mod create_group_request; pub use self::create_group_request::CreateGroupRequest; pub mod create_group_role_request; @@ -104,6 +106,10 @@ pub mod group_my_member; pub use self::group_my_member::GroupMyMember; pub mod group_permission; pub use self::group_permission::GroupPermission; +pub mod group_post; +pub use self::group_post::GroupPost; +pub mod group_post_visibility; +pub use self::group_post_visibility::GroupPostVisibility; pub mod group_privacy; pub use self::group_privacy::GroupPrivacy; pub mod group_role;