use serde_json; use super::{kind::LeaveType, 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 Leave { #[serde(rename = "type")] kind: LeaveType, actor: serde_json::Value, object: serde_json::Value, #[serde(flatten)] pub object_props: ObjectProperties, #[serde(flatten)] pub activity_props: ActivityProperties, } impl Leave { 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 Leave {} impl Object for Leave {} impl Activity for Leave {}