diff --git a/src/gateway/backends/wasm.rs b/src/gateway/backends/wasm.rs index a40321d..0302b8f 100644 --- a/src/gateway/backends/wasm.rs +++ b/src/gateway/backends/wasm.rs @@ -9,7 +9,7 @@ use futures_util::{ use ws_stream_wasm::*; -use crate::gateway::GatewayMessage; +use crate::gateway::{GatewayMessage, RawGatewayMessage}; #[derive(Debug, Clone)] pub struct WasmBackend; @@ -46,3 +46,21 @@ impl From for GatewayMessage { } } } + +impl From for WsMessage { + fn from(message: RawGatewayMessage) -> Self { + match message { + RawGatewayMessage::Text(text) => tungstenite::Message::Text(text), + RawGatewayMessage::Bytes(bytes) => tungstenite::Message::Binary(bytes), + } + } +} + +impl From for RawGatewayMessage { + fn from(value: WsMessage) -> Self { + match value { + WsMessage::Binary(bytes) => RawGatewayMessage::Bytes(bytes), + WsMessage::Text(text) => RawGatewayMessage::Text(text), + } + } +} diff --git a/src/gateway/gateway.rs b/src/gateway/gateway.rs index 82f1f0f..ec42b30 100644 --- a/src/gateway/gateway.rs +++ b/src/gateway/gateway.rs @@ -217,7 +217,7 @@ impl Gateway { message = GatewayMessage::from_raw_json_message(raw_message).unwrap() } GatewayTransportCompression::ZLibStream => { - let message_bytes = raw_message.to_bytes(); + let message_bytes = raw_message.into_bytes(); let can_decompress = message_bytes.len() > 4 && message_bytes[message_bytes.len() - 4..] == ZLIB_SUFFIX; diff --git a/src/gateway/message.rs b/src/gateway/message.rs index d4a0986..bc86c04 100644 --- a/src/gateway/message.rs +++ b/src/gateway/message.rs @@ -19,7 +19,7 @@ pub(crate) enum RawGatewayMessage { impl RawGatewayMessage { /// Attempt to consume the message into a String, will try to convert binary to utf8 - pub fn to_text(self) -> Result { + pub fn into_text(self) -> Result { match self { RawGatewayMessage::Text(text) => Ok(text), RawGatewayMessage::Bytes(bytes) => String::from_utf8(bytes), @@ -27,7 +27,7 @@ impl RawGatewayMessage { } /// Consume the message into bytes, will convert text to binary - pub fn to_bytes(self) -> Vec { + pub fn into_bytes(self) -> Vec { match self { RawGatewayMessage::Text(text) => text.as_bytes().to_vec(), RawGatewayMessage::Bytes(bytes) => bytes, @@ -79,7 +79,7 @@ impl GatewayMessage { pub(crate) fn from_raw_json_message( message: RawGatewayMessage, ) -> Result { - let text = message.to_text()?; + let text = message.into_text()?; Ok(GatewayMessage(text)) } @@ -105,6 +105,6 @@ impl GatewayMessage { message: RawGatewayMessage, inflate: &mut flate2::Decompress, ) -> Result { - Self::from_zlib_stream_json_bytes(&message.to_bytes(), inflate) + Self::from_zlib_stream_json_bytes(&message.into_bytes(), inflate) } } diff --git a/src/gateway/options.rs b/src/gateway/options.rs index 0ebf3a2..e5c0314 100644 --- a/src/gateway/options.rs +++ b/src/gateway/options.rs @@ -39,9 +39,9 @@ impl GatewayOptions { parameters.push(some_compression); } - let already_has_parameters = url.contains("?") && url.contains("="); + let mut has_parameters = url.contains('?') && url.contains('='); - if !already_has_parameters { + if !has_parameters { // Insure it ends in a /, so we don't get a 400 error if !url.ends_with('/') { url.push('/'); @@ -50,12 +50,13 @@ impl GatewayOptions { // Lets hope that if it already has parameters the person knew to add '/' } - for index in 0..parameters.len() { - if index == 0 && !already_has_parameters { - url = format!("{}?{}", url, parameters[index]); + for parameter in parameters { + if !has_parameters { + url = format!("{}?{}", url, parameter); + has_parameters = true; } else { - url = format!("{}&{}", url, parameters[index]); + url = format!("{}&{}", url, parameter); } } @@ -81,7 +82,7 @@ impl GatewayTransportCompression { /// If set to [GatewayTransportCompression::None] returns [None]. /// /// If set to anything else, returns a string like "compress=zlib-stream" - pub(crate) fn to_url_parameter(&self) -> Option { + pub(crate) fn to_url_parameter(self) -> Option { match self { Self::None => None, Self::ZLibStream => Some(String::from("compress=zlib-stream")) @@ -108,7 +109,7 @@ impl GatewayEncoding { /// Returns the option as a url parameter. /// /// Returns a string like "encoding=json" - pub(crate) fn to_url_parameter(&self) -> String { + pub(crate) fn to_url_parameter(self) -> String { match self { Self::Json => String::from("encoding=json"), Self::ETF => String::from("encoding=etf") diff --git a/src/types/entities/channel.rs b/src/types/entities/channel.rs index c1219ad..044c1e2 100644 --- a/src/types/entities/channel.rs +++ b/src/types/entities/channel.rs @@ -4,7 +4,6 @@ use chrono::{DateTime, Utc}; use serde::{Deserialize, Serialize}; -use serde_aux::prelude::deserialize_string_from_number; use serde_repr::{Deserialize_repr, Serialize_repr}; use std::fmt::Debug; @@ -274,4 +273,4 @@ pub enum ChannelType { pub struct FollowedChannel { pub channel_id: Snowflake, pub webhook_id: Snowflake -} \ No newline at end of file +} diff --git a/src/types/entities/message.rs b/src/types/entities/message.rs index 34a7b9b..fe7ff7b 100644 --- a/src/types/entities/message.rs +++ b/src/types/entities/message.rs @@ -429,4 +429,4 @@ pub struct PartialEmoji { pub enum ReactionType { Normal = 0, Burst = 1, // The dreaded super reactions -} \ No newline at end of file +} diff --git a/src/types/entities/user.rs b/src/types/entities/user.rs index 70669d0..c7e60b3 100644 --- a/src/types/entities/user.rs +++ b/src/types/entities/user.rs @@ -4,11 +4,9 @@ use crate::types::utils::Snowflake; use chrono::{DateTime, Utc}; -use serde::{Deserialize, Deserializer, Serialize, Serializer}; +use serde::{Deserialize, Serialize}; use serde_aux::prelude::deserialize_option_number_from_string; use std::fmt::Debug; -use std::num::ParseIntError; -use std::str::FromStr; #[cfg(feature = "client")] use crate::gateway::Updateable; diff --git a/src/types/schema/channel.rs b/src/types/schema/channel.rs index 33df3ff..c3c02f4 100644 --- a/src/types/schema/channel.rs +++ b/src/types/schema/channel.rs @@ -3,10 +3,9 @@ // file, You can obtain one at http://mozilla.org/MPL/2.0/. use bitflags::bitflags; -use serde::{Deserialize, Deserializer, Serialize, Serializer}; -use serde::de::Visitor; +use serde::{Deserialize, Serialize}; -use crate::types::{ChannelType, DefaultReaction, Error, entities::PermissionOverwrite, Snowflake}; +use crate::types::{ChannelType, DefaultReaction, entities::PermissionOverwrite, Snowflake}; #[derive(Debug, Deserialize, Serialize, Default, PartialEq, PartialOrd)] #[serde(rename_all = "snake_case")] @@ -188,4 +187,4 @@ pub struct AddFollowingChannelSchema { pub struct CreateWebhookSchema { pub name: String, pub avatar: Option, -} \ No newline at end of file +} diff --git a/src/voice/gateway/backends/wasm.rs b/src/voice/gateway/backends/wasm.rs index 8d32bb3..7b069c6 100644 --- a/src/voice/gateway/backends/wasm.rs +++ b/src/voice/gateway/backends/wasm.rs @@ -24,20 +24,3 @@ impl From for VoiceGatewayMessage { } } -impl From for WsMessage { - fn from(message: RawGatewayMessage) -> Self { - match message { - RawGatewayMessage::Text(text) => tungstenite::Message::Text(text), - RawGatewayMessage::Bytes(bytes) => tungstenite::Message::Binary(bytes), - } - } -} - -impl From for RawGatewayMessage { - fn from(value: WsMessage) -> Self { - match value { - WsMessage::Binary(bytes) => RawGatewayMessage::Bytes(bytes), - WsMessage::Text(text) => RawGatewayMessage::Text(text), - } - } -}