aboutsummaryrefslogtreecommitdiff
path: root/src/ext
diff options
context:
space:
mode:
Diffstat (limited to 'src/ext')
-rw-r--r--src/ext/cache/mod.rs11
-rw-r--r--src/ext/voice/handler.rs28
-rw-r--r--src/ext/voice/payload.rs59
3 files changed, 51 insertions, 47 deletions
diff --git a/src/ext/cache/mod.rs b/src/ext/cache/mod.rs
index ee26816..84c21a7 100644
--- a/src/ext/cache/mod.rs
+++ b/src/ext/cache/mod.rs
@@ -842,14 +842,15 @@ impl Cache {
for guild in ready.guilds {
match guild {
- PossibleGuild::Offline(guild_id) => {
- self.unavailable_guilds.insert(guild_id);
- self.guilds.remove(&guild_id);
+ GuildStatus::Offline(unavailable) => {
+ self.guilds.remove(&unavailable.id);
+ self.unavailable_guilds.insert(unavailable.id);
},
- PossibleGuild::Online(guild) => {
- self.channels.extend(guild.channels.clone());
+ GuildStatus::OnlineGuild(guild) => {
+ self.unavailable_guilds.remove(&guild.id);
self.guilds.insert(guild.id, Arc::new(RwLock::new(guild)));
},
+ GuildStatus::OnlinePartialGuild(_) => {},
}
}
diff --git a/src/ext/voice/handler.rs b/src/ext/voice/handler.rs
index 60cc6e6..c81a57f 100644
--- a/src/ext/voice/handler.rs
+++ b/src/ext/voice/handler.rs
@@ -1,4 +1,3 @@
-use serde_json::builder::ObjectBuilder;
use std::sync::mpsc::{self, Sender as MpscSender};
use super::{AudioReceiver, AudioSource};
use super::connection_info::ConnectionInfo;
@@ -162,11 +161,11 @@ impl Handler {
// Safe as all of these being present was already checked.
self.send(VoiceStatus::Connect(ConnectionInfo {
- endpoint,
- guild_id,
- session_id,
- token,
- user_id,
+ endpoint: endpoint,
+ guild_id: guild_id,
+ session_id: session_id,
+ token: token,
+ user_id: user_id,
}));
true
@@ -409,14 +408,15 @@ impl Handler {
/// [`standalone`]: #method.standalone
fn update(&self) {
if let Some(ref ws) = self.ws {
- let map = ObjectBuilder::new()
- .insert("op", VoiceOpCode::SessionDescription.num())
- .insert_object("d", |o| o
- .insert("channel_id", self.channel_id.map(|c| c.0))
- .insert("guild_id", self.guild_id.0)
- .insert("self_deaf", self.self_deaf)
- .insert("self_mute", self.self_mute))
- .build();
+ let map = json!({
+ "op": VoiceOpCode::SessionDescription.num(),
+ "d": {
+ "channel_id": self.channel_id.map(|c| c.0),
+ "guild_id": self.guild_id.0,
+ "self_deaf": self.self_deaf,
+ "self_mute": self.self_mute,
+ }
+ });
let _ = ws.send(GatewayStatus::SendMessage(map));
}
diff --git a/src/ext/voice/payload.rs b/src/ext/voice/payload.rs
index 964d6d2..c2e7c0c 100644
--- a/src/ext/voice/payload.rs
+++ b/src/ext/voice/payload.rs
@@ -1,47 +1,50 @@
-use serde_json::builder::ObjectBuilder;
use serde_json::Value;
use super::connection_info::ConnectionInfo;
use ::constants::VoiceOpCode;
#[inline]
pub fn build_identify(info: &ConnectionInfo) -> Value {
- ObjectBuilder::new()
- .insert("op", VoiceOpCode::Identify.num())
- .insert_object("d", |o| o
- .insert("server_id", info.guild_id.0)
- .insert("session_id", &info.session_id)
- .insert("token", &info.token)
- .insert("user_id", info.user_id.0))
- .build()
+ json!({
+ "op": VoiceOpCode::Identify.num(),
+ "d": {
+ "server_id": info.guild_id.0,
+ "session_id": &info.session_id,
+ "token": &info.token,
+ "user_id": info.user_id.0,
+ }
+ })
}
#[inline]
pub fn build_keepalive() -> Value {
- ObjectBuilder::new()
- .insert("op", VoiceOpCode::KeepAlive.num())
- .insert("d", Value::Null)
- .build()
+ json!({
+ "op": VoiceOpCode::KeepAlive.num(),
+ "d": Value::Null,
+ })
}
#[inline]
pub fn build_select_protocol(address: ::std::borrow::Cow<str>, port: u16) -> Value {
- ObjectBuilder::new()
- .insert("op", VoiceOpCode::SelectProtocol.num())
- .insert_object("d", |o| o
- .insert("protocol", "udp")
- .insert_object("data", |o| o
- .insert("address", address)
- .insert("mode", super::CRYPTO_MODE)
- .insert("port", port)))
- .build()
+ json!({
+ "op": VoiceOpCode::SelectProtocol.num(),
+ "d": {
+ "protocol": "udp",
+ "data": {
+ "address": address,
+ "mode": super::CRYPTO_MODE,
+ "port": port,
+ }
+ }
+ })
}
#[inline]
pub fn build_speaking(speaking: bool) -> Value {
- ObjectBuilder::new()
- .insert("op", VoiceOpCode::Speaking.num())
- .insert_object("d", |o| o
- .insert("delay", 0)
- .insert("speaking", speaking))
- .build()
+ json!({
+ "op": VoiceOpCode::Speaking.num(),
+ "d": {
+ "delay": 0,
+ "speaking": speaking,
+ }
+ })
}