From 241afd9003878be15be1ece7dd0d032b2636301b Mon Sep 17 00:00:00 2001 From: bitfl0wer Date: Sat, 27 May 2023 22:11:35 +0200 Subject: [PATCH 01/16] Rename integration.rs to guild.rs --- tests/guild.rs | 29 +++++++++ tests/integration.rs | 152 ------------------------------------------- 2 files changed, 29 insertions(+), 152 deletions(-) create mode 100644 tests/guild.rs delete mode 100644 tests/integration.rs diff --git a/tests/guild.rs b/tests/guild.rs new file mode 100644 index 0000000..6b50a94 --- /dev/null +++ b/tests/guild.rs @@ -0,0 +1,29 @@ +mod common; +use chorus::types::{Guild, GuildCreateSchema}; + +#[tokio::test] +async fn guild_creation_deletion() { + let mut bundle = common::setup().await; + + let guild_create_schema = GuildCreateSchema { + name: Some("test".to_string()), + region: None, + icon: None, + channels: None, + guild_template_code: None, + system_channel_id: None, + rules_channel_id: None, + }; + + let guild = Guild::create(&mut bundle.user, bundle.urls.get_api(), guild_create_schema) + .await + .unwrap(); + + println!("{}", guild); + + match Guild::delete(&mut bundle.user, bundle.urls.get_api(), guild).await { + None => assert!(true), + Some(_) => assert!(false), + } + common::teardown(bundle).await +} diff --git a/tests/integration.rs b/tests/integration.rs deleted file mode 100644 index 116e89f..0000000 --- a/tests/integration.rs +++ /dev/null @@ -1,152 +0,0 @@ -use chorus::{ - instance::{Instance, UserMeta}, - types::{Channel, ChannelCreateSchema, Guild, GuildCreateSchema, RegisterSchema}, - URLBundle, -}; - -#[derive(Debug)] -struct TestBundle { - urls: URLBundle, - user: UserMeta, - instance: Instance, - guild_id: String, - channel: Channel, -} - -// Set up a test by creating an Instance and a User. Reduces Test boilerplate. -async fn setup() -> TestBundle { - let urls = URLBundle::new( - "http://localhost:3001/api".to_string(), - "ws://localhost:3001".to_string(), - "http://localhost:3001".to_string(), - ); - let mut instance = Instance::new(urls.clone()).await.unwrap(); - // Requires the existance of the below user. - let reg = RegisterSchema::new( - "integrationtestuser".to_string(), - None, - true, - None, - None, - None, - Some("2000-01-01".to_string()), - None, - None, - None, - ) - .unwrap(); - let guild_create_schema = GuildCreateSchema { - name: Some("Test-Guild!".to_string()), - region: None, - icon: None, - channels: None, - guild_template_code: None, - system_channel_id: None, - rules_channel_id: None, - }; - let channel_create_schema = ChannelCreateSchema { - name: "testchannel".to_string(), - channel_type: Some(0), - topic: None, - icon: None, - bitrate: None, - user_limit: None, - rate_limit_per_user: None, - position: None, - permission_overwrites: None, - parent_id: None, - id: None, - nsfw: Some(false), - rtc_region: None, - default_auto_archive_duration: None, - default_reaction_emoji: None, - flags: Some(0), - default_thread_rate_limit_per_user: Some(0), - video_quality_mode: None, - }; - let mut user = instance.register_account(®).await.unwrap(); - let guild_id = Guild::create(&mut user, urls.get_api(), guild_create_schema) - .await - .unwrap(); - let channel = Channel::create( - &user.token, - urls.get_api(), - guild_id.as_str(), - channel_create_schema, - &mut user.limits, - &mut instance.limits, - ) - .await - .unwrap(); - - TestBundle { - urls, - user, - instance, - guild_id, - channel, - } -} - -// Teardown method to clean up after a test. -async fn teardown(mut bundle: TestBundle) { - Guild::delete( - &mut bundle.user, - bundle.instance.urls.get_api(), - bundle.guild_id, - ) - .await; - bundle.user.delete().await; -} - -mod guild { - use chorus::types::{Channel, Guild, GuildCreateSchema}; - - #[tokio::test] - async fn guild_creation_deletion() { - let mut bundle = crate::setup().await; - - let guild_create_schema = GuildCreateSchema { - name: Some("test".to_string()), - region: None, - icon: None, - channels: None, - guild_template_code: None, - system_channel_id: None, - rules_channel_id: None, - }; - - let guild = Guild::create(&mut bundle.user, bundle.urls.get_api(), guild_create_schema) - .await - .unwrap(); - - println!("{}", guild); - - match Guild::delete(&mut bundle.user, bundle.urls.get_api(), guild).await { - None => assert!(true), - Some(_) => assert!(false), - } - crate::teardown(bundle).await - } - - #[tokio::test] - async fn get_channel() { - let mut bundle = crate::setup().await; - let bundle_channel = bundle.channel.clone(); - let bundle_user = &mut bundle.user; - - assert_eq!( - bundle_channel, - Channel::get( - bundle_user.token.as_str(), - bundle.instance.urls.get_api(), - &bundle_channel.id.to_string(), - &mut bundle_user.limits, - &mut bundle.instance.limits - ) - .await - .unwrap() - ); - crate::teardown(bundle).await - } -} From c85ac2d663f0b09c2b06d3042456a5bc3dd46064 Mon Sep 17 00:00:00 2001 From: bitfl0wer Date: Sat, 27 May 2023 22:12:07 +0200 Subject: [PATCH 02/16] Move common code into common::<> --- tests/common/mod.rs | 101 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 tests/common/mod.rs diff --git a/tests/common/mod.rs b/tests/common/mod.rs new file mode 100644 index 0000000..fd58140 --- /dev/null +++ b/tests/common/mod.rs @@ -0,0 +1,101 @@ + +use chorus::{ + instance::{Instance, UserMeta}, + types::{Channel, ChannelCreateSchema, Guild, GuildCreateSchema, RegisterSchema}, + URLBundle, +}; + +#[derive(Debug)] +pub struct TestBundle { + pub urls: URLBundle, + pub user: UserMeta, + pub instance: Instance, + pub guild_id: String, + pub channel: Channel, +} + +// Set up a test by creating an Instance and a User. Reduces Test boilerplate. +pub async fn setup() -> TestBundle { + let urls = URLBundle::new( + "http://localhost:3001/api".to_string(), + "ws://localhost:3001".to_string(), + "http://localhost:3001".to_string(), + ); + let mut instance = Instance::new(urls.clone()).await.unwrap(); + // Requires the existance of the below user. + let reg = RegisterSchema::new( + "integrationtestuser".to_string(), + None, + true, + None, + None, + None, + Some("2000-01-01".to_string()), + None, + None, + None, + ) + .unwrap(); + let guild_create_schema = GuildCreateSchema { + name: Some("Test-Guild!".to_string()), + region: None, + icon: None, + channels: None, + guild_template_code: None, + system_channel_id: None, + rules_channel_id: None, + }; + let channel_create_schema = ChannelCreateSchema { + name: "testchannel".to_string(), + channel_type: Some(0), + topic: None, + icon: None, + bitrate: None, + user_limit: None, + rate_limit_per_user: None, + position: None, + permission_overwrites: None, + parent_id: None, + id: None, + nsfw: Some(false), + rtc_region: None, + default_auto_archive_duration: None, + default_reaction_emoji: None, + flags: Some(0), + default_thread_rate_limit_per_user: Some(0), + video_quality_mode: None, + }; + let mut user = instance.register_account(®).await.unwrap(); + let guild_id = Guild::create(&mut user, urls.get_api(), guild_create_schema) + .await + .unwrap(); + let channel = Channel::create( + &user.token, + urls.get_api(), + guild_id.as_str(), + channel_create_schema, + &mut user.limits, + &mut instance.limits, + ) + .await + .unwrap(); + + TestBundle { + urls, + user, + instance, + guild_id, + channel, + } +} + +// Teardown method to clean up after a test. +pub async fn teardown(mut bundle: TestBundle) { + Guild::delete( + &mut bundle.user, + bundle.instance.urls.get_api(), + bundle.guild_id, + ) + .await; + bundle.user.delete().await; +} From 3028d8f70aa5287c5705603f09971c88378bbee9 Mon Sep 17 00:00:00 2001 From: bitfl0wer Date: Sat, 27 May 2023 22:12:15 +0200 Subject: [PATCH 03/16] move channel test to channel --- tests/channel.rs | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 tests/channel.rs diff --git a/tests/channel.rs b/tests/channel.rs new file mode 100644 index 0000000..4e0db28 --- /dev/null +++ b/tests/channel.rs @@ -0,0 +1,23 @@ +mod common; +use chorus::types::Channel; + +#[tokio::test] +async fn get_channel() { + let mut bundle = common::setup().await; + let bundle_channel = bundle.channel.clone(); + let bundle_user = &mut bundle.user; + + assert_eq!( + bundle_channel, + Channel::get( + bundle_user.token.as_str(), + bundle.instance.urls.get_api(), + &bundle_channel.id.to_string(), + &mut bundle_user.limits, + &mut bundle.instance.limits + ) + .await + .unwrap() + ); + common::teardown(bundle).await +} From 927109e9b633bcd2be062a175e8ed89398319ba6 Mon Sep 17 00:00:00 2001 From: bitfl0wer Date: Sat, 27 May 2023 22:46:27 +0200 Subject: [PATCH 04/16] Move tests to tests/-dir --- src/api/auth/login.rs | 51 ------------- src/api/auth/register.rs | 33 --------- src/api/channels/messages.rs | 134 ----------------------------------- 3 files changed, 218 deletions(-) diff --git a/src/api/auth/login.rs b/src/api/auth/login.rs index 8589b39..7ecc4de 100644 --- a/src/api/auth/login.rs +++ b/src/api/auth/login.rs @@ -70,54 +70,3 @@ pub mod login { } } } - -/*#[cfg(test)] -mod test { - use crate::api::schemas::schemas::{ - AuthEmail, AuthPassword, AuthUsername, LoginSchema, RegisterSchema, - }; - use crate::instance::Instance; - use crate::limit::LimitedRequester; - use crate::URLBundle; - - #[tokio::test] - async fn test_login() { - let urls = URLBundle::new( - "http://localhost:3001/api".to_string(), - "http://localhost:3001".to_string(), - "http://localhost:3001".to_string(), - ); - let limited_requester = LimitedRequester::new(urls.get_api().to_string()).await; - let mut test_instance = Instance::new(urls.clone(), limited_requester) - .await - .unwrap(); - let reg = RegisterSchema::new( - AuthUsername::new("TestAccount".to_string()).unwrap(), - Some(AuthPassword::new("transrights".to_string()).unwrap()), - true, - Some(AuthEmail::new("apiauthlogin1@testlogin.xyz".to_string()).unwrap()), - None, - None, - Some("2000-01-01".to_string()), - None, - None, - None, - ) - .unwrap(); - test_instance.register_account(®).await.unwrap().token; - - let login_schema = LoginSchema::new( - AuthUsername::new("apiauthlogin1@testlogin.xyz".to_string()).unwrap(), - "transrights".to_string(), - Some(false), - None, - None, - None, - ); - - let login_result = test_instance - .login_account(&login_schema.unwrap()) - .await - .unwrap(); - } -}*/ diff --git a/src/api/auth/register.rs b/src/api/auth/register.rs index dc5bf61..d318916 100644 --- a/src/api/auth/register.rs +++ b/src/api/auth/register.rs @@ -78,36 +78,3 @@ pub mod register { } } } - -#[cfg(test)] -mod test { - use crate::instance::Instance; - use crate::limit::LimitedRequester; - use crate::types::RegisterSchema; - use crate::URLBundle; - - #[tokio::test] - async fn test_registration() { - let urls = URLBundle::new( - "http://localhost:3001/api".to_string(), - "http://localhost:3001".to_string(), - "http://localhost:3001".to_string(), - ); - let _limited_requester = LimitedRequester::new().await; - let mut test_instance = Instance::new(urls.clone()).await.unwrap(); - let reg = RegisterSchema::new( - "Hiiii".to_string(), - None, - true, - None, - None, - None, - Some("2000-01-01".to_string()), - None, - None, - None, - ) - .unwrap(); - let _ = test_instance.register_account(®).await.unwrap().token; - } -} diff --git a/src/api/channels/messages.rs b/src/api/channels/messages.rs index 9a68eaa..91e148a 100644 --- a/src/api/channels/messages.rs +++ b/src/api/channels/messages.rs @@ -114,137 +114,3 @@ pub mod messages { } } } - -#[cfg(test)] -mod test { - use crate::instance::UserMeta; - use crate::types::{LoginSchema, MessageSendSchema, PartialDiscordFileAttachment}; - use crate::{instance::Instance}; - - use std::io::Read; - use std::{cell::RefCell, fs::File}; - use std::{io::BufReader, rc::Rc}; - - #[tokio::test] - async fn send_message() { - let channel_id = "1106954414356168802".to_string(); - let mut message = MessageSendSchema::new( - None, - Some("A Message!".to_string()), - None, - None, - None, - None, - None, - None, - None, - None, - ); - let mut instance = Instance::new(crate::URLBundle { - api: "http://localhost:3001/api".to_string(), - wss: "ws://localhost:3001/".to_string(), - cdn: "http://localhost:3001".to_string(), - }) - .await - .unwrap(); - let login_schema: LoginSchema = LoginSchema::new( - "user@test.xyz".to_string(), - "transrights".to_string(), - None, - None, - None, - None, - ) - .unwrap(); - let login_result = instance.login_account(&login_schema).await.unwrap(); - let token = login_result.token; - println!("TOKEN: {}", token); - let settings = login_result.settings; - let limits = instance.limits.clone(); - let mut user = UserMeta::new( - Rc::new(RefCell::new(instance)), - token, - limits, - settings, - None, - ); - let _ = user - .send_message(&mut message, channel_id, None) - .await - .unwrap(); - } - - #[tokio::test] - async fn send_message_attachment() { - let channel_id = "1106954414356168802".to_string(); - - let f = File::open("./README.md").unwrap(); - let mut reader = BufReader::new(f); - let mut buffer = Vec::new(); - - reader.read_to_end(&mut buffer).unwrap(); - - let attachment = PartialDiscordFileAttachment { - id: None, - filename: "README.md".to_string(), - description: None, - content_type: None, - size: None, - url: None, - proxy_url: None, - width: None, - height: None, - ephemeral: None, - duration_secs: None, - waveform: None, - content: buffer, - }; - - let mut message = MessageSendSchema::new( - None, - Some("trans rights now".to_string()), - None, - None, - None, - None, - None, - None, - None, - Some(vec![attachment.clone()]), - ); - let mut instance = Instance::new(crate::URLBundle { - api: "http://localhost:3001/api".to_string(), - wss: "ws://localhost:3001/".to_string(), - cdn: "http://localhost:3001".to_string(), - }) - .await - .unwrap(); - let login_schema: LoginSchema = LoginSchema::new( - "user@test.xyz".to_string(), - "transrights".to_string(), - None, - None, - None, - None, - ) - .unwrap(); - let login_result = instance.login_account(&login_schema).await.unwrap(); - let token = login_result.token; - let settings = login_result.settings; - let limits = instance.limits.clone(); - let mut user = UserMeta::new( - Rc::new(RefCell::new(instance)), - token, - limits, - settings, - None, - ); - let vec_attach = vec![attachment.clone()]; - let _arg = Some(&vec_attach); - let response = user - .send_message(&mut message, channel_id, Some(vec![attachment.clone()])) - .await - .unwrap(); - println!("[Response:] {}", response.text().await.unwrap()); - } -} From 8ea0cc3f3fe60923dd516e21ebb75a8c9f0cf13b Mon Sep 17 00:00:00 2001 From: bitfl0wer Date: Sat, 27 May 2023 22:46:43 +0200 Subject: [PATCH 05/16] Make password optional --- src/types/schema/auth.rs | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/types/schema/auth.rs b/src/types/schema/auth.rs index 073d8d4..68c4546 100644 --- a/src/types/schema/auth.rs +++ b/src/types/schema/auth.rs @@ -187,7 +187,7 @@ You will receive a [`FieldFormatError`], if: #[serde(rename_all = "snake_case")] pub struct LoginSchema { pub login: String, - pub password: String, + pub password: Option, pub undelete: Option, pub captcha_key: Option, pub login_source: Option, @@ -210,15 +210,12 @@ impl LoginSchema { */ pub fn new( login: String, - password: String, + password: Option, undelete: Option, captcha_key: Option, login_source: Option, gift_code_sku_id: Option, ) -> Result { - let login = AuthUsername::new(login)?.username; - let password = AuthPassword::new(password)?.password; - Ok(LoginSchema { login, password, From 8f123c20544509454372b3c743bd13e96faf60d3 Mon Sep 17 00:00:00 2001 From: bitfl0wer Date: Sat, 27 May 2023 22:46:50 +0200 Subject: [PATCH 06/16] Add auth tests --- tests/auth.rs | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 tests/auth.rs diff --git a/tests/auth.rs b/tests/auth.rs new file mode 100644 index 0000000..2b52cea --- /dev/null +++ b/tests/auth.rs @@ -0,0 +1,42 @@ +mod common; + +use chorus::types; + +#[tokio::test] +async fn test_registration() { + let mut bundle = common::setup().await; + let reg = types::RegisterSchema::new( + "Hiiii".to_string(), + None, + true, + None, + None, + None, + Some("2000-01-01".to_string()), + None, + None, + None, + ) + .unwrap(); + bundle.instance.register_account(®).await.unwrap(); + common::teardown(bundle).await; +} + +#[tokio::test] +async fn test_login() { + let mut bundle = common::setup().await; + let login_schema = types::LoginSchema::new( + "integrationtestuser".to_string(), + None, + Some(false), + None, + None, + None, + ); + bundle + .instance + .login_account(&login_schema.unwrap()) + .await + .unwrap(); + common::teardown(bundle).await; +} From 92af5f09b6649bcf39901e6c6d8c9cf031024205 Mon Sep 17 00:00:00 2001 From: bitfl0wer Date: Sat, 27 May 2023 22:46:57 +0200 Subject: [PATCH 07/16] Add message tests --- tests/message.rs | 80 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 tests/message.rs diff --git a/tests/message.rs b/tests/message.rs new file mode 100644 index 0000000..6ccda0b --- /dev/null +++ b/tests/message.rs @@ -0,0 +1,80 @@ +mod common; + +use chorus::types; +use std::fs::File; +use std::io::{BufReader, Read}; + +#[tokio::test] +async fn send_message() { + let mut bundle = common::setup().await; + let mut message = types::MessageSendSchema::new( + None, + Some("A Message!".to_string()), + None, + None, + None, + None, + None, + None, + None, + None, + ); + let _ = bundle + .user + .send_message(&mut message, bundle.channel.id.to_string(), None) + .await + .unwrap(); + common::teardown(bundle).await +} + +#[tokio::test] +async fn send_message_attachment() { + let f = File::open("./README.md").unwrap(); + let mut reader = BufReader::new(f); + let mut buffer = Vec::new(); + let mut bundle = common::setup().await; + + reader.read_to_end(&mut buffer).unwrap(); + + let attachment = types::PartialDiscordFileAttachment { + id: None, + filename: "README.md".to_string(), + description: None, + content_type: None, + size: None, + url: None, + proxy_url: None, + width: None, + height: None, + ephemeral: None, + duration_secs: None, + waveform: None, + content: buffer, + }; + + let mut message = types::MessageSendSchema::new( + None, + Some("trans rights now".to_string()), + None, + None, + None, + None, + None, + None, + None, + Some(vec![attachment.clone()]), + ); + + let vec_attach = vec![attachment.clone()]; + let _arg = Some(&vec_attach); + bundle + .user + .send_message( + &mut message, + bundle.channel.id.to_string(), + Some(vec![attachment.clone()]), + ) + .await + .unwrap(); + common::teardown(bundle).await +} From c8caf2afb7a2894edc0f9fd21bda91a7d0595946 Mon Sep 17 00:00:00 2001 From: bitfl0wer Date: Sat, 27 May 2023 22:47:14 +0200 Subject: [PATCH 08/16] Remove newline at beginning of file --- tests/common/mod.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/common/mod.rs b/tests/common/mod.rs index fd58140..3fdb42b 100644 --- a/tests/common/mod.rs +++ b/tests/common/mod.rs @@ -1,4 +1,3 @@ - use chorus::{ instance::{Instance, UserMeta}, types::{Channel, ChannelCreateSchema, Guild, GuildCreateSchema, RegisterSchema}, From 1e844445fca198fa3ca5ec9105269402cfcdf03e Mon Sep 17 00:00:00 2001 From: bitfl0wer Date: Sat, 27 May 2023 22:47:46 +0200 Subject: [PATCH 09/16] Remove empty test --- src/api/users/users.rs | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/api/users/users.rs b/src/api/users/users.rs index 4113c6b..098a92f 100644 --- a/src/api/users/users.rs +++ b/src/api/users/users.rs @@ -178,10 +178,3 @@ impl Instance { .await } } - -#[cfg(test)] -mod test { - - #[tokio::test] - async fn get_user() {} -} From 503edf2facf0f90614850e7a74bd3480a873a80c Mon Sep 17 00:00:00 2001 From: bitfl0wer Date: Sat, 27 May 2023 22:51:43 +0200 Subject: [PATCH 10/16] Move test to tests-dir --- src/api/policies/instance/instance.rs | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/src/api/policies/instance/instance.rs b/src/api/policies/instance/instance.rs index 20d7d6f..f183e11 100644 --- a/src/api/policies/instance/instance.rs +++ b/src/api/policies/instance/instance.rs @@ -37,21 +37,3 @@ impl Instance { Ok(instance_policies_schema) } } - -#[cfg(test)] -mod instance_policies_schema_test { - use crate::{instance::Instance, limit::LimitedRequester, URLBundle}; - - #[tokio::test] - async fn generate_instance_policies_schema() { - let urls = URLBundle::new( - "http://localhost:3001/api".to_string(), - "http://localhost:3001".to_string(), - "http://localhost:3001".to_string(), - ); - let _limited_requester = LimitedRequester::new().await; - let test_instance = Instance::new(urls.clone()).await.unwrap(); - - let _schema = test_instance.general_configuration_schema().await.unwrap(); - } -} From daf4e923d577a6c405386c704d82c9ff6b509753 Mon Sep 17 00:00:00 2001 From: bitfl0wer Date: Sat, 27 May 2023 22:51:57 +0200 Subject: [PATCH 11/16] Add instance tests --- tests/instance.rs | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 tests/instance.rs diff --git a/tests/instance.rs b/tests/instance.rs new file mode 100644 index 0000000..d3cd5f0 --- /dev/null +++ b/tests/instance.rs @@ -0,0 +1,12 @@ +mod common; + +#[tokio::test] +async fn generate_general_configuration_schema() { + let bundle = common::setup().await; + bundle + .instance + .general_configuration_schema() + .await + .unwrap(); + common::teardown(bundle).await; +} From 06c49c6895fa01c9729653ff52dd832c7a1f1be3 Mon Sep 17 00:00:00 2001 From: bitfl0wer Date: Sat, 27 May 2023 22:53:40 +0200 Subject: [PATCH 12/16] remove login test --- tests/auth.rs | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/tests/auth.rs b/tests/auth.rs index 2b52cea..f90e229 100644 --- a/tests/auth.rs +++ b/tests/auth.rs @@ -21,22 +21,3 @@ async fn test_registration() { bundle.instance.register_account(®).await.unwrap(); common::teardown(bundle).await; } - -#[tokio::test] -async fn test_login() { - let mut bundle = common::setup().await; - let login_schema = types::LoginSchema::new( - "integrationtestuser".to_string(), - None, - Some(false), - None, - None, - None, - ); - bundle - .instance - .login_account(&login_schema.unwrap()) - .await - .unwrap(); - common::teardown(bundle).await; -} From 77ae3f10b6345cad190e6452a64e1af5235a37c2 Mon Sep 17 00:00:00 2001 From: bitfl0wer Date: Sun, 28 May 2023 00:50:52 +0200 Subject: [PATCH 13/16] run cargo fmt && cargo fix --- src/api/guilds/mod.rs | 2 - src/gateway.rs | 825 ++++++++++++++---- .../config/types/subconfigs/region/mod.rs | 2 - src/types/entities/attachment.rs | 1 - src/types/entities/audit_log.rs | 4 +- src/types/entities/auto_moderation.rs | 34 +- src/types/entities/channel.rs | 5 +- src/types/entities/emoji.rs | 3 +- src/types/entities/guild.rs | 12 +- src/types/entities/mod.rs | 16 +- src/types/entities/relationship.rs | 8 +- src/types/entities/role.rs | 4 +- src/types/entities/stage_instance.rs | 8 +- src/types/entities/sticker.rs | 1 - src/types/entities/user.rs | 6 +- src/types/entities/user_settings.rs | 2 - src/types/entities/voice_state.rs | 2 +- src/types/entities/webhook.rs | 2 +- src/types/events/application.rs | 4 +- src/types/events/auto_moderation.rs | 15 +- src/types/events/call.rs | 2 +- src/types/events/channel.rs | 2 +- src/types/events/integration.rs | 2 +- src/types/events/interaction.rs | 2 +- src/types/events/invite.rs | 4 +- src/types/events/lazy_request.rs | 10 +- src/types/events/message.rs | 15 +- src/types/events/mod.rs | 48 +- src/types/events/passive_update.rs | 6 +- src/types/events/presence.rs | 2 +- src/types/events/ready.rs | 14 +- src/types/events/relationship.rs | 6 +- src/types/events/session.rs | 6 +- src/types/events/stage_instance.rs | 8 +- src/types/events/thread.rs | 2 +- src/types/events/voice.rs | 14 +- src/types/events/webhooks.rs | 2 +- src/types/interfaces/connected_account.rs | 1 + src/types/interfaces/mod.rs | 2 +- src/types/interfaces/status.rs | 2 +- src/types/schema/user.rs | 2 +- 41 files changed, 799 insertions(+), 309 deletions(-) diff --git a/src/api/guilds/mod.rs b/src/api/guilds/mod.rs index 242a03e..7108ef7 100644 --- a/src/api/guilds/mod.rs +++ b/src/api/guilds/mod.rs @@ -1,3 +1 @@ pub mod guilds; - -use guilds::*; diff --git a/src/gateway.rs b/src/gateway.rs index 90bcff5..009cac5 100644 --- a/src/gateway.rs +++ b/src/gateway.rs @@ -40,11 +40,10 @@ pub struct GatewayHandle { impl GatewayHandle { /// Sends json to the gateway with an opcode async fn send_json_event(&self, op: u8, to_send: serde_json::Value) { - let gateway_payload = types::GatewaySendPayload { op, - d: Some(to_send), - s: None + d: Some(to_send), + s: None, }; let payload_json = serde_json::to_string(&gateway_payload).unwrap(); @@ -92,7 +91,6 @@ impl GatewayHandle { /// Sends an update voice state to the server pub async fn send_update_voice_state(&self, to_send: types::UpdateVoiceState) { - let to_send_value = serde_json::to_value(&to_send).unwrap(); println!("GW: Sending Update Voice State.."); @@ -102,7 +100,6 @@ impl GatewayHandle { /// Sends a call sync to the server pub async fn send_call_sync(&self, to_send: types::CallSync) { - let to_send_value = serde_json::to_value(&to_send).unwrap(); println!("GW: Sending Call Sync.."); @@ -112,7 +109,6 @@ impl GatewayHandle { /// Sends a Lazy Request pub async fn send_lazy_request(&self, to_send: types::LazyRequest) { - let to_send_value = serde_json::to_value(&to_send).unwrap(); println!("GW: Sending Lazy Request.."); @@ -167,7 +163,8 @@ impl Gateway { // Wait for the first hello and then spawn both tasks so we avoid nested tasks // This automatically spawns the heartbeat task, but from the main thread let msg = ws_rx.next().await.unwrap().unwrap(); - let gateway_payload: types::GatewayReceivePayload = serde_json::from_str(msg.to_text().unwrap()).unwrap(); + let gateway_payload: types::GatewayReceivePayload = + serde_json::from_str(msg.to_text().unwrap()).unwrap(); if gateway_payload.op != 10 { println!("Recieved non hello on gateway init, what is happening?"); @@ -180,8 +177,12 @@ impl Gateway { println!("GW: Received Hello"); - let gateway_hello: types::HelloData = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - gateway.heartbeat_handler = Some(HeartbeatHandler::new(gateway_hello.heartbeat_interval, shared_tx.clone())); + let gateway_hello: types::HelloData = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + gateway.heartbeat_handler = Some(HeartbeatHandler::new( + gateway_hello.heartbeat_interval, + shared_tx.clone(), + )); // Now we can continously check for messages in a different task, since we aren't going to receive another hello task::spawn(async move { @@ -207,7 +208,8 @@ impl Gateway { return; } - let gateway_payload: types::GatewayReceivePayload = serde_json::from_str(msg.to_text().unwrap()).unwrap(); + let gateway_payload: types::GatewayReceivePayload = + serde_json::from_str(msg.to_text().unwrap()).unwrap(); // See https://discord.com/developers/docs/topics/opcodes-and-status-codes#gateway-gateway-opcodes match gateway_payload.op { @@ -219,291 +221,781 @@ impl Gateway { println!("GW: Received {}..", gateway_payload_t); //println!("Event data dump: {}", gateway_payload.d.clone().unwrap().get()); - + // See https://discord.com/developers/docs/topics/gateway-events#receive-events // "Some" of these are uncodumented match gateway_payload_t.as_str() { "READY" => { - let new_data: types::GatewayReady = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.session.ready.update_data(new_data).await; - }, + let new_data: types::GatewayReady = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .session + .ready + .update_data(new_data) + .await; + } "READY_SUPPLEMENTAL" => { - let new_data: types::GatewayReadySupplemental = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.session.ready_supplimental.update_data(new_data).await; + let new_data: types::GatewayReadySupplemental = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .session + .ready_supplimental + .update_data(new_data) + .await; } "RESUMED" => {} "APPLICATION_COMMAND_PERMISSIONS_UPDATE" => { - let new_data: types::ApplicationCommandPermissionsUpdate = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.application.command_permissions_update.update_data(new_data).await; + let new_data: types::ApplicationCommandPermissionsUpdate = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .application + .command_permissions_update + .update_data(new_data) + .await; } "AUTO_MODERATION_RULE_CREATE" => { - let new_data: types::AutoModerationRuleCreate = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.auto_moderation.rule_create.update_data(new_data).await; + let new_data: types::AutoModerationRuleCreate = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .auto_moderation + .rule_create + .update_data(new_data) + .await; } "AUTO_MODERATION_RULE_UPDATE" => { - let new_data: types::AutoModerationRuleUpdate = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.auto_moderation.rule_update.update_data(new_data).await; + let new_data: types::AutoModerationRuleUpdate = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .auto_moderation + .rule_update + .update_data(new_data) + .await; } "AUTO_MODERATION_RULE_DELETE" => { - let new_data: types::AutoModerationRuleDelete = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.auto_moderation.rule_delete.update_data(new_data).await; + let new_data: types::AutoModerationRuleDelete = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .auto_moderation + .rule_delete + .update_data(new_data) + .await; } "AUTO_MODERATION_ACTION_EXECUTION" => { - let new_data: types::AutoModerationActionExecution = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.auto_moderation.action_execution.update_data(new_data).await; + let new_data: types::AutoModerationActionExecution = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .auto_moderation + .action_execution + .update_data(new_data) + .await; } "CHANNEL_CREATE" => { - let new_data: types::ChannelCreate = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.channel.create.update_data(new_data).await; + let new_data: types::ChannelCreate = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .channel + .create + .update_data(new_data) + .await; } "CHANNEL_UPDATE" => { - let new_data: types::ChannelUpdate = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.channel.update.update_data(new_data).await; + let new_data: types::ChannelUpdate = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .channel + .update + .update_data(new_data) + .await; } "CHANNEL_UNREAD_UPDATE" => { - let new_data: types::ChannelUnreadUpdate = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.channel.unread_update.update_data(new_data).await; + let new_data: types::ChannelUnreadUpdate = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .channel + .unread_update + .update_data(new_data) + .await; } "CHANNEL_DELETE" => { - let new_data: types::ChannelDelete = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.channel.delete.update_data(new_data).await; + let new_data: types::ChannelDelete = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .channel + .delete + .update_data(new_data) + .await; } "CHANNEL_PINS_UPDATE" => { - let new_data: types::ChannelPinsUpdate = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.channel.pins_update.update_data(new_data).await; + let new_data: types::ChannelPinsUpdate = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .channel + .pins_update + .update_data(new_data) + .await; } "CALL_CREATE" => { - let new_data: types::CallCreate = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.call.create.update_data(new_data).await; - }, + let new_data: types::CallCreate = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .call + .create + .update_data(new_data) + .await; + } "CALL_UPDATE" => { - let new_data: types::CallUpdate = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.call.update.update_data(new_data).await; + let new_data: types::CallUpdate = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .call + .update + .update_data(new_data) + .await; } "CALL_DELETE" => { - let new_data: types::CallDelete = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.call.delete.update_data(new_data).await; + let new_data: types::CallDelete = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .call + .delete + .update_data(new_data) + .await; } "THREAD_CREATE" => { - let new_data: types::ThreadCreate = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.thread.create.update_data(new_data).await; + let new_data: types::ThreadCreate = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .thread + .create + .update_data(new_data) + .await; } "THREAD_UPDATE" => { - let new_data: types::ThreadUpdate = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.thread.update.update_data(new_data).await; + let new_data: types::ThreadUpdate = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .thread + .update + .update_data(new_data) + .await; } "THREAD_DELETE" => { - let new_data: types::ThreadDelete = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.thread.delete.update_data(new_data).await; + let new_data: types::ThreadDelete = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .thread + .delete + .update_data(new_data) + .await; } "THREAD_LIST_SYNC" => { - let new_data: types::ThreadListSync = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.thread.list_sync.update_data(new_data).await; + let new_data: types::ThreadListSync = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .thread + .list_sync + .update_data(new_data) + .await; } "THREAD_MEMBER_UPDATE" => { - let new_data: types::ThreadMemberUpdate = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.thread.member_update.update_data(new_data).await; + let new_data: types::ThreadMemberUpdate = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .thread + .member_update + .update_data(new_data) + .await; } "THREAD_MEMBERS_UPDATE" => { - let new_data: types::ThreadMembersUpdate = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.thread.members_update.update_data(new_data).await; + let new_data: types::ThreadMembersUpdate = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .thread + .members_update + .update_data(new_data) + .await; } "GUILD_CREATE" => { - let new_data: types::GuildCreate = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.guild.create.update_data(new_data).await; + let new_data: types::GuildCreate = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .guild + .create + .update_data(new_data) + .await; } "GUILD_UPDATE" => { - let new_data: types::GuildUpdate = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.guild.update.update_data(new_data).await; + let new_data: types::GuildUpdate = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .guild + .update + .update_data(new_data) + .await; } "GUILD_DELETE" => { - let new_data: types::GuildDelete = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.guild.delete.update_data(new_data).await; + let new_data: types::GuildDelete = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .guild + .delete + .update_data(new_data) + .await; } "GUILD_AUDIT_LOG_ENTRY_CREATE" => { - let new_data: types::GuildAuditLogEntryCreate = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.guild.audit_log_entry_create.update_data(new_data).await; + let new_data: types::GuildAuditLogEntryCreate = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .guild + .audit_log_entry_create + .update_data(new_data) + .await; } "GUILD_BAN_ADD" => { - let new_data: types::GuildBanAdd = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.guild.ban_add.update_data(new_data).await; + let new_data: types::GuildBanAdd = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .guild + .ban_add + .update_data(new_data) + .await; } "GUILD_BAN_REMOVE" => { - let new_data: types::GuildBanRemove = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.guild.ban_remove.update_data(new_data).await; + let new_data: types::GuildBanRemove = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .guild + .ban_remove + .update_data(new_data) + .await; } "GUILD_EMOJIS_UPDATE" => { - let new_data: types::GuildEmojisUpdate = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.guild.emojis_update.update_data(new_data).await; + let new_data: types::GuildEmojisUpdate = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .guild + .emojis_update + .update_data(new_data) + .await; } "GUILD_STICKERS_UPDATE" => { - let new_data: types::GuildStickersUpdate = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.guild.stickers_update.update_data(new_data).await; + let new_data: types::GuildStickersUpdate = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .guild + .stickers_update + .update_data(new_data) + .await; } "GUILD_INTEGRATIONS_UPDATE" => { - let new_data: types::GuildIntegrationsUpdate = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.guild.integrations_update.update_data(new_data).await; + let new_data: types::GuildIntegrationsUpdate = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .guild + .integrations_update + .update_data(new_data) + .await; } "GUILD_MEMBER_ADD" => { - let new_data: types::GuildMemberAdd = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.guild.member_add.update_data(new_data).await; + let new_data: types::GuildMemberAdd = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .guild + .member_add + .update_data(new_data) + .await; } "GUILD_MEMBER_REMOVE" => { - let new_data: types::GuildMemberRemove = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.guild.member_remove.update_data(new_data).await; + let new_data: types::GuildMemberRemove = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .guild + .member_remove + .update_data(new_data) + .await; } "GUILD_MEMBER_UPDATE" => { - let new_data: types::GuildMemberUpdate = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.guild.member_update.update_data(new_data).await; + let new_data: types::GuildMemberUpdate = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .guild + .member_update + .update_data(new_data) + .await; } "GUILD_MEMBERS_CHUNK" => { - let new_data: types::GuildMembersChunk = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.guild.members_chunk.update_data(new_data).await; + let new_data: types::GuildMembersChunk = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .guild + .members_chunk + .update_data(new_data) + .await; } "GUILD_ROLE_CREATE" => { - let new_data: types::GuildRoleCreate = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.guild.role_create.update_data(new_data).await; + let new_data: types::GuildRoleCreate = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .guild + .role_create + .update_data(new_data) + .await; } "GUILD_ROLE_UPDATE" => { - let new_data: types::GuildRoleUpdate = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.guild.role_update.update_data(new_data).await; + let new_data: types::GuildRoleUpdate = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .guild + .role_update + .update_data(new_data) + .await; } "GUILD_ROLE_DELETE" => { - let new_data: types::GuildRoleDelete = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.guild.role_delete.update_data(new_data).await; + let new_data: types::GuildRoleDelete = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .guild + .role_delete + .update_data(new_data) + .await; } "GUILD_SCHEDULED_EVENT_CREATE" => { - let new_data: types::GuildScheduledEventCreate = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.guild.role_scheduled_event_create.update_data(new_data).await; + let new_data: types::GuildScheduledEventCreate = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .guild + .role_scheduled_event_create + .update_data(new_data) + .await; } "GUILD_SCHEDULED_EVENT_UPDATE" => { - let new_data: types::GuildScheduledEventUpdate = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.guild.role_scheduled_event_update.update_data(new_data).await; + let new_data: types::GuildScheduledEventUpdate = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .guild + .role_scheduled_event_update + .update_data(new_data) + .await; } "GUILD_SCHEDULED_EVENT_DELETE" => { - let new_data: types::GuildScheduledEventDelete = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.guild.role_scheduled_event_delete.update_data(new_data).await; + let new_data: types::GuildScheduledEventDelete = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .guild + .role_scheduled_event_delete + .update_data(new_data) + .await; } "GUILD_SCHEDULED_EVENT_USER_ADD" => { - let new_data: types::GuildScheduledEventUserAdd = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.guild.role_scheduled_event_user_add.update_data(new_data).await; + let new_data: types::GuildScheduledEventUserAdd = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .guild + .role_scheduled_event_user_add + .update_data(new_data) + .await; } "GUILD_SCHEDULED_EVENT_USER_REMOVE" => { - let new_data: types::GuildScheduledEventUserRemove = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.guild.role_scheduled_event_user_remove.update_data(new_data).await; + let new_data: types::GuildScheduledEventUserRemove = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .guild + .role_scheduled_event_user_remove + .update_data(new_data) + .await; } "PASSIVE_UPDATE_V1" => { - let new_data: types::PassiveUpdateV1 = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.guild.passive_update_v1.update_data(new_data).await; + let new_data: types::PassiveUpdateV1 = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .guild + .passive_update_v1 + .update_data(new_data) + .await; } "INTEGRATION_CREATE" => { - let new_data: types::IntegrationCreate = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.integration.create.update_data(new_data).await; + let new_data: types::IntegrationCreate = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .integration + .create + .update_data(new_data) + .await; } "INTEGRATION_UPDATE" => { - let new_data: types::IntegrationUpdate = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.integration.update.update_data(new_data).await; + let new_data: types::IntegrationUpdate = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .integration + .update + .update_data(new_data) + .await; } "INTEGRATION_DELETE" => { - let new_data: types::IntegrationDelete = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.integration.delete.update_data(new_data).await; + let new_data: types::IntegrationDelete = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .integration + .delete + .update_data(new_data) + .await; } "INTERACTION_CREATE" => { - let new_data: types::InteractionCreate = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.interaction.create.update_data(new_data).await; + let new_data: types::InteractionCreate = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .interaction + .create + .update_data(new_data) + .await; } "INVITE_CREATE" => { - let new_data: types::InviteCreate = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.invite.create.update_data(new_data).await; + let new_data: types::InviteCreate = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .invite + .create + .update_data(new_data) + .await; } "INVITE_DELETE" => { - let new_data: types::InviteDelete = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.invite.delete.update_data(new_data).await; + let new_data: types::InviteDelete = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .invite + .delete + .update_data(new_data) + .await; } "MESSAGE_CREATE" => { - let new_data: types::MessageCreate = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.message.create.update_data(new_data).await; + let new_data: types::MessageCreate = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .message + .create + .update_data(new_data) + .await; } "MESSAGE_UPDATE" => { - let new_data: types::MessageUpdate = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.message.update.update_data(new_data).await; + let new_data: types::MessageUpdate = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .message + .update + .update_data(new_data) + .await; } "MESSAGE_DELETE" => { - let new_data: types::MessageDelete = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.message.delete.update_data(new_data).await; + let new_data: types::MessageDelete = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .message + .delete + .update_data(new_data) + .await; } "MESSAGE_DELETE_BULK" => { - let new_data: types::MessageDeleteBulk = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.message.delete_bulk.update_data(new_data).await; + let new_data: types::MessageDeleteBulk = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .message + .delete_bulk + .update_data(new_data) + .await; } "MESSAGE_REACTION_ADD" => { - let new_data: types::MessageReactionAdd = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.message.reaction_add.update_data(new_data).await; + let new_data: types::MessageReactionAdd = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .message + .reaction_add + .update_data(new_data) + .await; } "MESSAGE_REACTION_REMOVE" => { - let new_data: types::MessageReactionRemove = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.message.reaction_remove.update_data(new_data).await; + let new_data: types::MessageReactionRemove = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .message + .reaction_remove + .update_data(new_data) + .await; } "MESSAGE_REACTION_REMOVE_ALL" => { - let new_data: types::MessageReactionRemoveAll = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.message.reaction_remove_all.update_data(new_data).await; + let new_data: types::MessageReactionRemoveAll = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .message + .reaction_remove_all + .update_data(new_data) + .await; } "MESSAGE_REACTION_REMOVE_EMOJI" => { - let new_data: types::MessageReactionRemoveEmoji= serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.message.reaction_remove_emoji.update_data(new_data).await; - }, + let new_data: types::MessageReactionRemoveEmoji = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .message + .reaction_remove_emoji + .update_data(new_data) + .await; + } "MESSAGE_ACK" => { - let new_data: types::MessageACK = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.message.ack.update_data(new_data).await; + let new_data: types::MessageACK = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .message + .ack + .update_data(new_data) + .await; } "PRESENCE_UPDATE" => { - let new_data: types::PresenceUpdate = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.user.presence_update.update_data(new_data).await; + let new_data: types::PresenceUpdate = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .user + .presence_update + .update_data(new_data) + .await; } "RELATIONSHIP_ADD" => { - let new_data: types::RelationshipAdd = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.relationship.add.update_data(new_data).await; + let new_data: types::RelationshipAdd = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .relationship + .add + .update_data(new_data) + .await; } "RELATIONSHIP_REMOVE" => { - let new_data: types::RelationshipRemove = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.relationship.remove.update_data(new_data).await; + let new_data: types::RelationshipRemove = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .relationship + .remove + .update_data(new_data) + .await; } "STAGE_INSTANCE_CREATE" => { - let new_data: types::StageInstanceCreate = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.stage_instance.create.update_data(new_data).await; + let new_data: types::StageInstanceCreate = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .stage_instance + .create + .update_data(new_data) + .await; } "STAGE_INSTANCE_UPDATE" => { - let new_data: types::StageInstanceUpdate = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.stage_instance.update.update_data(new_data).await; + let new_data: types::StageInstanceUpdate = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .stage_instance + .update + .update_data(new_data) + .await; } "STAGE_INSTANCE_DELETE" => { - let new_data: types::StageInstanceDelete = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.stage_instance.delete.update_data(new_data).await; + let new_data: types::StageInstanceDelete = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .stage_instance + .delete + .update_data(new_data) + .await; } "SESSIONS_REPLACE" => { - let sessions: Vec = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - let new_data = types::SessionsReplace {sessions}; - self.events.lock().await.session.replace.update_data(new_data).await; + let sessions: Vec = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + let new_data = types::SessionsReplace { sessions }; + self.events + .lock() + .await + .session + .replace + .update_data(new_data) + .await; } "TYPING_START" => { - let new_data: types::TypingStartEvent = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.user.typing_start_event.update_data(new_data).await; + let new_data: types::TypingStartEvent = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .user + .typing_start_event + .update_data(new_data) + .await; } "USER_UPDATE" => { - let new_data: types::UserUpdate = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.user.update.update_data(new_data).await; + let new_data: types::UserUpdate = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .user + .update + .update_data(new_data) + .await; } "VOICE_STATE_UPDATE" => { - let new_data: types::VoiceStateUpdate = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.voice.state_update.update_data(new_data).await; + let new_data: types::VoiceStateUpdate = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .voice + .state_update + .update_data(new_data) + .await; } "VOICE_SERVER_UPDATE" => { - let new_data: types::VoiceServerUpdate = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.voice.server_update.update_data(new_data).await; + let new_data: types::VoiceServerUpdate = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .voice + .server_update + .update_data(new_data) + .await; } "WEBHOOKS_UPDATE" => { - let new_data: types::WebhooksUpdate = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); - self.events.lock().await.webhooks.update.update_data(new_data).await; + let new_data: types::WebhooksUpdate = + serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap(); + self.events + .lock() + .await + .webhooks + .update + .update_data(new_data) + .await; } _ => { println!("Received unrecognised gateway event ({})! Please open an issue on the chorus github so we can implement it", &gateway_payload_t); @@ -531,8 +1023,15 @@ impl Gateway { 11 => { println!("GW: Received Heartbeat ACK"); } - 2 | 3 | 4 | 6 | 8 => {panic!("Received gateway op code that's meant to be sent, not received ({})", gateway_payload.op)} - _ => {println!("Received unrecognised gateway op code ({})! Please open an issue on the chorus github so we can implement it", gateway_payload.op);} + 2 | 3 | 4 | 6 | 8 => { + panic!( + "Received gateway op code that's meant to be sent, not received ({})", + gateway_payload.op + ) + } + _ => { + println!("Received unrecognised gateway op code ({})! Please open an issue on the chorus github so we can implement it", gateway_payload.op); + } } // If we have an active heartbeat thread and we received a seq number we should let it know @@ -755,7 +1254,7 @@ mod events { pub struct Session { pub ready: GatewayEvent, pub ready_supplimental: GatewayEvent, - pub replace: GatewayEvent + pub replace: GatewayEvent, } #[derive(Default, Debug)] @@ -775,7 +1274,7 @@ mod events { pub reaction_remove: GatewayEvent, pub reaction_remove_all: GatewayEvent, pub reaction_remove_emoji: GatewayEvent, - pub ack: GatewayEvent + pub ack: GatewayEvent, } #[derive(Default, Debug)] @@ -839,14 +1338,14 @@ mod events { #[derive(Default, Debug)] pub struct Invite { pub create: GatewayEvent, - pub delete: GatewayEvent + pub delete: GatewayEvent, } #[derive(Default, Debug)] pub struct Integration { pub create: GatewayEvent, pub update: GatewayEvent, - pub delete: GatewayEvent + pub delete: GatewayEvent, } #[derive(Default, Debug)] @@ -858,13 +1357,13 @@ mod events { pub struct Call { pub create: GatewayEvent, pub update: GatewayEvent, - pub delete: GatewayEvent + pub delete: GatewayEvent, } #[derive(Default, Debug)] pub struct Voice { pub state_update: GatewayEvent, - pub server_update: GatewayEvent + pub server_update: GatewayEvent, } #[derive(Default, Debug)] diff --git a/src/types/config/types/subconfigs/region/mod.rs b/src/types/config/types/subconfigs/region/mod.rs index e0b1800..08c3b73 100644 --- a/src/types/config/types/subconfigs/region/mod.rs +++ b/src/types/config/types/subconfigs/region/mod.rs @@ -1,7 +1,5 @@ use serde::{Deserialize, Serialize}; - - #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] pub struct LatLong { pub latitude: f64, diff --git a/src/types/entities/attachment.rs b/src/types/entities/attachment.rs index 210f738..5bdfede 100644 --- a/src/types/entities/attachment.rs +++ b/src/types/entities/attachment.rs @@ -1,4 +1,3 @@ -use crate::types::Message; use serde::{Deserialize, Serialize}; use crate::types::utils::Snowflake; diff --git a/src/types/entities/audit_log.rs b/src/types/entities/audit_log.rs index 4e5dba6..21682ae 100644 --- a/src/types/entities/audit_log.rs +++ b/src/types/entities/audit_log.rs @@ -13,7 +13,7 @@ pub struct AuditLogEntry { pub action_type: u8, // to:do add better options type pub options: Option, - pub reason: Option + pub reason: Option, } #[derive(Serialize, Deserialize, Debug, Default, Clone)] @@ -21,5 +21,5 @@ pub struct AuditLogEntry { pub struct AuditLogChange { pub new_value: Option, pub old_value: Option, - pub key: String + pub key: String, } diff --git a/src/types/entities/auto_moderation.rs b/src/types/entities/auto_moderation.rs index 0b723c1..144aa4b 100644 --- a/src/types/entities/auto_moderation.rs +++ b/src/types/entities/auto_moderation.rs @@ -1,5 +1,5 @@ use serde::{Deserialize, Serialize}; -use serde_repr::{Serialize_repr, Deserialize_repr}; +use serde_repr::{Deserialize_repr, Serialize_repr}; use crate::types::utils::Snowflake; @@ -21,23 +21,23 @@ pub struct AutoModerationRule { #[derive(Serialize_repr, Deserialize_repr, Debug, Clone, Default)] #[repr(u8)] -#[serde(rename_all = "SCREAMING_SNAKE_CASE")] +#[serde(rename_all = "SCREAMING_SNAKE_CASE")] /// See https://discord.com/developers/docs/resources/auto-moderation#auto-moderation-rule-object-event-types pub enum AutoModerationRuleEventType { #[default] - MessageSend = 1 + MessageSend = 1, } #[derive(Serialize_repr, Deserialize_repr, Debug, Clone, Default)] #[repr(u8)] -#[serde(rename_all = "SCREAMING_SNAKE_CASE")] +#[serde(rename_all = "SCREAMING_SNAKE_CASE")] /// See https://discord.com/developers/docs/resources/auto-moderation#auto-moderation-rule-object-trigger-types pub enum AutoModerationRuleTriggerType { #[default] Keyword = 1, Spam = 3, KeywordPreset = 4, - MentionSpam = 5 + MentionSpam = 5, } #[derive(Serialize, Deserialize, Debug, Clone, Default)] @@ -48,7 +48,7 @@ pub enum AutoModerationRuleTriggerMetadata { ForKeywordPreset(AutoModerationRuleTriggerMetadataForKeywordPreset), ForMentionSpam(AutoModerationRuleTriggerMetadataForMentionSpam), #[default] - None + None, } #[derive(Serialize, Deserialize, Debug, Clone, Default)] @@ -71,37 +71,37 @@ pub struct AutoModerationRuleTriggerMetadataForKeywordPreset { pub struct AutoModerationRuleTriggerMetadataForMentionSpam { /// Max 50 pub mention_total_limit: u8, - pub mention_raid_protection_enabled: bool + pub mention_raid_protection_enabled: bool, } #[derive(Serialize_repr, Deserialize_repr, Debug, Clone, Default)] #[repr(u8)] -#[serde(rename_all = "SCREAMING_SNAKE_CASE")] +#[serde(rename_all = "SCREAMING_SNAKE_CASE")] /// See https://discord.com/developers/docs/resources/auto-moderation#auto-moderation-rule-object-keyword-preset-types pub enum AutoModerationRuleKeywordPresetType { #[default] Profanity = 1, SexualContent = 2, - Slurs = 3 + Slurs = 3, } #[derive(Serialize, Deserialize, Debug, Clone, Default)] /// See https://discord.com/developers/docs/resources/auto-moderation#auto-moderation-action-object pub struct AutoModerationAction { - #[serde(rename = "type")] + #[serde(rename = "type")] pub action_type: AutoModerationActionType, - pub metadata: Option + pub metadata: Option, } #[derive(Serialize_repr, Deserialize_repr, Debug, Clone, Default)] #[repr(u8)] -#[serde(rename_all = "SCREAMING_SNAKE_CASE")] +#[serde(rename_all = "SCREAMING_SNAKE_CASE")] /// See https://discord.com/developers/docs/resources/auto-moderation#auto-moderation-action-object-action-types pub enum AutoModerationActionType { #[default] BlockMessage = 1, SendAlertMessage = 2, - Timeout = 3 + Timeout = 3, } #[derive(Serialize, Deserialize, Debug, Clone, Default)] @@ -112,19 +112,19 @@ pub enum AutoModerationActionMetadata { ForSendAlertMessage(AutoModerationActionMetadataForSendAlertMessage), ForTimeout(AutoModerationActionMetadataForTimeout), #[default] - None + None, } #[derive(Serialize, Deserialize, Debug, Clone, Default)] /// See https://discord.com/developers/docs/resources/auto-moderation#auto-moderation-action-object-action-metadata pub struct AutoModerationActionMetadataForBlockMessage { - pub custom_message: Option + pub custom_message: Option, } #[derive(Serialize, Deserialize, Debug, Clone, Default)] /// See https://discord.com/developers/docs/resources/auto-moderation#auto-moderation-action-object-action-metadata pub struct AutoModerationActionMetadataForSendAlertMessage { - pub channel_id: Snowflake + pub channel_id: Snowflake, } #[derive(Serialize, Deserialize, Debug, Clone, Default)] @@ -132,4 +132,4 @@ pub struct AutoModerationActionMetadataForSendAlertMessage { pub struct AutoModerationActionMetadataForTimeout { /// Max 2419200 pub duration_seconds: u32, -} \ No newline at end of file +} diff --git a/src/types/entities/channel.rs b/src/types/entities/channel.rs index a0c2bcb..4ce0e4b 100644 --- a/src/types/entities/channel.rs +++ b/src/types/entities/channel.rs @@ -1,6 +1,9 @@ use chrono::Utc; use serde::{Deserialize, Serialize}; -use serde_aux::prelude::{deserialize_number_from_string, deserialize_option_number_from_string, deserialize_string_from_number}; +use serde_aux::prelude::{ + deserialize_number_from_string, deserialize_option_number_from_string, + deserialize_string_from_number, +}; use serde_repr::{Deserialize_repr, Serialize_repr}; use crate::types::{ diff --git a/src/types/entities/emoji.rs b/src/types/entities/emoji.rs index c9811af..dbe998b 100644 --- a/src/types/entities/emoji.rs +++ b/src/types/entities/emoji.rs @@ -1,8 +1,7 @@ use serde::{Deserialize, Serialize}; -use serde_aux::prelude::deserialize_option_number_from_string; use crate::types::entities::User; -use crate::types::{Guild, Snowflake}; +use crate::types::Snowflake; #[derive(Debug, PartialEq, Clone, Deserialize, Serialize, Default)] #[cfg_attr(feature = "sqlx", derive(sqlx::FromRow))] diff --git a/src/types/entities/guild.rs b/src/types/entities/guild.rs index c79ee1d..3a6b11a 100644 --- a/src/types/entities/guild.rs +++ b/src/types/entities/guild.rs @@ -1,9 +1,9 @@ use chrono::{DateTime, Utc}; use serde::{Deserialize, Serialize}; -use serde_repr::{Serialize_repr, Deserialize_repr}; +use serde_repr::{Deserialize_repr, Serialize_repr}; use crate::types::{ - entities::{Channel, Emoji, GuildTemplate, RoleObject, Sticker, User, VoiceState, Webhook}, + entities::{Channel, Emoji, RoleObject, Sticker, User, VoiceState, Webhook}, interfaces::WelcomeScreenObject, utils::Snowflake, }; @@ -140,7 +140,7 @@ pub struct GuildScheduledEvent { pub entity_metadata: Option, pub creator: Option, pub user_count: Option, - pub image: Option + pub image: Option, } #[derive(Serialize_repr, Deserialize_repr, Debug, Default, Clone)] @@ -159,7 +159,7 @@ pub enum GuildScheduledEventStatus { Scheduled = 1, Active = 2, Completed = 3, - Canceled = 4 + Canceled = 4, } #[derive(Serialize_repr, Deserialize_repr, Debug, Default, Clone)] @@ -175,5 +175,5 @@ pub enum GuildScheduledEventEntityType { #[derive(Serialize, Deserialize, Debug, Default, Clone)] /// See https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-object-guild-scheduled-event-entity-metadata pub struct GuildScheduledEventEntityMetadata { - pub location: Option -} \ No newline at end of file + pub location: Option, +} diff --git a/src/types/entities/mod.rs b/src/types/entities/mod.rs index 5c8306b..d27c76e 100644 --- a/src/types/entities/mod.rs +++ b/src/types/entities/mod.rs @@ -1,5 +1,7 @@ mod application; mod attachment; +mod audit_log; +mod auto_moderation; mod channel; mod config; mod emoji; @@ -7,8 +9,10 @@ mod guild; mod guild_member; mod integration; mod message; +mod relationship; mod role; mod security_key; +mod stage_instance; mod sticker; mod team; mod template; @@ -16,13 +20,11 @@ mod user; mod user_settings; mod voice_state; mod webhook; -mod audit_log; -mod relationship; -mod auto_moderation; -mod stage_instance; pub use application::*; pub use attachment::*; +pub use audit_log::*; +pub use auto_moderation::*; pub use channel::*; pub use config::*; pub use emoji::*; @@ -30,8 +32,10 @@ pub use guild::*; pub use guild_member::*; pub use integration::*; pub use message::*; +pub use relationship::*; pub use role::*; pub use security_key::*; +pub use stage_instance::*; pub use sticker::*; pub use team::*; pub use template::*; @@ -39,7 +43,3 @@ pub use user::*; pub use user_settings::*; pub use voice_state::*; pub use webhook::*; -pub use audit_log::*; -pub use relationship::*; -pub use auto_moderation::*; -pub use stage_instance::*; \ No newline at end of file diff --git a/src/types/entities/relationship.rs b/src/types/entities/relationship.rs index fc6d78d..f4e735c 100644 --- a/src/types/entities/relationship.rs +++ b/src/types/entities/relationship.rs @@ -1,5 +1,5 @@ use serde::{Deserialize, Serialize}; -use serde_repr::{Serialize_repr, Deserialize_repr}; +use serde_repr::{Deserialize_repr, Serialize_repr}; use crate::types::Snowflake; @@ -9,10 +9,10 @@ use super::PublicUser; /// See https://docs.spacebar.chat/routes/#get-/users/@me/relationships/ pub struct Relationship { pub id: Snowflake, - #[serde(rename = "type")] + #[serde(rename = "type")] pub relationship_type: RelationshipType, pub nickname: Option, - pub user: PublicUser + pub user: PublicUser, } #[derive(Serialize_repr, Deserialize_repr, Debug, Clone, Default)] @@ -24,4 +24,4 @@ pub enum RelationshipType { Blocked = 2, #[default] Friends = 1, -} \ No newline at end of file +} diff --git a/src/types/entities/role.rs b/src/types/entities/role.rs index a9e479b..87135ba 100644 --- a/src/types/entities/role.rs +++ b/src/types/entities/role.rs @@ -1,5 +1,5 @@ use serde::{Deserialize, Serialize}; -use serde_aux::prelude::{deserialize_string_from_number, deserialize_option_number_from_string}; +use serde_aux::prelude::{deserialize_option_number_from_string, deserialize_string_from_number}; use crate::types::utils::Snowflake; @@ -19,7 +19,7 @@ pub struct RoleObject { pub permissions: String, pub managed: bool, pub mentionable: bool, - pub tags: Option + pub tags: Option, } #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] diff --git a/src/types/entities/stage_instance.rs b/src/types/entities/stage_instance.rs index 66376ef..b2d19c3 100644 --- a/src/types/entities/stage_instance.rs +++ b/src/types/entities/stage_instance.rs @@ -1,5 +1,5 @@ use serde::{Deserialize, Serialize}; -use serde_repr::{Serialize_repr, Deserialize_repr}; +use serde_repr::{Deserialize_repr, Serialize_repr}; use crate::types::Snowflake; @@ -19,11 +19,11 @@ pub struct StageInstance { #[derive(Serialize_repr, Deserialize_repr, Debug, Clone, Default)] #[repr(u8)] -#[serde(rename_all = "SCREAMING_SNAKE_CASE")] +#[serde(rename_all = "SCREAMING_SNAKE_CASE")] /// See https://discord.com/developers/docs/resources/stage-instance#stage-instance-object-privacy-level pub enum StageInstancePrivacyLevel { /// deprecated, apparently Public = 1, #[default] - GuildOnly = 2 -} \ No newline at end of file + GuildOnly = 2, +} diff --git a/src/types/entities/sticker.rs b/src/types/entities/sticker.rs index a3a79de..098394d 100644 --- a/src/types/entities/sticker.rs +++ b/src/types/entities/sticker.rs @@ -1,5 +1,4 @@ use serde::{Deserialize, Serialize}; -use serde_aux::prelude::{deserialize_option_number_from_string}; use crate::types::{entities::User, utils::Snowflake}; diff --git a/src/types/entities/user.rs b/src/types/entities/user.rs index f6bf5c0..7b1943e 100644 --- a/src/types/entities/user.rs +++ b/src/types/entities/user.rs @@ -1,12 +1,8 @@ use chrono::{DateTime, Utc}; use serde::{Deserialize, Serialize}; use serde_aux::prelude::deserialize_option_number_from_string; -use serde_json::{Map, Value}; -use crate::types::{ - errors::Error, - utils::Snowflake, //util::{email::adjust_email, entities::user_setting::UserSettings}, -}; +use crate::types::utils::Snowflake; #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)] #[cfg_attr(feature = "sqlx", derive(sqlx::Type))] diff --git a/src/types/entities/user_settings.rs b/src/types/entities/user_settings.rs index f34a159..7b9541f 100644 --- a/src/types/entities/user_settings.rs +++ b/src/types/entities/user_settings.rs @@ -1,8 +1,6 @@ use chrono::{serde::ts_milliseconds_option, Utc}; use serde::{Deserialize, Serialize}; -use crate::types::utils::Snowflake; - #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)] #[cfg_attr(feature = "sqlx", derive(sqlx::Type))] #[serde(rename_all = "lowercase")] diff --git a/src/types/entities/voice_state.rs b/src/types/entities/voice_state.rs index dd0ab15..cdd27a5 100644 --- a/src/types/entities/voice_state.rs +++ b/src/types/entities/voice_state.rs @@ -2,7 +2,7 @@ use chrono::{DateTime, Utc}; use serde::{Deserialize, Serialize}; use crate::types::{ - entities::{Channel, Guild, GuildMember, User}, + entities::{Guild, GuildMember}, utils::Snowflake, }; diff --git a/src/types/entities/webhook.rs b/src/types/entities/webhook.rs index 0097d81..521b93f 100644 --- a/src/types/entities/webhook.rs +++ b/src/types/entities/webhook.rs @@ -1,7 +1,7 @@ use serde::{Deserialize, Serialize}; use crate::types::{ - entities::{Application, Channel, Guild, User}, + entities::{Guild, User}, utils::Snowflake, }; diff --git a/src/types/events/application.rs b/src/types/events/application.rs index b2bd042..aca2b29 100644 --- a/src/types/events/application.rs +++ b/src/types/events/application.rs @@ -1,6 +1,6 @@ use serde::{Deserialize, Serialize}; -use crate::types::{WebSocketEvent, GuildApplicationCommandPermissions}; +use crate::types::{GuildApplicationCommandPermissions, WebSocketEvent}; #[derive(Debug, Deserialize, Serialize, Default)] /// See https://discord.com/developers/docs/topics/gateway-events#application-command-permissions-update @@ -9,4 +9,4 @@ pub struct ApplicationCommandPermissionsUpdate { pub permissions: GuildApplicationCommandPermissions, } -impl WebSocketEvent for ApplicationCommandPermissionsUpdate {} \ No newline at end of file +impl WebSocketEvent for ApplicationCommandPermissionsUpdate {} diff --git a/src/types/events/auto_moderation.rs b/src/types/events/auto_moderation.rs index 3c6696d..2fa8fc5 100644 --- a/src/types/events/auto_moderation.rs +++ b/src/types/events/auto_moderation.rs @@ -1,6 +1,9 @@ use serde::{Deserialize, Serialize}; -use crate::types::{WebSocketEvent, AutoModerationRule, Snowflake, AutoModerationAction, AutoModerationRuleTriggerType}; +use crate::types::{ + AutoModerationAction, AutoModerationRule, AutoModerationRuleTriggerType, Snowflake, + WebSocketEvent, +}; #[derive(Debug, Deserialize, Serialize, Default)] /// See https://discord.com/developers/docs/topics/gateway-events#auto-moderation-rule-create @@ -9,7 +12,7 @@ pub struct AutoModerationRuleCreate { pub rule: AutoModerationRule, } -impl WebSocketEvent for AutoModerationRuleCreate {} +impl WebSocketEvent for AutoModerationRuleCreate {} #[derive(Debug, Deserialize, Serialize, Default)] /// See https://discord.com/developers/docs/topics/gateway-events#auto-moderation-rule-update @@ -18,7 +21,7 @@ pub struct AutoModerationRuleUpdate { pub rule: AutoModerationRule, } -impl WebSocketEvent for AutoModerationRuleUpdate {} +impl WebSocketEvent for AutoModerationRuleUpdate {} #[derive(Debug, Deserialize, Serialize, Default)] /// See https://discord.com/developers/docs/topics/gateway-events#auto-moderation-rule-delete @@ -27,7 +30,7 @@ pub struct AutoModerationRuleDelete { pub rule: AutoModerationRule, } -impl WebSocketEvent for AutoModerationRuleDelete {} +impl WebSocketEvent for AutoModerationRuleDelete {} #[derive(Debug, Deserialize, Serialize, Default)] /// See https://discord.com/developers/docs/topics/gateway-events#auto-moderation-action-execution @@ -42,7 +45,7 @@ pub struct AutoModerationActionExecution { pub alert_system_message_id: Option, pub content: Option, pub matched_keyword: Option, - pub matched_content: Option + pub matched_content: Option, } -impl WebSocketEvent for AutoModerationActionExecution {} \ No newline at end of file +impl WebSocketEvent for AutoModerationActionExecution {} diff --git a/src/types/events/call.rs b/src/types/events/call.rs index dfea045..3c58635 100644 --- a/src/types/events/call.rs +++ b/src/types/events/call.rs @@ -48,4 +48,4 @@ impl WebSocketEvent for CallDelete {} pub struct CallSync { pub channel_id: String, } -impl WebSocketEvent for CallSync {} \ No newline at end of file +impl WebSocketEvent for CallSync {} diff --git a/src/types/events/channel.rs b/src/types/events/channel.rs index d1ea864..adafa9f 100644 --- a/src/types/events/channel.rs +++ b/src/types/events/channel.rs @@ -46,7 +46,7 @@ pub struct ChannelUnreadUpdate { pub struct ChannelUnreadUpdateObject { pub id: String, pub last_message_id: String, - pub last_pin_timestamp: Option + pub last_pin_timestamp: Option, } impl WebSocketEvent for ChannelUnreadUpdate {} diff --git a/src/types/events/integration.rs b/src/types/events/integration.rs index b7b49cc..6569a72 100644 --- a/src/types/events/integration.rs +++ b/src/types/events/integration.rs @@ -30,4 +30,4 @@ pub struct IntegrationDelete { pub application_id: Option, } -impl WebSocketEvent for IntegrationDelete {} \ No newline at end of file +impl WebSocketEvent for IntegrationDelete {} diff --git a/src/types/events/interaction.rs b/src/types/events/interaction.rs index 560ef55..51513a3 100644 --- a/src/types/events/interaction.rs +++ b/src/types/events/interaction.rs @@ -9,4 +9,4 @@ pub struct InteractionCreate { pub interaction: Interaction, } -impl WebSocketEvent for InteractionCreate {} \ No newline at end of file +impl WebSocketEvent for InteractionCreate {} diff --git a/src/types/events/invite.rs b/src/types/events/invite.rs index e4693c8..4eb31a7 100644 --- a/src/types/events/invite.rs +++ b/src/types/events/invite.rs @@ -6,7 +6,7 @@ use crate::types::{GuildInvite, WebSocketEvent}; /// See https://discord.com/developers/docs/topics/gateway-events#invite-create pub struct InviteCreate { #[serde(flatten)] - pub invite: GuildInvite + pub invite: GuildInvite, } impl WebSocketEvent for InviteCreate {} @@ -19,4 +19,4 @@ pub struct InviteDelete { pub code: String, } -impl WebSocketEvent for InviteDelete {} \ No newline at end of file +impl WebSocketEvent for InviteDelete {} diff --git a/src/types/events/lazy_request.rs b/src/types/events/lazy_request.rs index d20fcf3..2bf3038 100644 --- a/src/types/events/lazy_request.rs +++ b/src/types/events/lazy_request.rs @@ -6,13 +6,13 @@ use super::WebSocketEvent; #[derive(Debug, Deserialize, Serialize, Default)] /// Officially Undocumented -/// +/// /// Sent to the server to signify lazy loading of a guild; /// Sent by the official client when switching to a guild or channel; /// After this, you should recieve message updates -/// +/// /// See https://luna.gitlab.io/discord-unofficial-docs/lazy_guilds.html#op-14-lazy-request -/// +/// /// {"op":14,"d":{"guild_id":"848582562217590824","typing":true,"activities":true,"threads":true}} pub struct LazyRequest { pub guild_id: String, @@ -22,6 +22,6 @@ pub struct LazyRequest { #[serde(skip_serializing_if = "Option::is_none")] pub members: Option, #[serde(skip_serializing_if = "Option::is_none")] - pub channels: Option>>> + pub channels: Option>>>, } -impl WebSocketEvent for LazyRequest {} \ No newline at end of file +impl WebSocketEvent for LazyRequest {} diff --git a/src/types/events/message.rs b/src/types/events/message.rs index 758deff..cea0d75 100644 --- a/src/types/events/message.rs +++ b/src/types/events/message.rs @@ -1,10 +1,7 @@ use chrono::{DateTime, Utc}; use serde::{Deserialize, Serialize}; -use crate::types::{ - entities::{Emoji, GuildMember, Message, User}, - utils::Snowflake, -}; +use crate::types::entities::{Emoji, GuildMember, Message, User}; use super::WebSocketEvent; @@ -56,7 +53,7 @@ pub struct MessageCreateUser { purchased_flags: Option, premium_usage_flags: Option, disabled: Option, - member: GuildMember + member: GuildMember, } impl WebSocketEvent for MessageCreate {} @@ -134,12 +131,12 @@ impl WebSocketEvent for MessageReactionRemoveEmoji {} #[derive(Debug, Deserialize, Serialize, Default)] /// Officially Undocumented -/// +/// /// Not documented anywhere unofficially -/// +/// /// Apparently "Message ACK refers to marking a message as read for Discord's API." (https://github.com/Rapptz/discord.py/issues/1851) /// I suspect this is sent and recieved from the gateway to let clients on other devices know the user has read a message -/// +/// /// {"t":"MESSAGE_ACK","s":3,"op":0,"d":{"version":52,"message_id":"1107236673638633472","last_viewed":null,"flags":null,"channel_id":"967363950217936897"}} pub struct MessageACK { /// ? @@ -150,4 +147,4 @@ pub struct MessageACK { pub flags: Option, pub channel_id: String, } -impl WebSocketEvent for MessageACK {} \ No newline at end of file +impl WebSocketEvent for MessageACK {} diff --git a/src/types/events/mod.rs b/src/types/events/mod.rs index 3dbf5a6..3fd54c9 100644 --- a/src/types/events/mod.rs +++ b/src/types/events/mod.rs @@ -1,62 +1,62 @@ use serde::{Deserialize, Serialize}; +mod application; +mod auto_moderation; +mod call; mod channel; mod guild; mod heartbeat; mod hello; mod identify; +mod integration; +mod interaction; +mod invite; +mod lazy_request; mod message; +mod passive_update; mod presence; mod ready; +mod relationship; mod request_members; mod resume; +mod session; +mod stage_instance; mod thread; mod user; mod voice; -mod session; mod webhooks; -mod passive_update; -mod integration; -mod invite; -mod call; -mod lazy_request; -mod relationship; -mod auto_moderation; -mod stage_instance; -mod interaction; -mod application; +pub use application::*; +pub use auto_moderation::*; +pub use call::*; pub use channel::*; pub use guild::*; pub use heartbeat::*; pub use hello::*; pub use identify::*; +pub use integration::*; +pub use interaction::*; +pub use invite::*; +pub use lazy_request::*; pub use message::*; +pub use passive_update::*; pub use presence::*; pub use ready::*; +pub use relationship::*; pub use request_members::*; pub use resume::*; +pub use session::*; +pub use stage_instance::*; pub use thread::*; pub use user::*; pub use voice::*; -pub use session::*; pub use webhooks::*; -pub use passive_update::*; -pub use integration::*; -pub use invite::*; -pub use call::*; -pub use lazy_request::*; -pub use relationship::*; -pub use auto_moderation::*; -pub use stage_instance::*; -pub use interaction::*; -pub use application::*; pub trait WebSocketEvent {} #[derive(Debug, Default, Serialize, Clone)] /// The payload used for sending events to the gateway -/// +/// /// Similar to [GatewayReceivePayload], except we send a [Value] for d whilst we receive a [serde_json::value::RawValue] /// Also, we never need to send the event name pub struct GatewaySendPayload { @@ -71,7 +71,7 @@ impl WebSocketEvent for GatewaySendPayload {} #[derive(Debug, Default, Deserialize, Clone)] /// The payload used for receiving events from the gateway -/// +/// /// Similar to [GatewaySendPayload], except we send a [Value] for d whilst we receive a [serde_json::value::RawValue] /// Also, we never need to sent the event name diff --git a/src/types/events/passive_update.rs b/src/types/events/passive_update.rs index 43bed2a..65a7272 100644 --- a/src/types/events/passive_update.rs +++ b/src/types/events/passive_update.rs @@ -1,11 +1,11 @@ use serde::{Deserialize, Serialize}; -use crate::types::{VoiceState, GuildMember}; use super::{ChannelUnreadUpdateObject, WebSocketEvent}; +use crate::types::{GuildMember, VoiceState}; #[derive(Debug, Deserialize, Serialize, Default)] /// Officially Undocumented -/// +/// /// Seems to be passively set to update the client on guild details (though, why not just send the update events?) pub struct PassiveUpdateV1 { pub voice_states: Vec, @@ -14,4 +14,4 @@ pub struct PassiveUpdateV1 { pub channels: Vec, } -impl WebSocketEvent for PassiveUpdateV1 {} \ No newline at end of file +impl WebSocketEvent for PassiveUpdateV1 {} diff --git a/src/types/events/presence.rs b/src/types/events/presence.rs index 65c86e5..dd49fde 100644 --- a/src/types/events/presence.rs +++ b/src/types/events/presence.rs @@ -1,6 +1,6 @@ -use crate::types::PublicUser; use crate::types::events::WebSocketEvent; use crate::types::interfaces::Activity; +use crate::types::PublicUser; use serde::{Deserialize, Serialize}; #[derive(Debug, Deserialize, Serialize, Default, Clone)] diff --git a/src/types/events/ready.rs b/src/types/events/ready.rs index b82839e..78d2010 100644 --- a/src/types/events/ready.rs +++ b/src/types/events/ready.rs @@ -1,7 +1,7 @@ -use crate::types::entities::{UnavailableGuild, User, Guild}; -use crate::types::events::{WebSocketEvent, Session}; +use crate::types::entities::{Guild, User}; +use crate::types::events::{Session, WebSocketEvent}; use crate::types::interfaces::ClientStatusObject; -use crate::types::{PresenceUpdate, GuildMember, Activity, VoiceState}; +use crate::types::{Activity, GuildMember, PresenceUpdate, VoiceState}; use serde::{Deserialize, Serialize}; #[derive(Debug, Deserialize, Serialize, Default)] @@ -46,7 +46,7 @@ impl WebSocketEvent for GatewayReadySupplemental {} #[derive(Debug, Deserialize, Serialize, Default)] pub struct MergedPresences { pub guilds: Vec>, - pub friends: Vec + pub friends: Vec, } #[derive(Debug, Deserialize, Serialize, Default)] @@ -56,7 +56,7 @@ pub struct MergedPresenceFriend { /// Looks like ms?? pub last_modified: u128, pub client_status: ClientStatusObject, - pub activities: Vec + pub activities: Vec, } #[derive(Debug, Deserialize, Serialize, Default)] @@ -66,12 +66,12 @@ pub struct MergedPresenceGuild { // ? pub game: Option, pub client_status: ClientStatusObject, - pub activities: Vec + pub activities: Vec, } #[derive(Debug, Deserialize, Serialize, Default)] pub struct SupplimentalGuild { pub voice_states: Option>, pub id: String, - pub embedded_activities: Vec + pub embedded_activities: Vec, } diff --git a/src/types/events/relationship.rs b/src/types/events/relationship.rs index f8c0dff..c9b79c0 100644 --- a/src/types/events/relationship.rs +++ b/src/types/events/relationship.rs @@ -1,4 +1,4 @@ -use crate::types::{events::WebSocketEvent, Relationship, Snowflake, RelationshipType}; +use crate::types::{events::WebSocketEvent, Relationship, RelationshipType, Snowflake}; use serde::{Deserialize, Serialize}; #[derive(Debug, Deserialize, Serialize, Default)] @@ -15,8 +15,8 @@ impl WebSocketEvent for RelationshipAdd {} /// See https://github.com/spacebarchat/server/issues/203 pub struct RelationshipRemove { pub id: Snowflake, - #[serde(rename = "type")] + #[serde(rename = "type")] pub relationship_type: RelationshipType, } -impl WebSocketEvent for RelationshipRemove {} \ No newline at end of file +impl WebSocketEvent for RelationshipRemove {} diff --git a/src/types/events/session.rs b/src/types/events/session.rs index e0206f5..26364d9 100644 --- a/src/types/events/session.rs +++ b/src/types/events/session.rs @@ -7,7 +7,7 @@ use crate::types::{Activity, WebSocketEvent}; /// Seems like it sends active session info to users on connect /// [{"activities":[],"client_info":{"client":"web","os":"other","version":0},"session_id":"ab5941b50d818b1f8d93b4b1b581b192","status":"online"}] pub struct SessionsReplace { - pub sessions: Vec + pub sessions: Vec, } #[derive(Debug, Deserialize, Serialize, Default)] @@ -22,11 +22,11 @@ pub struct Session { #[derive(Debug, Deserialize, Serialize, Default)] /// Another Client info object /// {"client":"web","os":"other","version":0} -// Note: I don't think this one exists yet? Though I might've made a mistake and this might be a duplicate +// Note: I don't think this one exists yet? Though I might've made a mistake and this might be a duplicate pub struct ClientInfo { pub client: String, pub os: String, - pub version: u8 + pub version: u8, } impl WebSocketEvent for SessionsReplace {} diff --git a/src/types/events/stage_instance.rs b/src/types/events/stage_instance.rs index b308576..ea215f9 100644 --- a/src/types/events/stage_instance.rs +++ b/src/types/events/stage_instance.rs @@ -1,6 +1,6 @@ use serde::{Deserialize, Serialize}; -use crate::types::{WebSocketEvent, StageInstance}; +use crate::types::{StageInstance, WebSocketEvent}; #[derive(Debug, Deserialize, Serialize, Default)] /// See https://discord.com/developers/docs/topics/gateway-events#stage-instance-create @@ -9,7 +9,7 @@ pub struct StageInstanceCreate { pub stage_instance: StageInstance, } -impl WebSocketEvent for StageInstanceCreate {} +impl WebSocketEvent for StageInstanceCreate {} #[derive(Debug, Deserialize, Serialize, Default)] /// See https://discord.com/developers/docs/topics/gateway-events#stage-instance-update @@ -18,7 +18,7 @@ pub struct StageInstanceUpdate { pub stage_instance: StageInstance, } -impl WebSocketEvent for StageInstanceUpdate {} +impl WebSocketEvent for StageInstanceUpdate {} #[derive(Debug, Deserialize, Serialize, Default)] /// See https://discord.com/developers/docs/topics/gateway-events#stage-instance-delete @@ -27,4 +27,4 @@ pub struct StageInstanceDelete { pub stage_instance: StageInstance, } -impl WebSocketEvent for StageInstanceDelete {} \ No newline at end of file +impl WebSocketEvent for StageInstanceDelete {} diff --git a/src/types/events/thread.rs b/src/types/events/thread.rs index a02a148..62186b7 100644 --- a/src/types/events/thread.rs +++ b/src/types/events/thread.rs @@ -1,4 +1,4 @@ -use crate::types::entities::{Channel, GuildMember, ThreadMember}; +use crate::types::entities::{Channel, ThreadMember}; use crate::types::events::WebSocketEvent; use serde::{Deserialize, Serialize}; diff --git a/src/types/events/voice.rs b/src/types/events/voice.rs index 2a102b5..8af9c66 100644 --- a/src/types/events/voice.rs +++ b/src/types/events/voice.rs @@ -3,9 +3,9 @@ use serde::{Deserialize, Serialize}; #[derive(Debug, Deserialize, Serialize, Default)] /// See https://discord.com/developers/docs/topics/gateway-events#update-voice-state -/// +/// /// Sent to the server -/// +/// /// Not to be confused with [VoiceStateUpdate] pub struct UpdateVoiceState { pub guild_id: Option, @@ -18,13 +18,13 @@ impl WebSocketEvent for UpdateVoiceState {} #[derive(Debug, Deserialize, Serialize, Default)] /// See https://discord.com/developers/docs/topics/gateway-events#voice-state-update -/// +/// /// Received from the server -/// +/// /// Not to be confused with [UpdateVoiceState] pub struct VoiceStateUpdate { #[serde(flatten)] - pub state: VoiceState + pub state: VoiceState, } impl WebSocketEvent for VoiceStateUpdate {} @@ -34,7 +34,7 @@ impl WebSocketEvent for VoiceStateUpdate {} pub struct VoiceServerUpdate { pub token: String, pub guild_id: String, - pub endpoint: Option + pub endpoint: Option, } -impl WebSocketEvent for VoiceServerUpdate {} \ No newline at end of file +impl WebSocketEvent for VoiceServerUpdate {} diff --git a/src/types/events/webhooks.rs b/src/types/events/webhooks.rs index e7711a7..b88e1ee 100644 --- a/src/types/events/webhooks.rs +++ b/src/types/events/webhooks.rs @@ -9,4 +9,4 @@ pub struct WebhooksUpdate { pub channel_id: String, } -impl WebSocketEvent for WebhooksUpdate {} \ No newline at end of file +impl WebSocketEvent for WebhooksUpdate {} diff --git a/src/types/interfaces/connected_account.rs b/src/types/interfaces/connected_account.rs index e69de29..8b13789 100644 --- a/src/types/interfaces/connected_account.rs +++ b/src/types/interfaces/connected_account.rs @@ -0,0 +1 @@ + diff --git a/src/types/interfaces/mod.rs b/src/types/interfaces/mod.rs index 6e0a7df..0f99ae2 100644 --- a/src/types/interfaces/mod.rs +++ b/src/types/interfaces/mod.rs @@ -8,4 +8,4 @@ pub use activity::*; pub use connected_account::*; pub use guild_welcome_screen::*; pub use interaction::*; -pub use status::*; \ No newline at end of file +pub use status::*; diff --git a/src/types/interfaces/status.rs b/src/types/interfaces/status.rs index 105dd87..c82e665 100644 --- a/src/types/interfaces/status.rs +++ b/src/types/interfaces/status.rs @@ -6,4 +6,4 @@ pub struct ClientStatusObject { pub desktop: Option, pub mobile: Option, pub web: Option, -} \ No newline at end of file +} diff --git a/src/types/schema/user.rs b/src/types/schema/user.rs index 00f4962..ab85a16 100644 --- a/src/types/schema/user.rs +++ b/src/types/schema/user.rs @@ -13,4 +13,4 @@ pub struct UserModifySchema { pub code: Option, pub email: Option, pub discriminator: Option, -} \ No newline at end of file +} From 5732f1119ff51325ff0cb18a0b4ff5c9121cfda6 Mon Sep 17 00:00:00 2001 From: bitfl0wer Date: Sun, 28 May 2023 00:52:11 +0200 Subject: [PATCH 14/16] Add rusty-hook for pre-push cargo fmt --- .rusty-hook.toml | 5 +++++ Cargo.toml | 1 + 2 files changed, 6 insertions(+) create mode 100644 .rusty-hook.toml diff --git a/.rusty-hook.toml b/.rusty-hook.toml new file mode 100644 index 0000000..b1bd0ab --- /dev/null +++ b/.rusty-hook.toml @@ -0,0 +1,5 @@ +[hooks] +pre-push = "cargo fmt --all -- --check --color always" + +[logging] +verbose = true diff --git a/Cargo.toml b/Cargo.toml index d6c67ec..8e33c0d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -40,3 +40,4 @@ jsonwebtoken = "8.3.0" [dev-dependencies] lazy_static = "1.4.0" +rusty-hook = "0.11.2" \ No newline at end of file From af9247ed11caf873cb4d6f65ed227f780f4e90cb Mon Sep 17 00:00:00 2001 From: bitfl0wer Date: Sun, 28 May 2023 00:53:45 +0200 Subject: [PATCH 15/16] Testing on main woah --- tests/auth.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/auth.rs b/tests/auth.rs index f90e229..e80849a 100644 --- a/tests/auth.rs +++ b/tests/auth.rs @@ -1,5 +1,4 @@ mod common; - use chorus::types; #[tokio::test] From dcc3ea59db4d709ada6b8b57b7ce0b5ecd7b5016 Mon Sep 17 00:00:00 2001 From: bitfl0wer Date: Sun, 28 May 2023 11:43:03 +0200 Subject: [PATCH 16/16] Change rusty-hook to be pre-commit --- .rusty-hook.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.rusty-hook.toml b/.rusty-hook.toml index b1bd0ab..033f863 100644 --- a/.rusty-hook.toml +++ b/.rusty-hook.toml @@ -1,5 +1,5 @@ [hooks] -pre-push = "cargo fmt --all -- --check --color always" +pre-commit = "cargo fmt -p chorus && exit 0" [logging] verbose = true