diff options
| author | Austin Hellyer <[email protected]> | 2016-11-29 20:51:10 -0800 |
|---|---|---|
| committer | Austin Hellyer <[email protected]> | 2016-11-29 22:27:59 -0800 |
| commit | 93b990d8d1bc9df69b8e27a3db61da570822aad6 (patch) | |
| tree | 6305cf635df90681527a8e736f65ff19f21fd8bc /src/client | |
| parent | Add more shiny readme badges (diff) | |
| download | serenity-93b990d8d1bc9df69b8e27a3db61da570822aad6.tar.xz serenity-93b990d8d1bc9df69b8e27a3db61da570822aad6.zip | |
Clean up the codebase
Diffstat (limited to 'src/client')
| -rw-r--r-- | src/client/context.rs | 48 | ||||
| -rw-r--r-- | src/client/gateway/prep.rs | 21 | ||||
| -rw-r--r-- | src/client/gateway/shard.rs | 10 | ||||
| -rw-r--r-- | src/client/mod.rs | 2 | ||||
| -rw-r--r-- | src/client/rest/mod.rs | 8 |
5 files changed, 44 insertions, 45 deletions
diff --git a/src/client/context.rs b/src/client/context.rs index 678d362..d648888 100644 --- a/src/client/context.rs +++ b/src/client/context.rs @@ -1,5 +1,6 @@ use serde_json::builder::ObjectBuilder; use std::collections::HashMap; +use std::fmt::Write as FmtWrite; use std::io::Read; use std::sync::{Arc, Mutex}; use super::gateway::Shard; @@ -127,9 +128,7 @@ impl Context { return Err(Error::Client(ClientError::InvalidOperationAsBot)); } - let code = utils::parse_invite(invite); - - rest::accept_invite(code) + rest::accept_invite(utils::parse_invite(invite)) } /// Mark a [`Channel`] as being read up to a certain [`Message`]. @@ -481,7 +480,13 @@ impl Context { where F: FnOnce(EditRole) -> EditRole, G: Into<GuildId> { let id = guild_id.into().0; - // The API only allows creating an empty role. + // The API only allows creating an empty role, which must then be + // edited. + // + // Note to self: [this] issue/proposal may make this not require an + // edit. + // + // [this]: http://github.com/hammerandchisel/discord-api-docs/issues/156 let role = try!(rest::create_role(id)); let map = f(EditRole::default()).0.build(); @@ -544,9 +549,7 @@ impl Context { /// [`Invite::delete`]: ../model/struct.Invite.html#method.delete /// [Manage Guild]: permissions/constant.MANAGE_GUILD.html pub fn delete_invite(&self, invite: &str) -> Result<Invite> { - let code = utils::parse_invite(invite); - - rest::delete_invite(code) + rest::delete_invite(utils::parse_invite(invite)) } /// Deletes a [`Message`] given its Id. @@ -859,7 +862,7 @@ impl Context { let guild_id = guild_id.into(); let role_id = role_id.into(); - feature_cache! {{ + let map = feature_cache! {{ let cache = CACHE.read().unwrap(); let role = if let Some(role) = { @@ -870,14 +873,12 @@ impl Context { return Err(Error::Client(ClientError::RecordNotFound)); }; - let map = f(EditRole::new(role)).0.build(); - - rest::edit_role(guild_id.0, role_id.0, map) + f(EditRole::new(role)).0.build() } else { - let map = f(EditRole::default()).0.build(); + f(EditRole::default()).0.build() + }}; - rest::edit_role(guild_id.0, role_id.0, map) - }} + rest::edit_role(guild_id.0, role_id.0, map) } /// Edit a message given its Id and the Id of the channel it belongs to. @@ -1061,22 +1062,19 @@ impl Context { where C: Into<ChannelId>, F: FnOnce(GetMessages) -> GetMessages { let query = { let mut map = f(GetMessages::default()).0; - let mut query = format!("?limit={}", - map.remove("limit").unwrap_or(50)); + let mut query = String::new(); + try!(write!(query, "?limit={}", map.remove("limit").unwrap_or(50))); if let Some(after) = map.remove("after") { - query.push_str("&after="); - query.push_str(&after.to_string()); + try!(write!(query, "&after={}", after)); } if let Some(around) = map.remove("around") { - query.push_str("&around="); - query.push_str(&around.to_string()); + try!(write!(query, "&around={}", around)); } if let Some(before) = map.remove("before") { - query.push_str("&before="); - query.push_str(&before.to_string()); + try!(write!(query, "&before={}", before)); } query @@ -1118,7 +1116,11 @@ impl Context { M: Into<MessageId>, R: Into<ReactionType>, U: Into<UserId> { - let limit = limit.map(|x| if x > 100 { 100 } else { x }).unwrap_or(50); + let limit = limit.map(|x| if x > 100 { + 100 + } else { + x + }).unwrap_or(50); rest::get_reaction_users(channel_id.into().0, message_id.into().0, diff --git a/src/client/gateway/prep.rs b/src/client/gateway/prep.rs index 2ca435b..6aa40f3 100644 --- a/src/client/gateway/prep.rs +++ b/src/client/gateway/prep.rs @@ -21,10 +21,10 @@ use ::model::event::{Event, GatewayEvent, ReadyEvent}; #[inline] pub fn parse_ready(event: GatewayEvent, - tx: &MpscSender<GatewayStatus>, - receiver: &mut Receiver<WebSocketStream>, - identification: Value) - -> Result<(ReadyEvent, u64)> { + tx: &MpscSender<GatewayStatus>, + receiver: &mut Receiver<WebSocketStream>, + identification: Value) + -> Result<(ReadyEvent, u64)> { match event { GatewayEvent::Dispatch(seq, Event::Ready(event)) => { Ok((event, seq)) @@ -60,7 +60,7 @@ pub fn identify(token: &str, shard_info: Option<[u8; 2]>) -> Value { object = identify_compression(object) .insert("large_threshold", 250) // max value .insert_object("properties", |object| object - .insert("$browser", "Feature-full and ergonomic discord rust library") + .insert("$browser", "Ergonomic and high-level Rust library") .insert("$device", "serenity") .insert("$os", env::consts::OS) .insert("$referrer", "") @@ -70,10 +70,9 @@ pub fn identify(token: &str, shard_info: Option<[u8; 2]>) -> Value { .insert("v", constants::GATEWAY_VERSION); if let Some(shard_info) = shard_info { - object = object - .insert_array("shard", |a| a - .push(shard_info[0]) - .push(shard_info[1])); + object = object.insert_array("shard", |a| a + .push(shard_info[0]) + .push(shard_info[1])); } object @@ -97,8 +96,8 @@ pub fn build_gateway_url(base: &str) -> Result<RequestUrl> { } pub fn keepalive(interval: u64, - mut sender: Sender<WebSocketStream>, - channel: MpscReceiver<GatewayStatus>) { + mut sender: Sender<WebSocketStream>, + channel: MpscReceiver<GatewayStatus>) { let mut base_interval = Duration::milliseconds(interval as i64); let mut next_tick = time::get_time() + base_interval; diff --git a/src/client/gateway/shard.rs b/src/client/gateway/shard.rs index 13a8c06..1464bd3 100644 --- a/src/client/gateway/shard.rs +++ b/src/client/gateway/shard.rs @@ -135,9 +135,9 @@ impl Shard { // Parse READY let event = try!(receiver.recv_json(GatewayEvent::decode)); let (ready, sequence) = try!(prep::parse_ready(event, - &tx, - &mut receiver, - identification)); + &tx, + &mut receiver, + identification)); Ok((feature_voice! {{ Shard { @@ -512,8 +512,8 @@ impl Shard { let msg = ObjectBuilder::new() .insert("op", OpCode::StatusUpdate.num()) .insert_object("d", move |mut object| { - object = object.insert("since", 0) - .insert("afk", afk) + object = object.insert("afk", afk) + .insert("since", 0) .insert("status", status.name()); match game.as_ref() { diff --git a/src/client/mod.rs b/src/client/mod.rs index 41e982a..92b071e 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -812,8 +812,6 @@ impl Client { } } - // How to avoid the problem while still working on other parts of the - // library 101 loop { thread::sleep(Duration::from_secs(1)); } diff --git a/src/client/rest/mod.rs b/src/client/rest/mod.rs index 84c7c00..fcd29e3 100644 --- a/src/client/rest/mod.rs +++ b/src/client/rest/mod.rs @@ -41,6 +41,7 @@ use serde_json::builder::ObjectBuilder; use serde_json; use std::collections::BTreeMap; use std::default::Default; +use std::fmt::Write as FmtWrite; use std::io::{ErrorKind as IoErrorKind, Read}; use std::sync::{Arc, Mutex}; use ::constants; @@ -1138,7 +1139,7 @@ pub fn get_message(channel_id: u64, message_id: u64) /// Gets X messages from a channel. pub fn get_messages(channel_id: u64, query: &str) -> Result<Vec<Message>> { - let url = format!(api_concat!("/channels/{}/messages{}"), + let url = format!(api!("/channels/{}/messages{}"), channel_id, query); let client = HyperClient::new(); @@ -1172,8 +1173,7 @@ pub fn get_reaction_users(channel_id: u64, limit); if let Some(user_id) = after { - uri.push_str("&after="); - uri.push_str(&user_id.to_string()); + try!(write!(uri, "&after={}", user_id)); } let response = request!(Route::ChannelsIdMessagesIdReactionsUserIdType(channel_id), @@ -1317,7 +1317,7 @@ pub fn send_file<R: Read>(channel_id: u64, filename: &str, map: BTreeMap<String, Value>) -> Result<Message> { - let uri = format!(api_concat!("/channels/{}/messages"), channel_id); + let uri = format!(api!("/channels/{}/messages"), channel_id); let url = match Url::parse(&uri) { Ok(url) => url, Err(_why) => return Err(Error::Url(uri)), |