use serde_json; use super::{kind::FlagType, properties::ActivityProperties, Activity}; use base::Base; use error::{Error, Result}; use link::Link; use object::{Object, ObjectProperties}; #[derive(Clone, Debug, Deserialize, Serialize)] #[serde(rename_all = "camelCase")] pub struct Flag { #[serde(rename = "type")] kind: FlagType, actor: serde_json::Value, object: serde_json::Value, #[serde(flatten)] pub object_props: ObjectProperties, #[serde(flatten)] pub activity_props: ActivityProperties, } impl Flag { pub fn actor(&self) -> Result { serde_json::from_value(self.actor.clone()).map_err(|_| Error::Deserialize) } pub fn actors(&self) -> Result> { serde_json::from_value(self.actor.clone()).map_err(|_| Error::Deserialize) } pub fn actor_link(&self) -> Result { serde_json::from_value(self.actor.clone()).map_err(|_| Error::Deserialize) } pub fn actor_links(&self) -> Result> { serde_json::from_value(self.actor.clone()).map_err(|_| Error::Deserialize) } pub fn object(&self) -> Result { serde_json::from_value(self.object.clone()).map_err(|_| Error::Deserialize) } pub fn objects(&self) -> Result> { serde_json::from_value(self.object.clone()).map_err(|_| Error::Deserialize) } } impl Base for Flag {} impl Object for Flag {} impl Activity for Flag {}