use activitystreams_traits::Object;
pub mod kind;
pub mod properties;
use self::kind::*;
use self::properties::*;
pub trait ObjectExt: Object {
fn props(&self) -> &ObjectProperties;
fn props_mut(&mut self) -> &mut ObjectProperties;
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct Article {
#[serde(rename = "type")]
kind: ArticleType,
#[serde(flatten)]
pub object_props: ObjectProperties,
}
impl Object for Article {}
impl ObjectExt for Article {
fn props(&self) -> &ObjectProperties {
&self.object_props
}
fn props_mut(&mut self) -> &mut ObjectProperties {
&mut self.object_props
}
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct Audio {
#[serde(rename = "type")]
kind: AudioType,
#[serde(flatten)]
pub object_props: ObjectProperties,
}
impl Object for Audio {}
impl ObjectExt for Audio {
fn props(&self) -> &ObjectProperties {
&self.object_props
}
fn props_mut(&mut self) -> &mut ObjectProperties {
&mut self.object_props
}
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct Document {
#[serde(rename = "type")]
kind: DocumentType,
#[serde(flatten)]
pub object_props: ObjectProperties,
}
impl Object for Document {}
impl ObjectExt for Document {
fn props(&self) -> &ObjectProperties {
&self.object_props
}
fn props_mut(&mut self) -> &mut ObjectProperties {
&mut self.object_props
}
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct Event {
#[serde(rename = "type")]
kind: EventType,
#[serde(flatten)]
pub object_props: ObjectProperties,
}
impl Object for Event {}
impl ObjectExt for Event {
fn props(&self) -> &ObjectProperties {
&self.object_props
}
fn props_mut(&mut self) -> &mut ObjectProperties {
&mut self.object_props
}
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct Image {
#[serde(rename = "type")]
kind: ImageType,
#[serde(flatten)]
pub object_props: ObjectProperties,
}
impl Object for Image {}
impl ObjectExt for Image {
fn props(&self) -> &ObjectProperties {
&self.object_props
}
fn props_mut(&mut self) -> &mut ObjectProperties {
&mut self.object_props
}
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct Note {
#[serde(rename = "type")]
kind: NoteType,
#[serde(flatten)]
pub object_props: ObjectProperties,
}
impl Object for Note {}
impl ObjectExt for Note {
fn props(&self) -> &ObjectProperties {
&self.object_props
}
fn props_mut(&mut self) -> &mut ObjectProperties {
&mut self.object_props
}
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct Page {
#[serde(rename = "type")]
kind: PageType,
#[serde(flatten)]
pub object_props: ObjectProperties,
}
impl Object for Page {}
impl ObjectExt for Page {
fn props(&self) -> &ObjectProperties {
&self.object_props
}
fn props_mut(&mut self) -> &mut ObjectProperties {
&mut self.object_props
}
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct Place {
#[serde(rename = "type")]
kind: PlaceType,
#[serde(flatten)]
pub object_props: ObjectProperties,
#[serde(flatten)]
pub place: PlaceProperties,
}
impl Object for Place {}
impl ObjectExt for Place {
fn props(&self) -> &ObjectProperties {
&self.object_props
}
fn props_mut(&mut self) -> &mut ObjectProperties {
&mut self.object_props
}
}
#[derive(Clone, Debug, Default, Deserialize, Serialize, Properties)]
#[serde(rename_all = "camelCase")]
pub struct Profile {
#[serde(rename = "type")]
kind: ProfileType,
#[serde(flatten)]
pub object_props: ObjectProperties,
#[serde(flatten)]
pub profile: ProfileProperties,
}
impl Object for Profile {}
impl ObjectExt for Profile {
fn props(&self) -> &ObjectProperties {
&self.object_props
}
fn props_mut(&mut self) -> &mut ObjectProperties {
&mut self.object_props
}
}
#[derive(Clone, Debug, Default, Deserialize, Serialize, Properties)]
#[serde(rename_all = "camelCase")]
pub struct Relationship {
#[serde(rename = "type")]
kind: RelationshipType,
#[serde(flatten)]
pub object_props: ObjectProperties,
#[serde(flatten)]
pub relationship: RelationshipProperties,
}
impl Object for Relationship {}
impl ObjectExt for Relationship {
fn props(&self) -> &ObjectProperties {
&self.object_props
}
fn props_mut(&mut self) -> &mut ObjectProperties {
&mut self.object_props
}
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct Tombstone {
#[serde(rename = "type")]
kind: TombstoneType,
#[serde(flatten)]
pub object_props: ObjectProperties,
#[serde(flatten)]
pub tombstone_props: TombstoneProperties,
}
impl Object for Tombstone {}
impl ObjectExt for Tombstone {
fn props(&self) -> &ObjectProperties {
&self.object_props
}
fn props_mut(&mut self) -> &mut ObjectProperties {
&mut self.object_props
}
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct Video {
#[serde(rename = "type")]
kind: VideoType,
#[serde(flatten)]
pub object_props: ObjectProperties,
}
impl Object for Video {}
impl ObjectExt for Video {
fn props(&self) -> &ObjectProperties {
&self.object_props
}
fn props_mut(&mut self) -> &mut ObjectProperties {
&mut self.object_props
}
}