diff options
| author | Austin Hellyer <[email protected]> | 2016-12-29 11:49:28 -0800 |
|---|---|---|
| committer | Austin Hellyer <[email protected]> | 2016-12-29 11:49:28 -0800 |
| commit | fa4952b30fec8f62c9882c2c9ef9836eae2cd9a9 (patch) | |
| tree | cae13f61f6634183ff73c24703c66d57b6b1d8e8 /src | |
| parent | Add user static avatar url methods (diff) | |
| download | serenity-fa4952b30fec8f62c9882c2c9ef9836eae2cd9a9.tar.xz serenity-fa4952b30fec8f62c9882c2c9ef9836eae2cd9a9.zip | |
Use conditional blocks over macros
Diffstat (limited to 'src')
| -rw-r--r-- | src/client/context.rs | 15 | ||||
| -rw-r--r-- | src/client/dispatch.rs | 63 | ||||
| -rw-r--r-- | src/client/gateway/shard.rs | 5 | ||||
| -rw-r--r-- | src/client/mod.rs | 5 | ||||
| -rw-r--r-- | src/model/channel.rs | 60 | ||||
| -rw-r--r-- | src/model/guild.rs | 55 | ||||
| -rw-r--r-- | src/model/id.rs | 5 | ||||
| -rw-r--r-- | src/model/invite.rs | 20 | ||||
| -rw-r--r-- | src/utils/macros.rs | 112 |
9 files changed, 138 insertions, 202 deletions
diff --git a/src/client/context.rs b/src/client/context.rs index dbb2ea2..8bbdfbe 100644 --- a/src/client/context.rs +++ b/src/client/context.rs @@ -1044,11 +1044,12 @@ impl Context { where C: Into<ChannelId> { let channel_id = channel_id.into(); - feature_cache_enabled! {{ + #[cfg(feature="cache")] + { if let Some(channel) = CACHE.read().unwrap().get_channel(channel_id) { return Ok(channel.clone_inner()); } - }} + } rest::get_channel(channel_id.0) } @@ -1060,13 +1061,14 @@ impl Context { -> Result<HashMap<ChannelId, GuildChannel>> where G: Into<GuildId> { let guild_id = guild_id.into(); - feature_cache_enabled! {{ + #[cfg(feature="cache")] + { let cache = CACHE.read().unwrap(); if let Some(guild) = cache.get_guild(guild_id) { return Ok(guild.channels.clone()); } - }} + } let mut channels = HashMap::new(); @@ -1193,13 +1195,14 @@ impl Context { let guild_id = guild_id.into(); let user_id = user_id.into(); - feature_cache_enabled! {{ + #[cfg(feature="cache")] + { let cache = CACHE.read().unwrap(); if let Some(member) = cache.get_member(guild_id, user_id) { return Ok(member.clone()); } - }} + } rest::get_member(guild_id.0, user_id.0) } diff --git a/src/client/dispatch.rs b/src/client/dispatch.rs index 5f61ea9..ac8376d 100644 --- a/src/client/dispatch.rs +++ b/src/client/dispatch.rs @@ -26,14 +26,20 @@ macro_rules! handler { macro_rules! update { ($method:ident, $event:expr) => { - feature_cache_enabled! {{ - CACHE.write().unwrap().$method(&$event) - }} + { + #[cfg(feature="cache")] + { + CACHE.write().unwrap().$method(&$event) + } + } }; ($method:ident, $event:expr, $old:expr) => { - feature_cache_enabled! {{ - CACHE.write().unwrap().$method(&$event, $old) - }} + { + #[cfg(feature="cache")] + { + CACHE.write().unwrap().$method(&$event, $old) + } + } }; } @@ -169,9 +175,10 @@ fn handle_event(event: Event, }); }} } else { - feature_cache_enabled! {{ + #[cfg(feature="cache")] + { update!(update_with_call_update, event, false); - }} + } } }, Event::ChannelCreate(event) => { @@ -355,9 +362,10 @@ fn handle_event(event: Event, }); }} } else { - feature_cache_enabled! {{ + #[cfg(feature="cache")] + { let _full = update!(update_with_guild_delete, event); - }} + } } }, Event::GuildEmojisUpdate(event) => { @@ -411,9 +419,10 @@ fn handle_event(event: Event, }); }} } else { - feature_cache_enabled! {{ + #[cfg(feature="cache")] + { let _member = update!(update_with_guild_member_remove, event); - }} + } } }, Event::GuildMemberUpdate(event) => { @@ -486,9 +495,10 @@ fn handle_event(event: Event, }); }} } else { - feature_cache_enabled! {{ + #[cfg(feature="cache")] + { let _role = update!(update_with_guild_role_delete, event); - }} + } } }, Event::GuildRoleUpdate(event) => { @@ -508,9 +518,10 @@ fn handle_event(event: Event, }); }} } else { - feature_cache_enabled! {{ + #[cfg(feature="cache")] + { let _before = update!(update_with_guild_role_update, event); - }} + } } }, Event::GuildSync(event) => { @@ -765,9 +776,10 @@ fn handle_event(event: Event, }); }} } else { - feature_cache_enabled! {{ + #[cfg(feature="cache")] + { let _before = update!(update_with_user_guild_settings_update, event); - }} + } } }, Event::UserNoteUpdate(event) => { @@ -787,9 +799,10 @@ fn handle_event(event: Event, }); }} } else { - feature_cache_enabled! {{ + #[cfg(feature="cache")] + { let _before = update!(update_with_user_note_update, event); - }} + } } }, Event::UserSettingsUpdate(event) => { @@ -810,9 +823,10 @@ fn handle_event(event: Event, }); }} } else { - feature_cache_enabled! {{ + #[cfg(feature="cache")] + { update!(update_with_user_settings_update, event, false); - }} + } } }, Event::UserUpdate(event) => { @@ -832,9 +846,10 @@ fn handle_event(event: Event, }); }} } else { - feature_cache_enabled! {{ + #[cfg(feature="cache")] + { let _before = update!(update_with_user_update, event); - }} + } } }, Event::VoiceServerUpdate(event) => { diff --git a/src/client/gateway/shard.rs b/src/client/gateway/shard.rs index 0e4d46b..7c3b385 100644 --- a/src/client/gateway/shard.rs +++ b/src/client/gateway/shard.rs @@ -412,7 +412,8 @@ impl Shard { let _ = self.keepalive_channel.send(status); } - feature_voice_enabled! {{ + #[cfg(feature="voice")] + { if let Event::VoiceStateUpdate(ref update) = *event { if let Some(guild_id) = update.guild_id { if let Some(handler) = self.manager.get(guild_id) { @@ -428,7 +429,7 @@ impl Shard { } } } - }} + } } fn reconnect(&mut self, mut receiver: &mut Receiver<WebSocketStream>) diff --git a/src/client/mod.rs b/src/client/mod.rs index 075f323..bbc2bc1 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -810,11 +810,12 @@ impl Client { Ok((shard, ready, receiver)) => { self.shards.push(Arc::new(Mutex::new(shard))); - feature_cache_enabled! {{ + #[cfg(feature="cache")] + { CACHE.write() .unwrap() .update_with_ready(&ready); - }} + } match self.shards.last() { Some(shard) => { diff --git a/src/model/channel.rs b/src/model/channel.rs index 90fcc50..c56ebbe 100644 --- a/src/model/channel.rs +++ b/src/model/channel.rs @@ -438,7 +438,8 @@ impl Message { /// [Manage Messages]: permissions/constant.MANAGE_MESSAGES.html #[cfg(feature="methods")] pub fn delete(&self) -> Result<()> { - feature_cache_enabled! {{ + #[cfg(feature="cache")] + { let req = permissions::MANAGE_MESSAGES; let is_author = self.author.id == CACHE.read().unwrap().user.id; let has_perms = utils::user_has_perms(self.channel_id, req)?; @@ -446,7 +447,7 @@ impl Message { if !is_author && !has_perms { return Err(Error::Client(ClientError::InvalidPermissions(req))); } - }} + } rest::delete_message(self.channel_id.0, self.id.0) } @@ -466,13 +467,14 @@ impl Message { /// [Manage Messages]: permissions/constant.MANAGE_MESSAGES.html #[cfg(feature="methods")] pub fn delete_reactions(&self) -> Result<()> { - feature_cache_enabled! {{ + #[cfg(feature="cache")] + { let req = permissions::MANAGE_MESSAGES; if !utils::user_has_perms(self.channel_id, req)? { return Err(Error::Client(ClientError::InvalidPermissions(req))); } - }} + } rest::delete_message_reactions(self.channel_id.0, self.id.0) } @@ -508,11 +510,12 @@ impl Message { return Err(Error::Client(ClientError::MessageTooLong(length_over))); } - feature_cache_enabled! {{ + #[cfg(feature="cache")] + { if self.author.id != CACHE.read().unwrap().user.id { return Err(Error::Client(ClientError::InvalidUser)); } - }} + } let mut map = ObjectBuilder::new().insert("content", new_content); @@ -611,13 +614,14 @@ impl Message { /// [Manage Messages]: permissions/constant.MANAGE_MESSAGES.html #[cfg(feature="methods")] pub fn pin(&self) -> Result<()> { - feature_cache_enabled! {{ + #[cfg(feature="cache")] + { let req = permissions::MANAGE_MESSAGES; if !utils::user_has_perms(self.channel_id, req)? { return Err(Error::Client(ClientError::InvalidPermissions(req))); } - }} + } rest::pin_message(self.channel_id.0, self.id.0) } @@ -638,13 +642,14 @@ impl Message { /// [permissions]: permissions #[cfg(feature="methods")] pub fn react<R: Into<ReactionType>>(&self, reaction_type: R) -> Result<()> { - feature_cache_enabled! {{ + #[cfg(feature="cache")] + { let req = permissions::ADD_REACTIONS; if !utils::user_has_perms(self.channel_id, req)? { return Err(Error::Client(ClientError::InvalidPermissions(req))); } - }} + } rest::create_reaction(self.channel_id.0, self.id.0, @@ -679,13 +684,14 @@ impl Message { return Err(Error::Client(ClientError::MessageTooLong(length_over))); } - feature_cache_enabled! {{ + #[cfg(feature="cache")] + { let req = permissions::SEND_MESSAGES; if !utils::user_has_perms(self.channel_id, req)? { return Err(Error::Client(ClientError::InvalidPermissions(req))); } - }} + } let mut gen = self.author.mention(); gen.push_str(": "); @@ -714,13 +720,14 @@ impl Message { /// [Manage Messages]: permissions/constant.MANAGE_MESSAGES.html #[cfg(feature="methods")] pub fn unpin(&self) -> Result<()> { - feature_cache_enabled! {{ + #[cfg(feature="cache")] + { let req = permissions::MANAGE_MESSAGES; if !utils::user_has_perms(self.channel_id, req)? { return Err(Error::Client(ClientError::InvalidPermissions(req))); } - }} + } rest::unpin_message(self.channel_id.0, self.id.0) } @@ -782,11 +789,12 @@ impl PrivateChannel { /// [`ClientError::InvalidUser`]: ../client/enum.ClientError.html#variant.InvalidOperationAsUser #[cfg(feature="methods")] pub fn delete_messages(&self, message_ids: &[MessageId]) -> Result<()> { - feature_cache_enabled! {{ + #[cfg(feature="cache")] + { if !CACHE.read().unwrap().user.bot { return Err(Error::Client(ClientError::InvalidOperationAsUser)); } - }} + } let ids: Vec<u64> = message_ids.into_iter() .map(|message_id| message_id.0) @@ -881,13 +889,14 @@ impl GuildChannel { #[cfg(feature="methods")] pub fn create_invite<F>(&self, f: F) -> Result<RichInvite> where F: FnOnce(CreateInvite) -> CreateInvite { - feature_cache_enabled! {{ + #[cfg(feature="cache")] + { let req = permissions::CREATE_INVITE; if !utils::user_has_perms(self.id, req)? { return Err(Error::Client(ClientError::InvalidPermissions(req))); } - }} + } let map = f(CreateInvite::default()).0.build(); @@ -925,13 +934,14 @@ impl GuildChannel { /// Deletes this channel, returning the channel on a successful deletion. #[cfg(feature="methods")] pub fn delete(&self) -> Result<Channel> { - feature_cache_enabled! {{ + #[cfg(feature="cache")] + { let req = permissions::MANAGE_CHANNELS; if !utils::user_has_perms(self.id, req)? { return Err(Error::Client(ClientError::InvalidPermissions(req))); } - }} + } rest::delete_channel(self.id.0) } @@ -953,13 +963,14 @@ impl GuildChannel { pub fn edit<F>(&mut self, f: F) -> Result<()> where F: FnOnce(EditChannel) -> EditChannel { - feature_cache_enabled! {{ + #[cfg(feature="cache")] + { let req = permissions::MANAGE_CHANNELS; if !utils::user_has_perms(self.id, req)? { return Err(Error::Client(ClientError::InvalidPermissions(req))); } - }} + } let map = ObjectBuilder::new() .insert("name", &self.name) @@ -1017,13 +1028,14 @@ impl GuildChannel { return Err(Error::Client(ClientError::MessageTooLong(length_over))); } - feature_cache_enabled! {{ + #[cfg(feature="cache")] + { let req = permissions::SEND_MESSAGES; if !utils::user_has_perms(self.id, req)? { return Err(Error::Client(ClientError::InvalidPermissions(req))); } - }} + } let map = ObjectBuilder::new() .insert("content", content) diff --git a/src/model/guild.rs b/src/model/guild.rs index aabbb06..ec492d3 100644 --- a/src/model/guild.rs +++ b/src/model/guild.rs @@ -239,13 +239,14 @@ impl Guild { return Err(Error::Client(ClientError::DeleteMessageDaysAmount(delete_message_days))); } - feature_cache_enabled! {{ + #[cfg(feature="cache")] + { let req = permissions::BAN_MEMBERS; if !self.has_perms(req)? { return Err(Error::Client(ClientError::InvalidPermissions(req))); } - }} + } rest::ban_user(self.id.0, user.into().0, delete_message_days) } @@ -264,13 +265,14 @@ impl Guild { /// [Ban Members]: permissions/constant.BAN_MEMBERS.html #[cfg(feature="methods")] pub fn bans(&self) -> Result<Vec<Ban>> { - feature_cache_enabled! {{ + #[cfg(feature="cache")] + { let req = permissions::BAN_MEMBERS; if !self.has_perms(req)? { return Err(Error::Client(ClientError::InvalidPermissions(req))); } - }} + } rest::get_bans(self.id.0) } @@ -300,13 +302,14 @@ impl Guild { #[cfg(feature="methods")] pub fn create_channel(&mut self, name: &str, kind: ChannelType) -> Result<Channel> { - feature_cache_enabled! {{ + #[cfg(feature="cache")] + { let req = permissions::MANAGE_CHANNELS; if !self.has_perms(req)? { return Err(Error::Client(ClientError::InvalidPermissions(req))); } - }} + } let map = ObjectBuilder::new() .insert("name", name) @@ -334,13 +337,14 @@ impl Guild { #[cfg(feature="methods")] pub fn create_role<F>(&self, f: F) -> Result<Role> where F: FnOnce(EditRole) -> EditRole { - feature_cache_enabled! {{ + #[cfg(feature="cache")] + { let req = permissions::MANAGE_ROLES; if !self.has_perms(req)? { return Err(Error::Client(ClientError::InvalidPermissions(req))); } - }} + } let role = rest::create_role(self.id.0)?; let map = f(EditRole::new(&role)).0.build(); @@ -406,13 +410,14 @@ impl Guild { /// [`ClientError::InvalidUser`]: ../client/enum.ClientError.html#variant.InvalidUser #[cfg(feature="methods")] pub fn delete(&self) -> Result<PartialGuild> { - feature_cache_enabled! {{ + #[cfg(feature="cache")] + { if self.owner_id != CACHE.read().unwrap().user.id { let req = permissions::MANAGE_GUILD; return Err(Error::Client(ClientError::InvalidPermissions(req))); } - }} + } rest::delete_guild(self.id.0) } @@ -434,13 +439,14 @@ impl Guild { #[cfg(feature="methods")] pub fn edit<F>(&mut self, f: F) -> Result<()> where F: FnOnce(EditGuild) -> EditGuild { - feature_cache_enabled! {{ + #[cfg(feature="cache")] + { let req = permissions::MANAGE_GUILD; if !self.has_perms(req)? { return Err(Error::Client(ClientError::InvalidPermissions(req))); } - }} + } let map = f(EditGuild::default()).0.build(); @@ -482,13 +488,14 @@ impl Guild { /// [Change Nickname]: permissions/constant.CHANGE_NICKNAME.html #[cfg(feature="methods")] pub fn edit_nickname(&self, new_nickname: Option<&str>) -> Result<()> { - feature_cache_enabled! {{ + #[cfg(feature="cache")] + { let req = permissions::CHANGE_NICKNAME; if !self.has_perms(req)? { return Err(Error::Client(ClientError::InvalidPermissions(req))); } - }} + } rest::edit_nickname(self.id.0, new_nickname) } @@ -514,13 +521,14 @@ impl Guild { /// [Manage Guild]: permissions/constant.MANAGE_GUILD.html #[cfg(feature="methods")] pub fn get_invites(&self) -> Result<Vec<RichInvite>> { - feature_cache_enabled! {{ + #[cfg(feature="cache")] + { let req = permissions::MANAGE_GUILD; if !self.has_perms(req)? { return Err(Error::Client(ClientError::InvalidPermissions(req))); } - }} + } rest::get_guild_invites(self.id.0) } @@ -725,13 +733,14 @@ impl Guild { /// [Kick Members]: permissions/constant.KICK_MEMBERS.html #[cfg(feature="methods")] pub fn prune_count(&self, days: u16) -> Result<GuildPrune> { - feature_cache_enabled! {{ + #[cfg(feature="cache")] + { let req = permissions::KICK_MEMBERS; if !self.has_perms(req)? { return Err(Error::Client(ClientError::InvalidPermissions(req))); } - }} + } let map = ObjectBuilder::new() .insert("days", days) @@ -764,13 +773,14 @@ impl Guild { /// [Kick Members]: permissions/constant.KICK_MEMBERS.html #[cfg(feature="methods")] pub fn start_prune(&self, days: u16) -> Result<GuildPrune> { - feature_cache_enabled! {{ + #[cfg(feature="cache")] + { let req = permissions::KICK_MEMBERS; if !self.has_perms(req)? { return Err(Error::Client(ClientError::InvalidPermissions(req))); } - }} + } let map = ObjectBuilder::new() .insert("days", days) @@ -793,13 +803,14 @@ impl Guild { /// [Ban Members]: permissions/constant.BAN_MEMBERS.html #[cfg(feature="methods")] pub fn unban<U: Into<UserId>>(&self, user: U) -> Result<()> { - feature_cache_enabled! {{ + #[cfg(feature="cache")] + { let req = permissions::BAN_MEMBERS; if !self.has_perms(req)? { return Err(Error::Client(ClientError::InvalidPermissions(req))); } - }} + } rest::remove_ban(self.id.0, user.into().0) } diff --git a/src/model/id.rs b/src/model/id.rs index b6cece6..aec5bfe 100644 --- a/src/model/id.rs +++ b/src/model/id.rs @@ -19,11 +19,12 @@ impl ChannelId { /// requested over REST. #[cfg(feature="methods")] pub fn get(&self) -> Result<Channel> { - feature_cache_enabled! {{ + #[cfg(feature="cache")] + { if let Some(channel) = CACHE.read().unwrap().get_channel(*self) { return Ok(channel.clone_inner()); } - }} + } rest::get_channel(self.0) } diff --git a/src/model/invite.rs b/src/model/invite.rs index 4742b39..0d68ff0 100644 --- a/src/model/invite.rs +++ b/src/model/invite.rs @@ -32,11 +32,12 @@ impl Invite { /// [permission]: permissions/index.html #[cfg(feature="methods")] pub fn accept(&self) -> Result<Invite> { - feature_cache_enabled! {{ + #[cfg(feature="cache")] + { if CACHE.read().unwrap().user.bot { return Err(Error::Client(ClientError::InvalidOperationAsBot)); } - }} + } rest::accept_invite(&self.code) } @@ -55,13 +56,14 @@ impl Invite { /// [permission]: permissions/index.html #[cfg(feature="methods")] pub fn delete(&self) -> Result<Invite> { - feature_cache_enabled! {{ + #[cfg(feature="cache")] + { let req = permissions::MANAGE_GUILD; if !utils::user_has_perms(self.channel.id, req)? { return Err(Error::Client(ClientError::InvalidPermissions(req))); } - }} + } rest::delete_invite(&self.code) } @@ -89,11 +91,12 @@ impl RichInvite { /// [`rest::accept_invite`]: ../client/rest/fn.accept_invite.html #[cfg(feature="methods")] pub fn accept(&self) -> Result<Invite> { - feature_cache_enabled! {{ + #[cfg(feature="cache")] + { if CACHE.read().unwrap().user.bot { return Err(Error::Client(ClientError::InvalidOperationAsBot)); } - }} + } rest::accept_invite(&self.code) } @@ -117,13 +120,14 @@ impl RichInvite { /// [permission]: permissions/index.html #[cfg(feature="methods")] pub fn delete(&self) -> Result<Invite> { - feature_cache_enabled! {{ + #[cfg(feature="cache")] + { let req = permissions::MANAGE_GUILD; if !utils::user_has_perms(self.channel.id, req)? { return Err(Error::Client(ClientError::InvalidPermissions(req))); } - }} + } rest::delete_invite(&self.code) } diff --git a/src/utils/macros.rs b/src/utils/macros.rs index 2f2ebdf..51e016d 100644 --- a/src/utils/macros.rs +++ b/src/utils/macros.rs @@ -62,34 +62,6 @@ macro_rules! feature_cache { } } -#[cfg(feature="cache")] -macro_rules! feature_cache_enabled { - ($enabled:block) => { - { - $enabled - } - } -} - -#[cfg(not(feature="cache"))] -macro_rules! feature_cache_enabled { - ($enabled:block) => {{}} -} - -#[cfg(feature="cache")] -macro_rules! feature_cache_disabled { - ($disabled:block) => {{}} -} - -#[cfg(not(feature="cache"))] -macro_rules! feature_cache_disabled { - ($disabled:block) => { - { - $disabled - } - } -} - // Enable/disable check for framework #[cfg(feature="framework")] macro_rules! feature_framework { @@ -109,34 +81,6 @@ macro_rules! feature_framework { } } -#[cfg(feature="framework")] -macro_rules! feature_framework_enabled { - ($enabled:block) => { - { - $enabled - } - } -} - -#[cfg(not(feature="framework"))] -macro_rules! feature_framework_enabled { - ($enabled:block) => {{}} -} - -#[cfg(feature="framework")] -macro_rules! feature_framework_disabled { - ($disabled:block) => {{}} -} - -#[cfg(not(feature="framework"))] -macro_rules! feature_framework_disabled { - ($disabled:block) => { - { - $disabled - } - } -} - // Enable/disable check for methods #[cfg(feature="methods")] macro_rules! feature_methods { @@ -156,34 +100,6 @@ macro_rules! feature_methods { } } -#[cfg(feature="methods")] -macro_rules! feature_methods_enabled { - ($enabled:block) => { - { - $enabled - } - } -} - -#[cfg(not(feature="methods"))] -macro_rules! feature_methods_enabled { - ($enabled:block) => {{}} -} - -#[cfg(feature="methods")] -macro_rules! feature_methods_disabled { - ($disabled:block) => {{}} -} - -#[cfg(not(feature="methods"))] -macro_rules! feature_methods_disabled { - ($disabled:block) => { - { - $disabled - } - } -} - // Enable/disable check for voice #[cfg(feature="voice")] macro_rules! feature_voice { @@ -202,31 +118,3 @@ macro_rules! feature_voice { } } } - -#[cfg(feature="voice")] -macro_rules! feature_voice_enabled { - ($enabled:block) => { - { - $enabled - } - } -} - -#[cfg(not(feature="voice"))] -macro_rules! feature_voice_enabled { - ($enabled:block) => {{}} -} - -#[cfg(feature="voice")] -macro_rules! feature_voice_disabled { - ($disabled:block) => {{}} -} - -#[cfg(not(feature="voice"))] -macro_rules! feature_voice_disabled { - ($disabled:block) => { - { - $disabled - } - } -} |