1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
use crate::complex::properties as props;
use crate::complex::properties::*;

use rustpub_macro::activitypub_complex;

// NOTE: any aliases or renames not yet added
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 {},
    },
}