use crate::complex::properties as props;
use crate::complex::properties::*;
use rustpub_macro::activitypub_complex;
activitypub_complex! {
base_traits {
ObjectBaseTrait,
LinkBaseTrait,
}
group_traits {
ActivityTrait: ObjectBaseTrait,
ActorTrait: ObjectBaseTrait,
ObjectTrait: ObjectBaseTrait,
LinkTrait: LinkBaseTrait,
}
ActivityTrait {
Accept extend Activity {},
Add extend Activity {},
Announce extend Activity {},
Arrive extend IntransitiveActivity {},
Block extend Ignore {},
Create extend Activity {},
Delete extend Activity {},
Dislike extend Activity {},
Flag extend Activity {},
Follow extend Activity {},
Ignore extend Activity {},
Invite extend Offer {},
Join extend Activity {},
Leave extend Activity {},
Like extend Activity {},
Listen extend Activity {},
Move extend Activity {},
Offer extend Activity {},
Question extend IntransitiveActivity {
one_of: OneOf,
any_of: AnyOf,
closed: Closed,
},
Reject extend Activity {},
Read extend Activity {},
Remove extend Activity {},
TentativeAccept extend Activity {},
TentativeReject extend Reject {},
Travel extend IntransitiveActivity {},
Undo extend Activity {},
Update extend Activity {},
View extend Activity {},
},
ActorTrait {
Application extend Object {},
Group extend Object {},
Organization extend Object {},
Person extend Object {},
Service extend Object {},
},
ObjectTrait {
Object {
id: Id,
kind: Kind,
attachment: Attachment,
attributed_to: AttributedTo,
audience: Audience,
content: Content,
context: Context,
name: Name,
end_time: EndTime,
generator: Generator,
icon: Icon,
image: props::Image,
in_reply_to: InReplyTo,
location: Location,
preview: Preview,
published: Published,
replies: Replies,
start_time: StartTime,
summary: Summary,
tag: Tag,
updated: Updated,
url: Url,
to: To,
bto: BTo,
cc: CC,
bcc: BCC,
media_type: MediaType,
duration: Duration,
},
Activity extend Object {
actor: props::Actor,
object: props::Object,
target: Target,
result: props::Result,
origin: Origin,
instrument: Instrument,
},
IntransitiveActivity extend Object {
actor: props::Actor,
target: Target,
result: props::Result,
origin: Origin,
instrument: Instrument,
},
Collection extend Object {
total_items: TotalItems,
current: Current,
first: First,
last: Last,
items: Items,
},
OrderedCollection extend Collection {},
CollectionPage extend Collection {
part_of: PartOf,
next: Next,
prev: Prev,
},
OrderedCollectionPage extend CollectionPage {
start_index: StartIndex,
},
Article extend Object {},
Audio extend Document {},
Document extend Object {},
Event extend Object {},
Image extend Document {},
Note extend Object {},
Page extend Document {},
Place extend Object {
accuracy: Accuracy,
altitude: Altitude,
latitude: Latitude,
longitude: Longitude,
radius: Radius,
units: Units,
},
Profile extend Object {
describes: Describes,
},
Relationship extend Object {
subject: Subject,
object: props::Object,
relationship: props::Relationship,
},
Tombstone extend Object {
former_type: FormerType,
deleted: Deleted,
},
Video extend Document {},
},
LinkTrait {
Link {
kind: Kind,
href: Href,
rel: Rel,
media_type: MediaType,
name: Name,
href_lang: HrefLang,
heigh: Height,
width: Width,
preview: Preview,
},
Mention extend Link {},
},
}