aboutsummaryrefslogtreecommitdiff
path: root/src/model/channel/reaction.rs
diff options
context:
space:
mode:
authorZeyla Hellyer <[email protected]>2018-01-01 15:55:46 -0800
committerZeyla Hellyer <[email protected]>2018-01-01 15:55:46 -0800
commit25dddb6695109eeead9e19593cb85a22096c2c7a (patch)
treed68d78d210a2804d10027035163871bf806c7e23 /src/model/channel/reaction.rs
parentGive hyper Response in HTTP errors (diff)
downloadserenity-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.rs27
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