From b2fd3e18cc95d5605ae6a659b4d8ad7d580d9eef Mon Sep 17 00:00:00 2001 From: kozabrada123 <59031733+kozabrada123@users.noreply.github.com> Date: Sun, 28 Apr 2024 14:15:57 +0200 Subject: [PATCH] Move Shared to types/mod.rs, bump some dependencies (#492) * deps: bump rustls to 0.21.11 This is done to fix CVE-2024-32650, which practically shouldn't affect us but it's still better not to use vulnerable dependencies. * deps: bump h2 to 0.3.26 This is done to fix another vulnerability, which should also not affect us (non-critical, in h2 servers) * fix: move Shared to types/mod.rs --- Cargo.lock | 8 ++++---- src/gateway/handle.rs | 2 +- src/gateway/mod.rs | 7 ------- src/instance.rs | 4 ++-- src/types/entities/application.rs | 2 +- src/types/entities/audit_log.rs | 2 +- src/types/entities/auto_moderation.rs | 2 +- src/types/entities/channel.rs | 2 +- src/types/entities/emoji.rs | 2 +- src/types/entities/guild.rs | 2 +- src/types/entities/guild_member.rs | 2 +- src/types/entities/integration.rs | 2 +- src/types/entities/invite.rs | 3 +-- src/types/entities/message.rs | 2 +- src/types/entities/mod.rs | 6 +++--- src/types/entities/relationship.rs | 3 +-- src/types/entities/sticker.rs | 3 +-- src/types/entities/team.rs | 2 +- src/types/entities/template.rs | 2 +- src/types/entities/user_settings.rs | 2 +- src/types/entities/voice_state.rs | 4 +++- src/types/entities/webhook.rs | 3 ++- src/types/events/channel.rs | 6 ++++-- src/types/events/guild.rs | 6 ++++-- src/types/events/mod.rs | 2 +- src/types/mod.rs | 10 ++++++++++ tests/common/mod.rs | 4 ++-- 27 files changed, 51 insertions(+), 44 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 46b87f9..53283cc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -716,9 +716,9 @@ checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" [[package]] name = "h2" -version = "0.3.24" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb2c4422095b67ee78da96fbb51a4cc413b3b25883c7717ff7ca1ab31022c9c9" +checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" dependencies = [ "bytes", "fnv", @@ -1753,9 +1753,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.21.10" +version = "0.21.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba" +checksum = "7fecbfb7b1444f477b345853b1fce097a2c6fb637b2bfb87e6bc5db0f043fae4" dependencies = [ "log", "ring 0.17.7", diff --git a/src/gateway/handle.rs b/src/gateway/handle.rs index 6af5f0d..bfaeb17 100644 --- a/src/gateway/handle.rs +++ b/src/gateway/handle.rs @@ -8,7 +8,7 @@ use log::*; use std::fmt::Debug; use super::{events::Events, *}; -use crate::types::{self, Composite}; +use crate::types::{self, Composite, Shared}; /// Represents a handle to a Gateway connection. A Gateway connection will create observable /// [`GatewayEvents`](GatewayEvent), which you can subscribe to. Gateway events include all currently diff --git a/src/gateway/mod.rs b/src/gateway/mod.rs index 5a5881a..b48786e 100644 --- a/src/gateway/mod.rs +++ b/src/gateway/mod.rs @@ -133,10 +133,3 @@ impl GatewayEvent { } } -/// A type alias for [`Arc>`], used to make the public facing API concerned with -/// Composite structs more ergonomic. -/// ## Note -/// -/// While `T` does not have to implement `Composite` to be used with `Shared`, -/// the primary use of `Shared` is with types that implement `Composite`. -pub type Shared = Arc>; diff --git a/src/instance.rs b/src/instance.rs index 1661042..d23a567 100644 --- a/src/instance.rs +++ b/src/instance.rs @@ -13,11 +13,11 @@ use reqwest::Client; use serde::{Deserialize, Serialize}; use crate::errors::ChorusResult; -use crate::gateway::{Gateway, GatewayHandle, Shared}; +use crate::gateway::{Gateway, GatewayHandle}; use crate::ratelimiter::ChorusRequest; use crate::types::types::subconfigs::limits::rates::RateLimits; use crate::types::{ - GeneralConfiguration, Limit, LimitType, LimitsConfiguration, User, UserSettings, + GeneralConfiguration, Limit, LimitType, LimitsConfiguration, Shared, User, UserSettings, }; use crate::UrlBundle; diff --git a/src/types/entities/application.rs b/src/types/entities/application.rs index 4014e55..c772788 100644 --- a/src/types/entities/application.rs +++ b/src/types/entities/application.rs @@ -7,7 +7,7 @@ use serde::{Deserialize, Serialize}; use serde_json::Value; use serde_repr::{Deserialize_repr, Serialize_repr}; -use crate::gateway::Shared; +use crate::types::Shared; use crate::types::utils::Snowflake; use crate::types::{Team, User}; diff --git a/src/types/entities/audit_log.rs b/src/types/entities/audit_log.rs index 477fb20..566b223 100644 --- a/src/types/entities/audit_log.rs +++ b/src/types/entities/audit_log.rs @@ -4,7 +4,7 @@ use serde::{Deserialize, Serialize}; -use crate::gateway::Shared; +use crate::types::Shared; use crate::types::utils::Snowflake; #[derive(Serialize, Deserialize, Debug, Default, Clone)] diff --git a/src/types/entities/auto_moderation.rs b/src/types/entities/auto_moderation.rs index cd69bf2..021185e 100644 --- a/src/types/entities/auto_moderation.rs +++ b/src/types/entities/auto_moderation.rs @@ -2,7 +2,7 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/. -use crate::gateway::Shared; +use crate::types::Shared; #[cfg(feature = "client")] use crate::gateway::Updateable; diff --git a/src/types/entities/channel.rs b/src/types/entities/channel.rs index 7d000dc..fd0c077 100644 --- a/src/types/entities/channel.rs +++ b/src/types/entities/channel.rs @@ -8,7 +8,7 @@ use serde_aux::prelude::deserialize_string_from_number; use serde_repr::{Deserialize_repr, Serialize_repr}; use std::fmt::Debug; -use crate::gateway::Shared; +use crate::types::Shared; use crate::types::{ entities::{GuildMember, User}, utils::Snowflake, diff --git a/src/types/entities/emoji.rs b/src/types/entities/emoji.rs index e84b025..1b68f0d 100644 --- a/src/types/entities/emoji.rs +++ b/src/types/entities/emoji.rs @@ -6,7 +6,7 @@ use std::fmt::Debug; use serde::{Deserialize, Serialize}; -use crate::gateway::Shared; +use crate::types::Shared; use crate::types::entities::User; use crate::types::Snowflake; diff --git a/src/types/entities/guild.rs b/src/types/entities/guild.rs index 52ec5e5..2b7ae44 100644 --- a/src/types/entities/guild.rs +++ b/src/types/entities/guild.rs @@ -9,7 +9,7 @@ use chrono::{DateTime, Utc}; use serde::{Deserialize, Serialize}; use serde_repr::{Deserialize_repr, Serialize_repr}; -use crate::gateway::Shared; +use crate::types::Shared; use crate::types::types::guild_configuration::GuildFeaturesList; use crate::types::{ entities::{Channel, Emoji, RoleObject, Sticker, User, VoiceState, Webhook}, diff --git a/src/types/entities/guild_member.rs b/src/types/entities/guild_member.rs index 14414c5..5cd5ad1 100644 --- a/src/types/entities/guild_member.rs +++ b/src/types/entities/guild_member.rs @@ -4,7 +4,7 @@ use serde::{Deserialize, Serialize}; -use crate::gateway::Shared; +use crate::types::Shared; use crate::types::{entities::PublicUser, Snowflake}; #[derive(Debug, Deserialize, Default, Serialize, Clone)] diff --git a/src/types/entities/integration.rs b/src/types/entities/integration.rs index 97d21c3..db4fecf 100644 --- a/src/types/entities/integration.rs +++ b/src/types/entities/integration.rs @@ -5,8 +5,8 @@ use chrono::{DateTime, Utc}; use serde::{Deserialize, Serialize}; -use crate::gateway::Shared; use crate::types::{ + Shared, entities::{Application, User}, utils::Snowflake, }; diff --git a/src/types/entities/invite.rs b/src/types/entities/invite.rs index 720203a..e9c9bd8 100644 --- a/src/types/entities/invite.rs +++ b/src/types/entities/invite.rs @@ -5,8 +5,7 @@ use chrono::{DateTime, Utc}; use serde::{Deserialize, Serialize}; -use crate::gateway::Shared; -use crate::types::{Snowflake, WelcomeScreenObject}; +use crate::types::{Snowflake, WelcomeScreenObject, Shared}; use super::guild::GuildScheduledEvent; use super::{Application, Channel, GuildMember, NSFWLevel, User}; diff --git a/src/types/entities/message.rs b/src/types/entities/message.rs index d764243..e03a078 100644 --- a/src/types/entities/message.rs +++ b/src/types/entities/message.rs @@ -4,8 +4,8 @@ use serde::{Deserialize, Serialize}; -use crate::gateway::Shared; use crate::types::{ + Shared, entities::{ Application, Attachment, Channel, Emoji, GuildMember, PublicUser, RoleSubscriptionData, Sticker, StickerItem, User, diff --git a/src/types/entities/mod.rs b/src/types/entities/mod.rs index 1400d0e..d5d70e6 100644 --- a/src/types/entities/mod.rs +++ b/src/types/entities/mod.rs @@ -27,7 +27,9 @@ pub use user_settings::*; pub use voice_state::*; pub use webhook::*; -use crate::gateway::Shared; +use crate::types::Shared; +use std::sync::{Arc, RwLock}; + #[cfg(feature = "client")] use crate::gateway::Updateable; @@ -39,8 +41,6 @@ use async_trait::async_trait; #[cfg(feature = "client")] use std::fmt::Debug; -#[cfg(feature = "client")] -use std::sync::{Arc, RwLock}; mod application; mod attachment; diff --git a/src/types/entities/relationship.rs b/src/types/entities/relationship.rs index a568256..b5e2004 100644 --- a/src/types/entities/relationship.rs +++ b/src/types/entities/relationship.rs @@ -6,8 +6,7 @@ use chrono::{DateTime, Utc}; use serde::{Deserialize, Serialize}; use serde_repr::{Deserialize_repr, Serialize_repr}; -use crate::gateway::Shared; -use crate::types::Snowflake; +use crate::types::{Shared, Snowflake}; use super::PublicUser; diff --git a/src/types/entities/sticker.rs b/src/types/entities/sticker.rs index 8b95bc4..7048f82 100644 --- a/src/types/entities/sticker.rs +++ b/src/types/entities/sticker.rs @@ -4,8 +4,7 @@ use serde::{Deserialize, Serialize}; -use crate::gateway::Shared; -use crate::types::{entities::User, utils::Snowflake}; +use crate::types::{entities::User, utils::Snowflake, Shared}; #[derive(Debug, Serialize, Deserialize, Clone, Default)] #[cfg_attr(feature = "sqlx", derive(sqlx::FromRow))] diff --git a/src/types/entities/team.rs b/src/types/entities/team.rs index 98bd23e..8fed819 100644 --- a/src/types/entities/team.rs +++ b/src/types/entities/team.rs @@ -4,9 +4,9 @@ use serde::{Deserialize, Serialize}; -use crate::gateway::Shared; use crate::types::entities::User; use crate::types::Snowflake; +use crate::types::Shared; #[derive(Debug, Deserialize, Serialize, Clone)] #[cfg_attr(feature = "sqlx", derive(sqlx::FromRow))] diff --git a/src/types/entities/template.rs b/src/types/entities/template.rs index f34fbd7..e82ec17 100644 --- a/src/types/entities/template.rs +++ b/src/types/entities/template.rs @@ -5,8 +5,8 @@ use chrono::{DateTime, Utc}; use serde::{Deserialize, Serialize}; -use crate::gateway::Shared; use crate::types::{ + Shared, entities::{Guild, User}, utils::Snowflake, }; diff --git a/src/types/entities/user_settings.rs b/src/types/entities/user_settings.rs index 6c072a8..db13efc 100644 --- a/src/types/entities/user_settings.rs +++ b/src/types/entities/user_settings.rs @@ -7,7 +7,7 @@ use std::sync::{Arc, RwLock}; use chrono::{serde::ts_milliseconds_option, Utc}; use serde::{Deserialize, Serialize}; -use crate::gateway::Shared; +use crate::types::Shared; #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)] #[cfg_attr(feature = "sqlx", derive(sqlx::Type))] diff --git a/src/types/entities/voice_state.rs b/src/types/entities/voice_state.rs index 304b724..7297456 100644 --- a/src/types/entities/voice_state.rs +++ b/src/types/entities/voice_state.rs @@ -5,7 +5,8 @@ #[cfg(feature = "client")] use chorus_macros::Composite; -use crate::gateway::Shared; +use crate::types::Shared; + #[cfg(feature = "client")] use crate::types::Composite; @@ -51,6 +52,7 @@ pub struct VoiceState { pub id: Option, // Only exists on Spacebar } +#[cfg(feature = "client")] impl Updateable for VoiceState { #[cfg(not(tarpaulin_include))] fn id(&self) -> Snowflake { diff --git a/src/types/entities/webhook.rs b/src/types/entities/webhook.rs index f973956..3fcc43b 100644 --- a/src/types/entities/webhook.rs +++ b/src/types/entities/webhook.rs @@ -6,7 +6,8 @@ use std::fmt::Debug; use serde::{Deserialize, Serialize}; -use crate::gateway::Shared; +use crate::types::Shared; + #[cfg(feature = "client")] use crate::gateway::Updateable; diff --git a/src/types/events/channel.rs b/src/types/events/channel.rs index 28a96e5..911f249 100644 --- a/src/types/events/channel.rs +++ b/src/types/events/channel.rs @@ -3,7 +3,6 @@ // file, You can obtain one at http://mozilla.org/MPL/2.0/. use crate::types::events::WebSocketEvent; -use crate::types::IntoShared; use crate::types::{entities::Channel, JsonField, Snowflake, SourceUrlField}; use chorus_macros::{JsonField, SourceUrlField}; use chrono::{DateTime, Utc}; @@ -13,7 +12,10 @@ use serde::{Deserialize, Serialize}; use super::UpdateMessage; #[cfg(feature = "client")] -use crate::gateway::Shared; +use crate::types::Shared; + +#[cfg(feature = "client")] +use crate::types::IntoShared; #[cfg(feature = "client")] use crate::types::Guild; diff --git a/src/types/events/guild.rs b/src/types/events/guild.rs index 7271d6a..362b984 100644 --- a/src/types/events/guild.rs +++ b/src/types/events/guild.rs @@ -9,7 +9,7 @@ use serde::{Deserialize, Serialize}; use crate::types::entities::{Guild, PublicUser, UnavailableGuild}; use crate::types::events::WebSocketEvent; use crate::types::{ - AuditLogEntry, Emoji, GuildMember, GuildScheduledEvent, IntoShared, JsonField, RoleObject, + AuditLogEntry, Emoji, GuildMember, GuildScheduledEvent, JsonField, RoleObject, Snowflake, SourceUrlField, Sticker, }; @@ -18,7 +18,9 @@ use super::PresenceUpdate; #[cfg(feature = "client")] use super::UpdateMessage; #[cfg(feature = "client")] -use crate::gateway::Shared; +use crate::types::Shared; +#[cfg(feature = "client")] +use crate::types::IntoShared; #[derive(Debug, Deserialize, Serialize, Default, Clone, SourceUrlField, JsonField, WebSocketEvent)] /// See ; diff --git a/src/types/events/mod.rs b/src/types/events/mod.rs index 3841471..280ebb8 100644 --- a/src/types/events/mod.rs +++ b/src/types/events/mod.rs @@ -48,7 +48,7 @@ use serde_json::{from_str, from_value, to_value, Value}; use std::collections::HashMap; #[cfg(feature = "client")] -use crate::gateway::Shared; +use crate::types::Shared; use std::fmt::Debug; #[cfg(feature = "client")] diff --git a/src/types/mod.rs b/src/types/mod.rs index 8eee13a..c4cc190 100644 --- a/src/types/mod.rs +++ b/src/types/mod.rs @@ -4,6 +4,8 @@ //! All the types, entities, events and interfaces of the Spacebar API. +use std::sync::{Arc, RwLock}; + pub use config::*; pub use entities::*; pub use errors::*; @@ -19,3 +21,11 @@ mod events; mod interfaces; mod schema; mod utils; + +/// A type alias for [`Arc>`], used to make the public facing API concerned with +/// Composite structs more ergonomic. +/// ## Note +/// +/// While `T` does not have to implement `Composite` to be used with `Shared`, +/// the primary use of `Shared` is with types that implement `Composite`. +pub type Shared = Arc>; diff --git a/tests/common/mod.rs b/tests/common/mod.rs index f24c7e6..a98667c 100644 --- a/tests/common/mod.rs +++ b/tests/common/mod.rs @@ -2,13 +2,13 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/. -use chorus::gateway::{Gateway, Shared}; +use chorus::gateway::Gateway; use chorus::types::IntoShared; use chorus::{ instance::{ChorusUser, Instance}, types::{ Channel, ChannelCreateSchema, Guild, GuildCreateSchema, RegisterSchema, - RoleCreateModifySchema, RoleObject, + RoleCreateModifySchema, RoleObject, Shared }, UrlBundle, };