Skip to content

Commit

Permalink
Correctly set gateway to v8 and fix Permission deserialisation (#1064)
Browse files Browse the repository at this point in the history
  • Loading branch information
FelixMcFelix committed Nov 7, 2020
1 parent 49be2ab commit b1bcc67
Show file tree
Hide file tree
Showing 13 changed files with 26 additions and 26 deletions.
2 changes: 1 addition & 1 deletion src/constants.rs
Expand Up @@ -4,7 +4,7 @@
pub const EMBED_MAX_LENGTH: u16 = 6000;
/// The gateway version used by the library. The gateway URI is retrieved via
/// the REST API.
pub const GATEWAY_VERSION: u8 = 6;
pub const GATEWAY_VERSION: u8 = 8;
/// The large threshold to send on identify.
pub const LARGE_THRESHOLD: u8 = 250;
/// The maximum unicode code points allowed within a message by Discord.
Expand Down
4 changes: 2 additions & 2 deletions src/model/channel/mod.rs
Expand Up @@ -399,8 +399,8 @@ impl Serialize for PermissionOverwrite {
};

let mut state = serializer.serialize_struct("PermissionOverwrite", 4)?;
state.serialize_field("allow", &self.allow.bits())?;
state.serialize_field("deny", &self.deny.bits())?;
state.serialize_field("allow", &self.allow)?;
state.serialize_field("deny", &self.deny)?;
state.serialize_field("id", &id)?;
state.serialize_field("type", &kind)?;

Expand Down
8 changes: 4 additions & 4 deletions src/model/permissions.rs
Expand Up @@ -44,9 +44,8 @@
//! [Manage Roles]: struct.Permissions.html#associatedconstant.MANAGE_ROLES
//! [Manage Webhooks]: struct.Permissions.html#associatedconstant.MANAGE_WEBHOOKS

use serde::de::{Deserialize, Deserializer};
use serde::de::{Deserialize, Deserializer, Error as DeError};
use serde::ser::{Serialize, Serializer};
use super::utils::U64Visitor;
use bitflags::__impl_bitflags;
use std::fmt::{Display, Formatter, Result as FmtResult};

Expand Down Expand Up @@ -555,16 +554,17 @@ impl Default for Permissions {

impl<'de> Deserialize<'de> for Permissions {
fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
let str_u64 = String::deserialize(deserializer)?;
Ok(Permissions::from_bits_truncate(
deserializer.deserialize_u64(U64Visitor)?,
str_u64.parse::<u64>().map_err(D::Error::custom)?,
))
}
}

impl Serialize for Permissions {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where S: Serializer {
serializer.serialize_u64(self.bits())
serializer.collect_str(&self.bits())
}
}

Expand Down
2 changes: 1 addition & 1 deletion tests/resources/channel_update_1.json
@@ -1 +1 @@
{"guild_id":"244567637332328449","id":"244567637332328449","last_message_id":"302895520328974347","last_pin_timestamp":"2017-02-08T06:07:28.882000+00:00","name":"general","permission_overwrites":[{"allow":0,"deny":8192,"id":"136107769680887808","type":1},{"allow":0,"deny":0,"id":"244567637332328449","type":0},{"allow":0,"deny":0,"id":"249608697955745802","type":1},{"allow":10240,"deny":0,"id":"245571012924538880","type":1},{"allow":8192,"deny":0,"id":"272502210401665025","type":1}],"position":1,"topic":"b","type":0}
{"guild_id":"244567637332328449","id":"244567637332328449","last_message_id":"302895520328974347","last_pin_timestamp":"2017-02-08T06:07:28.882000+00:00","name":"general","permission_overwrites":[{"allow":"0","deny":"8192","id":"136107769680887808","type":1},{"allow":"0","deny":"0","id":"244567637332328449","type":0},{"allow":"0","deny":"0","id":"249608697955745802","type":1},{"allow":"10240","deny":"0","id":"245571012924538880","type":1},{"allow":"8192","deny":"0","id":"272502210401665025","type":1}],"position":1,"topic":"b","type":0}
20 changes: 10 additions & 10 deletions tests/resources/guild_-1_role_position.json
Expand Up @@ -7,7 +7,7 @@
"roles": [
{
"position": -1,
"permissions": 37215297,
"permissions": "37215297",
"name": "@everyone",
"mentionable": false,
"managed": false,
Expand All @@ -17,7 +17,7 @@
},
{
"position": 1,
"permissions": 66583679,
"permissions": "66583679",
"name": "role",
"mentionable": false,
"managed": false,
Expand All @@ -27,7 +27,7 @@
},
{
"position": 2,
"permissions": 536345727,
"permissions": "536345727",
"name": "role 2",
"mentionable": false,
"managed": false,
Expand All @@ -37,7 +37,7 @@
},
{
"position": 3,
"permissions": 66583679,
"permissions": "66583679",
"name": "role 3",
"mentionable": false,
"managed": false,
Expand All @@ -47,7 +47,7 @@
},
{
"position": 1,
"permissions": 37215297,
"permissions": "37215297",
"name": "aaaaaa",
"mentionable": true,
"managed": false,
Expand All @@ -57,7 +57,7 @@
},
{
"position": 1,
"permissions": 35840,
"permissions": "35840",
"name": "aaaabsadfasda",
"mentionable": false,
"managed": true,
Expand Down Expand Up @@ -213,8 +213,8 @@
{
"type": 0,
"id": "123131231321",
"deny": 0,
"allow": 0
"deny": "0",
"allow": "0"
}
],
"name": "asdadsa",
Expand All @@ -238,8 +238,8 @@
{
"type": 0,
"id": "23423432423",
"deny": 2097152,
"allow": 0
"deny": "2097152",
"allow": "0"
}
],
"name": "AFK",
Expand Down
2 changes: 1 addition & 1 deletion tests/resources/guild_channel_rest_1.json
@@ -1 +1 @@
{"guild_id":"81384788765712384","name":"general","permission_overwrites":[{"deny":0,"type":1,"id":"80528701850124288","allow":18432},{"deny":0,"type":0,"id":"81384788765712384","allow":0},{"deny":2048,"type":1,"id":"163801294002323458","allow":0},{"deny":2048,"type":0,"id":"257017090932867072","allow":0},{"deny":0,"type":0,"id":"103548914652696576","allow":2048},{"deny":2048,"type":0,"id":"270610430060265472","allow":0},{"deny":0,"type":0,"id":"81793792671232000","allow":49152},{"deny":0,"type":1,"id":"294555251065880588","allow":2048},{"deny":262208,"type":0,"id":"242282209153646592","allow":0},{"deny":49152,"type":0,"id":"254077236989132800","allow":0},{"deny":2048,"type":0,"id":"178558252869484544","allow":0},{"deny":0,"type":1,"id":"127296623779774464","allow":2048}],"last_pin_timestamp":"2017-03-20T21:39:20.491000+00:00","topic":"Welcome! Check <#120705758286315522> for server rules, <#268880079700885504> for an FAQ and <#82648417347571712> for library details.","position":4,"last_message_id":"301866561843625996","type":0,"id":"81384788765712384"}
{"guild_id":"81384788765712384","name":"general","permission_overwrites":[{"deny":"0","type":1,"id":"80528701850124288","allow":"18432"},{"deny":"0","type":0,"id":"81384788765712384","allow":"0"},{"deny":"2048","type":1,"id":"163801294002323458","allow":"0"},{"deny":"2048","type":0,"id":"257017090932867072","allow":"0"},{"deny":"0","type":0,"id":"103548914652696576","allow":"2048"},{"deny":"2048","type":0,"id":"270610430060265472","allow":"0"},{"deny":"0","type":0,"id":"81793792671232000","allow":"49152"},{"deny":"0","type":1,"id":"294555251065880588","allow":"2048"},{"deny":"262208","type":0,"id":"242282209153646592","allow":"0"},{"deny":"49152","type":0,"id":"254077236989132800","allow":"0"},{"deny":"2048","type":0,"id":"178558252869484544","allow":"0"},{"deny":"0","type":1,"id":"127296623779774464","allow":"2048"}],"last_pin_timestamp":"2017-03-20T21:39:20.491000+00:00","topic":"Welcome! Check <#120705758286315522> for server rules, <#268880079700885504> for an FAQ and <#82648417347571712> for library details.","position":4,"last_message_id":"301866561843625996","type":0,"id":"81384788765712384"}
2 changes: 1 addition & 1 deletion tests/resources/guild_create_1.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion tests/resources/guild_delete_1.json
@@ -1 +1 @@
{"widget_enabled":false,"widget_channel_id":null,"verification_level":0,"splash":null,"roles":[{"position":0,"permissions":104324161,"name":"@everyone","mentionable":false,"managed":false,"id":"302927888062218240","hoist":false,"color":0}],"region":"us-west","owner_id":"114941315417899012","name":"aa","mfa_level":0,"id":"302927888062218240","icon":null,"features":[],"explicit_content_filter":0,"emojis":[],"embed_enabled":false,"embed_channel_id":null,"default_message_notifications":0,"application_id":null,"afk_timeout":300,"afk_channel_id":null, "description": "Hmmmmmmmmm", "premium_tier": 0, "premium_subscription_count": 0, "banner": null}
{"widget_enabled":false,"widget_channel_id":null,"verification_level":0,"splash":null,"roles":[{"position":0,"permissions":"104324161","name":"@everyone","mentionable":false,"managed":false,"id":"302927888062218240","hoist":false,"color":0}],"region":"us-west","owner_id":"114941315417899012","name":"aa","mfa_level":0,"id":"302927888062218240","icon":null,"features":[],"explicit_content_filter":0,"emojis":[],"embed_enabled":false,"embed_channel_id":null,"default_message_notifications":0,"application_id":null,"afk_timeout":300,"afk_channel_id":null, "description": "Hmmmmmmmmm", "premium_tier": 0, "premium_subscription_count": 0, "banner": null}
2 changes: 1 addition & 1 deletion tests/resources/guild_role_create_1.json
@@ -1 +1 @@
{"guild_id":"244567637332328449","role":{"color":0,"hoist":false,"id":"302929192750940160","managed":false,"mentionable":false,"name":"new role","permissions":104324161,"position":1}}
{"guild_id":"244567637332328449","role":{"color":0,"hoist":false,"id":"302929192750940160","managed":false,"mentionable":false,"name":"new role","permissions":"104324161","position":1}}
2 changes: 1 addition & 1 deletion tests/resources/guild_role_update_1.json
@@ -1 +1 @@
{"guild_id":"244567637332328449","role":{"color":0,"hoist":false,"id":"302929192750940160","managed":false,"mentionable":false,"name":"aaaa","permissions":104324161,"position":1}}
{"guild_id":"244567637332328449","role":{"color":0,"hoist":false,"id":"302929192750940160","managed":false,"mentionable":false,"name":"aaaa","permissions":"104324161","position":1}}
2 changes: 1 addition & 1 deletion tests/resources/guild_some_application_id.json
@@ -1 +1 @@
{"afk_channel_id":null,"afk_timeout":300,"application_id":"245571012924538880","channels":[{"guild_id":334866293213888514,"id":"334866293213888514","last_message_id":"334866823763722242","name":"general","permission_overwrites":[],"position":0,"topic":null,"type":0},{"bitrate":64000,"guild_id":334866293213888514,"id":"334866293213888515","name":"General","permission_overwrites":[],"position":0,"type":2,"user_limit":0}],"default_message_notifications":0,"emojis":[],"explicit_content_filter":0,"features":[],"icon":null,"id":"334866293213888514","joined_at":"2017-07-13T01:19:05.876000+00:00","large":false,"member_count":1,"members":[{"deaf":false,"guild_id":334866293213888514,"joined_at":"2017-07-13T01:19:05.876000+00:00","mute":false,"roles":[],"user":{"avatar":"96fd89e899fbb203b9851df3e7dcbf5d","bot":true,"discriminator":"9653","id":"245571012924538880","username":"nano"}}],"mfa_level":0,"name":"helo","owner_id":"245571012924538880","presences":[{"game":{"name":"nano help [1/1]","type":0},"status":"online","user":{"id":"245571012924538880"}}],"region":"eu-central","roles":[{"color":0,"hoist":false,"id":"334866293213888514","managed":false,"mentionable":false,"name":"@everyone","permissions":104324161,"position":0}],"splash":null,"system_channel_id":null,"verification_level":0,"voice_states":[], "description": "Hmmmmmmmmm", "premium_tier": 0, "premium_subscription_count": 0, "banner": null, "preferred_locale": "en-US"}
{"afk_channel_id":null,"afk_timeout":300,"application_id":"245571012924538880","channels":[{"guild_id":334866293213888514,"id":"334866293213888514","last_message_id":"334866823763722242","name":"general","permission_overwrites":[],"position":0,"topic":null,"type":0},{"bitrate":64000,"guild_id":334866293213888514,"id":"334866293213888515","name":"General","permission_overwrites":[],"position":0,"type":2,"user_limit":0}],"default_message_notifications":0,"emojis":[],"explicit_content_filter":0,"features":[],"icon":null,"id":"334866293213888514","joined_at":"2017-07-13T01:19:05.876000+00:00","large":false,"member_count":1,"members":[{"deaf":false,"guild_id":334866293213888514,"joined_at":"2017-07-13T01:19:05.876000+00:00","mute":false,"roles":[],"user":{"avatar":"96fd89e899fbb203b9851df3e7dcbf5d","bot":true,"discriminator":"9653","id":"245571012924538880","username":"nano"}}],"mfa_level":0,"name":"helo","owner_id":"245571012924538880","presences":[{"game":{"name":"nano help [1/1]","type":0},"status":"online","user":{"id":"245571012924538880"}}],"region":"eu-central","roles":[{"color":0,"hoist":false,"id":"334866293213888514","managed":false,"mentionable":false,"name":"@everyone","permissions":"104324161","position":0}],"splash":null,"system_channel_id":null,"verification_level":0,"voice_states":[], "description": "Hmmmmmmmmm", "premium_tier": 0, "premium_subscription_count": 0, "banner": null, "preferred_locale": "en-US"}
2 changes: 1 addition & 1 deletion tests/resources/guild_update_1.json
Expand Up @@ -30,7 +30,7 @@
"managed": false,
"mentionable": true,
"name": "a people",
"permissions": 104324161,
"permissions": "104324161",
"position": 12
}
],
Expand Down
2 changes: 1 addition & 1 deletion tests/resources/role_-1_position.json
@@ -1,6 +1,6 @@
{
"position": -1,
"permissions": 37215297,
"permissions": "37215297",
"name": "@everyone",
"mentionable": false,
"managed": false,
Expand Down

0 comments on commit b1bcc67

Please sign in to comment.