magnetar/ext_activity_pub/src/object/object_types.rs

132 lines
4.4 KiB
Rust

use crate::link::Link;
use crate::object::{Object, RefObject, RefObjectLinkUnion};
use crate::{def_ld, ld_document, ld_union, Id, ObjectRaw, ObjectSingle, OneOrMore};
use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, Serialize, Deserialize)]
pub struct ObjectRelationship {
#[serde(rename = "https://www.w3.org/ns/activitystreams#object")]
#[serde(skip_serializing_if = "Option::is_none")]
pub object: Option<OneOrMore<RefObjectLinkUnion>>,
#[serde(rename = "https://www.w3.org/ns/activitystreams#subject")]
#[serde(skip_serializing_if = "Option::is_none")]
pub subject: Option<RefObjectLinkUnion>,
#[serde(rename = "https://www.w3.org/ns/activitystreams#relationship")]
#[serde(skip_serializing_if = "Option::is_none")]
pub relationship: Option<OneOrMore<RefObject>>,
}
def_ld!("Relationship", ObjectRelationship, base as Object);
ld_document!(RefObjectRelationship, ObjectRelationship);
#[derive(Clone, Default, Debug, Serialize, Deserialize)]
pub struct ObjectArticle;
def_ld!("Article", ObjectArticle, base as Object);
ld_document!(RefObjectArticle, ObjectArticle);
#[derive(Clone, Default, Debug, Serialize, Deserialize)]
pub struct ObjectDocument;
def_ld!("Document", ObjectDocument, base as Object);
ld_document!(RefObjectDocument, ObjectDocument);
#[derive(Clone, Default, Debug, Serialize, Deserialize)]
pub struct ObjectAudio;
def_ld!("Audio", ObjectAudio, base as ObjectDocument);
ld_document!(RefObjectAudio, ObjectAudio);
#[derive(Clone, Default, Debug, Serialize, Deserialize)]
pub struct ObjectImage;
def_ld!("Image", ObjectImage, base as ObjectDocument);
ld_document!(RefObjectImage, ObjectImage);
ld_union!(
RefObjectImageLinkUnion,
ObjectImageLinkUnion,
image_props as ObjectImage,
link_props as Link
);
#[derive(Clone, Default, Debug, Serialize, Deserialize)]
pub struct ObjectVideo;
def_ld!("Video", ObjectVideo, base as ObjectDocument);
ld_document!(RefObjectVideo, ObjectVideo);
#[derive(Clone, Default, Debug, Serialize, Deserialize)]
pub struct ObjectNote;
def_ld!("Note", ObjectNote, base as Object);
ld_document!(RefObjectNote, ObjectNote);
#[derive(Clone, Default, Debug, Serialize, Deserialize)]
pub struct ObjectPage;
def_ld!("Page", ObjectPage, base as ObjectDocument);
ld_document!(RefObjectPage, ObjectPage);
#[derive(Clone, Default, Debug, Serialize, Deserialize)]
pub struct ObjectEvent;
def_ld!("Event", ObjectEvent, base as Object);
ld_document!(RefObjectEvent, ObjectEvent);
#[derive(Clone, Default, Debug, Serialize, Deserialize)]
pub struct ObjectPlace {
#[serde(rename = "https://www.w3.org/ns/activitystreams#accuracy")]
#[serde(skip_serializing_if = "Option::is_none")]
pub accuracy: Option<f64>,
#[serde(rename = "https://www.w3.org/ns/activitystreams#altitude")]
#[serde(skip_serializing_if = "Option::is_none")]
pub altitude: Option<f64>,
#[serde(rename = "https://www.w3.org/ns/activitystreams#latitude")]
#[serde(skip_serializing_if = "Option::is_none")]
pub latitude: Option<f64>,
#[serde(rename = "https://www.w3.org/ns/activitystreams#longitude")]
#[serde(skip_serializing_if = "Option::is_none")]
pub longitude: Option<f64>,
#[serde(rename = "https://www.w3.org/ns/activitystreams#radius")]
#[serde(skip_serializing_if = "Option::is_none")]
pub radius: Option<f64>,
#[serde(rename = "https://www.w3.org/ns/activitystreams#units")]
#[serde(skip_serializing_if = "Option::is_none")]
pub units: Option<String>,
}
def_ld!("Place", ObjectPlace, base as Object);
ld_document!(RefObjectPlace, ObjectPlace);
#[derive(Clone, Default, Debug, Serialize, Deserialize)]
pub struct ObjectProfile {
#[serde(rename = "https://www.w3.org/ns/activitystreams#describes")]
#[serde(skip_serializing_if = "Option::is_none")]
pub describes: Option<RefObject>,
}
def_ld!("Profile", ObjectProfile, base as Object);
ld_document!(RefObjectProfile, ObjectProfile);
#[derive(Clone, Default, Debug, Serialize, Deserialize)]
pub struct ObjectTombstone {
#[serde(rename = "https://www.w3.org/ns/activitystreams#formerType")]
#[serde(skip_serializing_if = "Option::is_none")]
pub former_type: Option<OneOrMore<String>>,
#[serde(rename = "https://www.w3.org/ns/activitystreams#deleted")]
#[serde(skip_serializing_if = "Option::is_none")]
pub deleted: Option<DateTime<Utc>>,
}
def_ld!("Tombstone", ObjectTombstone, base as Object);
ld_document!(RefObjectTombstone, ObjectTombstone);