rustpub 0.1.8

An implementation of the Activitypub types
Documentation
use std::collections::HashMap;

use rustpub_macro::complex_property;

use crate::complex::core;
use crate::complex::core::*;

pub trait ActivitypubProperty {
    fn is_none(&self) -> bool;
    fn is_some(&self) -> bool;
}

//pub fn context() -> Context {
//    Context::link(Box::new(
//        LinkBuilder::default()
//            .href(Href::string("https://www.w3.org/ns/activitystreams".into()))
//            .build()
//            .unwrap(),
//    ))
//}

complex_property! {functional Id { string: String }}
complex_property! {functional Kind { string: String }}
complex_property! {Actor { object: dyn ObjectBaseTrait, link: dyn LinkBaseTrait }}
complex_property! {Attachment { object: dyn ObjectBaseTrait, link: dyn LinkBaseTrait }}
complex_property! {AttributedTo { object: dyn ObjectBaseTrait, link: dyn LinkBaseTrait }}
complex_property! {Audience { object: dyn ObjectBaseTrait, link: dyn LinkBaseTrait }}
complex_property! {BCC { object: dyn ObjectBaseTrait, link: dyn LinkBaseTrait }}
complex_property! {BTo { object: dyn ObjectBaseTrait, link: dyn LinkBaseTrait }}
complex_property! {CC { object: dyn ObjectBaseTrait, link: dyn LinkBaseTrait }}
complex_property! {Context { object: dyn ObjectBaseTrait, link: dyn LinkBaseTrait }}
complex_property! {functional Current { collection_page: Box<core::CollectionPage>, link: dyn LinkBaseTrait }}
complex_property! {functional First { collection_page: Box<core::CollectionPage>, link: dyn LinkBaseTrait }}
complex_property! {Generator { object: dyn ObjectBaseTrait, link: dyn LinkBaseTrait }}
complex_property! {Icon { image: Box<core::Image>, link: dyn LinkBaseTrait }}
complex_property! {Image { image: Box<core::Image>, link: dyn LinkBaseTrait }}
complex_property! {InReplyTo { object: dyn ObjectBaseTrait, base_object: Box<core::Object>, link: dyn LinkBaseTrait }}
complex_property! {Instrument { object: dyn ObjectBaseTrait, link: dyn LinkBaseTrait }}
complex_property! {functional Last { collection_page: Box<core::CollectionPage>, link: dyn LinkBaseTrait }}
complex_property! {Location { object: dyn ObjectBaseTrait, link: dyn LinkBaseTrait }}
complex_property! {Items { object: dyn ObjectBaseTrait, link: dyn LinkBaseTrait }}
complex_property! {OneOf { object: dyn ObjectBaseTrait, link: dyn LinkBaseTrait }}
complex_property! {AnyOf { object: dyn ObjectBaseTrait, link: dyn LinkBaseTrait }}
complex_property! {Closed { object: dyn ObjectBaseTrait, link: dyn LinkBaseTrait, datetime: chrono::NaiveDateTime, bool: bool }}
complex_property! {Origin { object: dyn ObjectBaseTrait, link: dyn LinkBaseTrait }}
complex_property! {functional Next { collection_page: Box<core::CollectionPage>, link: dyn LinkBaseTrait }}
complex_property! {Object { object: dyn ObjectBaseTrait, link: dyn LinkBaseTrait }}
complex_property! {functional Prev { collection_page: Box<core::CollectionPage>, link: dyn LinkBaseTrait }}
complex_property! {Preview { object: dyn ObjectBaseTrait, link: dyn LinkBaseTrait }}
complex_property! {Result { object: dyn ObjectBaseTrait, link: dyn LinkBaseTrait }}
complex_property! {functional Replies { collection: Box<core::Collection> }}
complex_property! {Tag { object: dyn ObjectBaseTrait, link: dyn LinkBaseTrait }}
complex_property! {Target { object: dyn ObjectBaseTrait, link: dyn LinkBaseTrait }}
complex_property! {To { object: dyn ObjectBaseTrait, link: dyn LinkBaseTrait }}
complex_property! {Url { string: String, link: dyn LinkBaseTrait }}
complex_property! {functional Accuracy { float: f32 }}
complex_property! {functional Altitude { float: f32 }}
complex_property! {functional Content { string: String, strings: Vec<String>, map: HashMap<String, String> }}
complex_property! {functional Name { string: String, strings: Vec<String>, map: HashMap<String, String> }}
complex_property! {functional Duration { string: String }} // chrono::Duration doesn't impl serde
complex_property! {functional Height { integer: u32 }}
complex_property! {functional Href { string: String }}
complex_property! {functional HrefLang { string: String }}
complex_property! {functional PartOf { collection_page: Box<core::CollectionPage>, link: dyn LinkBaseTrait }}
complex_property! {functional Latitude { float: f32 }}
complex_property! {functional Longitude { float: f32 }}
complex_property! {functional MediaType { string: String }}
complex_property! {functional EndTime { datetime: chrono::NaiveDateTime }}
complex_property! {functional Published { datetime: chrono::NaiveDateTime }}
complex_property! {functional StartTime { datetime: chrono::NaiveDateTime }}
complex_property! {functional Radius { float: f32 }}
complex_property! {Rel { string: String }}
complex_property! {functional StartIndex { integer: u32 }}
complex_property! {functional Summary { string: String, strings: Vec<String>, map: HashMap<String, String> }}
complex_property! {functional TotalItems { integer: u32 }}
complex_property! {functional Units { string: String }}
complex_property! {functional Updated { datetime: chrono::NaiveDateTime }}
complex_property! {functional Width { integer: u32 }}
complex_property! {functional Subject { object: dyn ObjectBaseTrait, link: dyn LinkBaseTrait }}
complex_property! {Relationship { object: dyn ObjectBaseTrait }}
complex_property! {functional Describes { object: dyn ObjectBaseTrait }}
complex_property! {FormerType { object: dyn ObjectBaseTrait }}
complex_property! {functional Deleted { datetime: chrono::NaiveDateTime }}