diff options
| author | Zeyla Hellyer <[email protected]> | 2018-01-01 15:55:46 -0800 |
|---|---|---|
| committer | Zeyla Hellyer <[email protected]> | 2018-01-01 15:55:46 -0800 |
| commit | 25dddb6695109eeead9e19593cb85a22096c2c7a (patch) | |
| tree | d68d78d210a2804d10027035163871bf806c7e23 /src/model/channel/reaction.rs | |
| parent | Give hyper Response in HTTP errors (diff) | |
| download | serenity-25dddb6695109eeead9e19593cb85a22096c2c7a.tar.xz serenity-25dddb6695109eeead9e19593cb85a22096c2c7a.zip | |
Implement or derive Serialize on all models
Diffstat (limited to 'src/model/channel/reaction.rs')
| -rw-r--r-- | src/model/channel/reaction.rs | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/src/model/channel/reaction.rs b/src/model/channel/reaction.rs index 0741cd7..42c3578 100644 --- a/src/model/channel/reaction.rs +++ b/src/model/channel/reaction.rs @@ -1,5 +1,6 @@ use model::prelude::*; use serde::de::{Deserialize, Error as DeError, MapAccess, Visitor}; +use serde::ser::{SerializeMap, Serialize, Serializer}; use std::error::Error as StdError; use std::fmt::{Display, Formatter, Result as FmtResult, Write as FmtWrite}; use std::str::FromStr; @@ -11,7 +12,7 @@ use CACHE; use http; /// An emoji reaction to a message. -#[derive(Clone, Debug, Deserialize)] +#[derive(Clone, Debug, Deserialize, Serialize)] pub struct Reaction { /// The [`Channel`] of the associated [`Message`]. /// @@ -255,6 +256,30 @@ impl<'de> Deserialize<'de> for ReactionType { } } +impl Serialize for ReactionType { + fn serialize<S>(&self, serializer: S) -> StdResult<S::Ok, S::Error> + where S: Serializer { + match *self { + ReactionType::Custom { animated, id, ref name } => { + let mut map = serializer.serialize_map(Some(3))?; + + map.serialize_entry("animated", &animated)?; + map.serialize_entry("id", &id.0)?; + map.serialize_entry("name", &name)?; + + map.end() + }, + ReactionType::Unicode(ref name) => { + let mut map = serializer.serialize_map(Some(1))?; + + map.serialize_entry("name", &name)?; + + map.end() + }, + } + } +} + #[cfg(any(feature = "model", feature = "http"))] impl ReactionType { /// Creates a data-esque display of the type. This is not very useful for |