132 lines
4.4 KiB
Rust
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);
|