mirror of
https://git.asonix.dog/asonix/activitystreams.git
synced 2024-11-22 11:51:00 +00:00
Use more specific types for activitystreams fields
This commit is contained in:
parent
2c0658d77e
commit
ac4f1cd5d1
52 changed files with 1616 additions and 1942 deletions
|
@ -20,6 +20,9 @@ serde_derive = "1.0"
|
||||||
serde_json = "1.0"
|
serde_json = "1.0"
|
||||||
activitystreams-derive = { version = "0.3", path = "activitystreams-derive" }
|
activitystreams-derive = { version = "0.3", path = "activitystreams-derive" }
|
||||||
|
|
||||||
|
[profile.dev.package.activitystreams-derive]
|
||||||
|
opt-level = 3
|
||||||
|
|
||||||
[workspace]
|
[workspace]
|
||||||
members = [
|
members = [
|
||||||
"activitystreams-derive",
|
"activitystreams-derive",
|
||||||
|
|
|
@ -96,8 +96,6 @@ use syn::{
|
||||||
token, Attribute, Data, DeriveInput, Fields, Ident, LitStr, Result, Token, Type,
|
token, Attribute, Data, DeriveInput, Fields, Ident, LitStr, Result, Token, Type,
|
||||||
};
|
};
|
||||||
|
|
||||||
use std::iter::FromIterator;
|
|
||||||
|
|
||||||
#[proc_macro_derive(PropRefs, attributes(activitystreams))]
|
#[proc_macro_derive(PropRefs, attributes(activitystreams))]
|
||||||
pub fn ref_derive(input: TokenStream) -> TokenStream {
|
pub fn ref_derive(input: TokenStream) -> TokenStream {
|
||||||
let input: DeriveInput = syn::parse(input).unwrap();
|
let input: DeriveInput = syn::parse(input).unwrap();
|
||||||
|
@ -114,7 +112,7 @@ pub fn ref_derive(input: TokenStream) -> TokenStream {
|
||||||
_ => panic!("Can only derive for named fields"),
|
_ => panic!("Can only derive for named fields"),
|
||||||
};
|
};
|
||||||
|
|
||||||
let impls = fields
|
let tokens: proc_macro2::TokenStream = fields
|
||||||
.named
|
.named
|
||||||
.iter()
|
.iter()
|
||||||
.filter_map(|field| {
|
.filter_map(|field| {
|
||||||
|
@ -142,25 +140,31 @@ pub fn ref_derive(input: TokenStream) -> TokenStream {
|
||||||
let name = name.clone();
|
let name = name.clone();
|
||||||
let ext_trait = Ident::new(&format!("{}Ext", object), name.span());
|
let ext_trait = Ident::new(&format!("{}Ext", object), name.span());
|
||||||
|
|
||||||
let tt = if object.to_string() == "Object" || object.to_string() == "Link" {
|
let base_impl = if object.to_string() == "Object" || object.to_string() == "Link" {
|
||||||
quote! {
|
quote! {
|
||||||
#[typetag::serde]
|
#[typetag::serde]
|
||||||
}
|
|
||||||
} else {
|
|
||||||
quote! {}
|
|
||||||
};
|
|
||||||
|
|
||||||
let activity_impls = quote! {
|
|
||||||
#tt
|
|
||||||
impl #object for #name {
|
impl #object for #name {
|
||||||
fn as_any(&self) -> &dyn std::any::Any {
|
fn as_any(&self) -> &dyn std::any::Any {
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
fn as_any_mut(&self) -> &mut dyn std::any::Any {
|
fn as_any_mut(&mut self) -> &mut dyn std::any::Any {
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn duplicate(&self) -> Box<dyn #object> {
|
||||||
|
Box::new(self.clone())
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
quote! {
|
||||||
|
impl #object for #name {}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
let activity_impls = quote! {
|
||||||
|
#base_impl
|
||||||
|
|
||||||
impl #ext_trait for #name {
|
impl #ext_trait for #name {
|
||||||
fn props(&self) -> &#ty {
|
fn props(&self) -> &#ty {
|
||||||
|
@ -195,9 +199,8 @@ pub fn ref_derive(input: TokenStream) -> TokenStream {
|
||||||
#activity_impls
|
#activity_impls
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
})
|
||||||
|
.collect();
|
||||||
let tokens = proc_macro2::TokenStream::from_iter(impls);
|
|
||||||
|
|
||||||
let full = quote! {
|
let full = quote! {
|
||||||
#tokens
|
#tokens
|
||||||
|
@ -317,7 +320,15 @@ fn from_value(attr: Attribute) -> Ident {
|
||||||
|
|
||||||
#[proc_macro]
|
#[proc_macro]
|
||||||
pub fn properties(tokens: TokenStream) -> TokenStream {
|
pub fn properties(tokens: TokenStream) -> TokenStream {
|
||||||
let Properties { name, fields } = parse_macro_input!(tokens as Properties);
|
let Properties { name, docs, fields } = parse_macro_input!(tokens as Properties);
|
||||||
|
|
||||||
|
let docs: proc_macro2::TokenStream = docs
|
||||||
|
.into_iter()
|
||||||
|
.map(|doc| {
|
||||||
|
let idents: proc_macro2::TokenStream = format!("/// {}", doc).parse().unwrap();
|
||||||
|
quote! { #idents }
|
||||||
|
})
|
||||||
|
.collect();
|
||||||
|
|
||||||
let name = Ident::new(&format!("{}Properties", name), name.span());
|
let name = Ident::new(&format!("{}Properties", name), name.span());
|
||||||
|
|
||||||
|
@ -327,6 +338,11 @@ pub fn properties(tokens: TokenStream) -> TokenStream {
|
||||||
}
|
}
|
||||||
|
|
||||||
let fname = field.name.clone();
|
let fname = field.name.clone();
|
||||||
|
let fdocs: proc_macro2::TokenStream = field.description.docs.iter().map(|doc| {
|
||||||
|
let idents: proc_macro2::TokenStream = format!("/// {}", doc).parse().unwrap();
|
||||||
|
quote! { #idents }
|
||||||
|
}).collect();
|
||||||
|
|
||||||
let (ty, deps) = if field.description.types.len() == 1 {
|
let (ty, deps) = if field.description.types.len() == 1 {
|
||||||
let ty = Ident::new(&field.description.types.first().unwrap().to_token_stream().to_string(), fname.span());
|
let ty = Ident::new(&field.description.types.first().unwrap().to_token_stream().to_string(), fname.span());
|
||||||
if field.description.functional {
|
if field.description.functional {
|
||||||
|
@ -342,6 +358,12 @@ pub fn properties(tokens: TokenStream) -> TokenStream {
|
||||||
Array(Vec<#ty>),
|
Array(Vec<#ty>),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl Default for #enum_ty {
|
||||||
|
fn default() -> Self {
|
||||||
|
#enum_ty::Array(Vec::new())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl From<#ty> for #enum_ty {
|
impl From<#ty> for #enum_ty {
|
||||||
fn from(t: #ty) -> Self {
|
fn from(t: #ty) -> Self {
|
||||||
#enum_ty::Term(t)
|
#enum_ty::Term(t)
|
||||||
|
@ -360,7 +382,7 @@ pub fn properties(tokens: TokenStream) -> TokenStream {
|
||||||
} else {
|
} else {
|
||||||
let ty = Ident::new(&camelize(&format!("{}_{}_enum", name, fname)), fname.span());
|
let ty = Ident::new(&camelize(&format!("{}_{}_enum", name, fname)), fname.span());
|
||||||
|
|
||||||
let v_tys: Vec<_> = field
|
let v_tokens: proc_macro2::TokenStream = field
|
||||||
.description
|
.description
|
||||||
.types
|
.types
|
||||||
.iter()
|
.iter()
|
||||||
|
@ -371,12 +393,12 @@ pub fn properties(tokens: TokenStream) -> TokenStream {
|
||||||
})
|
})
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
let v_tokens = proc_macro2::TokenStream::from_iter(v_tys);
|
let first_type = field.description.types.iter().next().unwrap().clone();
|
||||||
|
|
||||||
let deps = if !field.description.functional {
|
let deps = if !field.description.functional {
|
||||||
let term_ty = Ident::new(&camelize(&format!("{}_{}_term_enum", name, fname)), fname.span());
|
let term_ty = Ident::new(&camelize(&format!("{}_{}_term_enum", name, fname)), fname.span());
|
||||||
|
|
||||||
let froms: Vec<_> = field
|
let from_tokens: proc_macro2::TokenStream = field
|
||||||
.description
|
.description
|
||||||
.types
|
.types
|
||||||
.iter()
|
.iter()
|
||||||
|
@ -391,8 +413,6 @@ pub fn properties(tokens: TokenStream) -> TokenStream {
|
||||||
})
|
})
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
let from_tokens = proc_macro2::TokenStream::from_iter(froms);
|
|
||||||
|
|
||||||
quote! {
|
quote! {
|
||||||
#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)]
|
#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
|
@ -409,6 +429,12 @@ pub fn properties(tokens: TokenStream) -> TokenStream {
|
||||||
Array(Vec<#term_ty>),
|
Array(Vec<#term_ty>),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl Default for #ty {
|
||||||
|
fn default() -> Self {
|
||||||
|
#ty::Array(Vec::new())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl From<#term_ty> for #ty {
|
impl From<#term_ty> for #ty {
|
||||||
fn from(term: #term_ty) -> Self {
|
fn from(term: #term_ty) -> Self {
|
||||||
#ty::Term(term)
|
#ty::Term(term)
|
||||||
|
@ -424,7 +450,7 @@ pub fn properties(tokens: TokenStream) -> TokenStream {
|
||||||
#from_tokens
|
#from_tokens
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
let froms: Vec<_> = field
|
let from_tokens: proc_macro2::TokenStream = field
|
||||||
.description
|
.description
|
||||||
.types
|
.types
|
||||||
.iter()
|
.iter()
|
||||||
|
@ -439,8 +465,6 @@ pub fn properties(tokens: TokenStream) -> TokenStream {
|
||||||
})
|
})
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
let from_tokens = proc_macro2::TokenStream::from_iter(froms);
|
|
||||||
|
|
||||||
quote! {
|
quote! {
|
||||||
#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)]
|
#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
|
@ -449,6 +473,12 @@ pub fn properties(tokens: TokenStream) -> TokenStream {
|
||||||
#v_tokens
|
#v_tokens
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl Default for #ty {
|
||||||
|
fn default() -> Self {
|
||||||
|
#ty::#first_type(Default::default())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#from_tokens
|
#from_tokens
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -456,30 +486,29 @@ pub fn properties(tokens: TokenStream) -> TokenStream {
|
||||||
(ty, Some(deps))
|
(ty, Some(deps))
|
||||||
};
|
};
|
||||||
|
|
||||||
|
let alias_tokens: proc_macro2::TokenStream = field.description.aliases.iter().map(|alias| quote!{
|
||||||
|
#[serde(alias = #alias)]
|
||||||
|
}).collect();
|
||||||
|
let rename_tokens: proc_macro2::TokenStream = field.description.rename.iter().map(|rename| quote!{
|
||||||
|
#[serde(rename = #rename)]
|
||||||
|
}).collect();
|
||||||
|
|
||||||
let field_tokens = if field.description.required {
|
let field_tokens = if field.description.required {
|
||||||
if let Some(ref rename) = field.description.rename {
|
|
||||||
quote! {
|
|
||||||
#[serde(rename = #rename)]
|
|
||||||
pub #fname: #ty,
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
quote! {
|
quote! {
|
||||||
pub #fname: #ty,
|
pub #fname: #ty,
|
||||||
}
|
}
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if let Some(ref rename) = field.description.rename {
|
|
||||||
quote! {
|
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
|
||||||
#[serde(rename = #rename)]
|
|
||||||
pub #fname: Option<#ty>,
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
quote! {
|
quote! {
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
pub #fname: Option<#ty>,
|
pub #fname: Option<#ty>,
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
|
let field_tokens = quote!{
|
||||||
|
#fdocs
|
||||||
|
#rename_tokens
|
||||||
|
#alias_tokens
|
||||||
|
#field_tokens
|
||||||
};
|
};
|
||||||
|
|
||||||
let fns = if field.description.types.len() == 1 {
|
let fns = if field.description.types.len() == 1 {
|
||||||
|
@ -637,7 +666,7 @@ pub fn properties(tokens: TokenStream) -> TokenStream {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if field.description.functional {
|
} else if field.description.functional {
|
||||||
let impls: Vec<_> = field
|
let tokens: proc_macro2::TokenStream = field
|
||||||
.description
|
.description
|
||||||
.types
|
.types
|
||||||
.iter()
|
.iter()
|
||||||
|
@ -701,14 +730,12 @@ pub fn properties(tokens: TokenStream) -> TokenStream {
|
||||||
})
|
})
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
let tokens = proc_macro2::TokenStream::from_iter(impls);
|
|
||||||
|
|
||||||
quote! {
|
quote! {
|
||||||
#tokens
|
#tokens
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
let term_ty = Ident::new(&camelize(&format!("{}_{}_term_enum", name, fname)), fname.span());
|
let term_ty = Ident::new(&camelize(&format!("{}_{}_term_enum", name, fname)), fname.span());
|
||||||
let impls: Vec<_> = field
|
let tokens: proc_macro2::TokenStream = field
|
||||||
.description
|
.description
|
||||||
.types
|
.types
|
||||||
.iter()
|
.iter()
|
||||||
|
@ -825,8 +852,6 @@ pub fn properties(tokens: TokenStream) -> TokenStream {
|
||||||
})
|
})
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
let tokens = proc_macro2::TokenStream::from_iter(impls);
|
|
||||||
|
|
||||||
let delete = if !field.description.required {
|
let delete = if !field.description.required {
|
||||||
let delete_ident =
|
let delete_ident =
|
||||||
Ident::new(&format!("delete_{}", fname), fname.span());
|
Ident::new(&format!("delete_{}", fname), fname.span());
|
||||||
|
@ -851,17 +876,13 @@ pub fn properties(tokens: TokenStream) -> TokenStream {
|
||||||
Some(((field_tokens, fns), deps))
|
Some(((field_tokens, fns), deps))
|
||||||
}).unzip();
|
}).unzip();
|
||||||
|
|
||||||
let (fields, fns): (Vec<_>, Vec<_>) = fields.into_iter().unzip();
|
let (field_tokens, fn_tokens): (proc_macro2::TokenStream, proc_macro2::TokenStream) =
|
||||||
let deps: Vec<_> = deps.into_iter().filter_map(|d| d).collect();
|
fields.into_iter().unzip();
|
||||||
|
let deps_tokens: proc_macro2::TokenStream = deps.into_iter().filter_map(|d| d).collect();
|
||||||
let field_tokens = proc_macro2::TokenStream::from_iter(fields);
|
|
||||||
let fn_tokens = proc_macro2::TokenStream::from_iter(fns);
|
|
||||||
let deps_tokens = proc_macro2::TokenStream::from_iter(deps);
|
|
||||||
|
|
||||||
let q = quote! {
|
let q = quote! {
|
||||||
#deps_tokens
|
#docs
|
||||||
|
#[derive(Clone, Debug, Default, serde::Deserialize, serde::Serialize)]
|
||||||
#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub struct #name {
|
pub struct #name {
|
||||||
#field_tokens
|
#field_tokens
|
||||||
|
@ -870,6 +891,8 @@ pub fn properties(tokens: TokenStream) -> TokenStream {
|
||||||
impl #name {
|
impl #name {
|
||||||
#fn_tokens
|
#fn_tokens
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#deps_tokens
|
||||||
};
|
};
|
||||||
q.into()
|
q.into()
|
||||||
}
|
}
|
||||||
|
@ -879,10 +902,13 @@ mod kw {
|
||||||
syn::custom_keyword!(functional);
|
syn::custom_keyword!(functional);
|
||||||
syn::custom_keyword!(required);
|
syn::custom_keyword!(required);
|
||||||
syn::custom_keyword!(rename);
|
syn::custom_keyword!(rename);
|
||||||
|
syn::custom_keyword!(alias);
|
||||||
|
syn::custom_keyword!(docs);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct Properties {
|
struct Properties {
|
||||||
name: Ident,
|
name: Ident,
|
||||||
|
docs: Vec<String>,
|
||||||
fields: Punctuated<Field, Token![,]>,
|
fields: Punctuated<Field, Token![,]>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -892,10 +918,12 @@ struct Field {
|
||||||
}
|
}
|
||||||
|
|
||||||
struct Description {
|
struct Description {
|
||||||
|
docs: Vec<String>,
|
||||||
types: Punctuated<Type, Token![,]>,
|
types: Punctuated<Type, Token![,]>,
|
||||||
functional: bool,
|
functional: bool,
|
||||||
required: bool,
|
required: bool,
|
||||||
rename: Option<String>,
|
rename: Option<String>,
|
||||||
|
aliases: Vec<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Parse for Properties {
|
impl Parse for Properties {
|
||||||
|
@ -904,9 +932,12 @@ impl Parse for Properties {
|
||||||
|
|
||||||
let content;
|
let content;
|
||||||
let _: token::Brace = braced!(content in input);
|
let _: token::Brace = braced!(content in input);
|
||||||
|
|
||||||
|
let docs = parse_string_array::<_, kw::docs>(&&content, kw::docs)?;
|
||||||
|
|
||||||
let fields = Punctuated::<Field, Token![,]>::parse_terminated(&content)?;
|
let fields = Punctuated::<Field, Token![,]>::parse_terminated(&content)?;
|
||||||
|
|
||||||
Ok(Properties { name, fields })
|
Ok(Properties { name, docs, fields })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -925,6 +956,8 @@ impl Parse for Field {
|
||||||
|
|
||||||
impl Parse for Description {
|
impl Parse for Description {
|
||||||
fn parse(input: ParseStream) -> Result<Self> {
|
fn parse(input: ParseStream) -> Result<Self> {
|
||||||
|
let docs = parse_string_array::<_, kw::docs>(&input, kw::docs)?;
|
||||||
|
|
||||||
let lookahead = input.lookahead1();
|
let lookahead = input.lookahead1();
|
||||||
if !lookahead.peek(kw::types) {
|
if !lookahead.peek(kw::types) {
|
||||||
return Err(lookahead.error());
|
return Err(lookahead.error());
|
||||||
|
@ -938,13 +971,16 @@ impl Parse for Description {
|
||||||
|
|
||||||
let functional = parse_kw::<_, kw::functional>(&input, kw::functional)?;
|
let functional = parse_kw::<_, kw::functional>(&input, kw::functional)?;
|
||||||
let required = parse_kw::<_, kw::required>(&input, kw::required)?;
|
let required = parse_kw::<_, kw::required>(&input, kw::required)?;
|
||||||
let rename = parse_rename::<_, kw::rename>(&input, kw::rename)?;
|
let rename = parse_string_group::<_, kw::rename>(&input, kw::rename)?;
|
||||||
|
let aliases = parse_string_array::<_, kw::alias>(&input, kw::alias)?;
|
||||||
|
|
||||||
Ok(Description {
|
Ok(Description {
|
||||||
|
docs,
|
||||||
types,
|
types,
|
||||||
functional,
|
functional,
|
||||||
required,
|
required,
|
||||||
rename,
|
rename,
|
||||||
|
aliases,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -961,7 +997,25 @@ fn parse_kw<T: Peek + Copy, U: Parse>(input: &ParseStream, t: T) -> Result<bool>
|
||||||
Ok(false)
|
Ok(false)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn parse_rename<T: Peek + Copy, U: Parse>(input: &ParseStream, t: T) -> Result<Option<String>> {
|
fn parse_string_array<T: Peek + Copy, U: Parse>(input: &ParseStream, t: T) -> Result<Vec<String>> {
|
||||||
|
let lookahead = input.lookahead1();
|
||||||
|
if lookahead.peek(t) {
|
||||||
|
input.parse::<U>()?;
|
||||||
|
let content;
|
||||||
|
bracketed!(content in input);
|
||||||
|
|
||||||
|
let docs = Punctuated::<LitStr, Token![,]>::parse_terminated(&content)?;
|
||||||
|
optional_comma(&input)?;
|
||||||
|
Ok(docs.into_iter().map(|d| d.value()).collect())
|
||||||
|
} else {
|
||||||
|
Ok(vec![])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn parse_string_group<T: Peek + Copy, U: Parse>(
|
||||||
|
input: &ParseStream,
|
||||||
|
t: T,
|
||||||
|
) -> Result<Option<String>> {
|
||||||
let lookahead = input.lookahead1();
|
let lookahead = input.lookahead1();
|
||||||
if lookahead.peek(t) {
|
if lookahead.peek(t) {
|
||||||
input.parse::<U>()?;
|
input.parse::<U>()?;
|
||||||
|
|
|
@ -10,7 +10,6 @@ keywords = ["activitystreams", "activitypub"]
|
||||||
edition = "2018"
|
edition = "2018"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
thiserror = "1.0"
|
|
||||||
typetag = "0.1.4"
|
typetag = "0.1.4"
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
|
|
|
@ -32,4 +32,6 @@ pub trait Link: std::fmt::Debug {
|
||||||
fn as_any(&self) -> &dyn Any;
|
fn as_any(&self) -> &dyn Any;
|
||||||
|
|
||||||
fn as_any_mut(&mut self) -> &mut dyn Any;
|
fn as_any_mut(&mut self) -> &mut dyn Any;
|
||||||
|
|
||||||
|
fn duplicate(&self) -> Box<dyn Link>;
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,4 +29,6 @@ pub trait Object: std::fmt::Debug {
|
||||||
fn as_any(&self) -> &dyn Any;
|
fn as_any(&self) -> &dyn Any;
|
||||||
|
|
||||||
fn as_any_mut(&mut self) -> &mut dyn Any;
|
fn as_any_mut(&mut self) -> &mut dyn Any;
|
||||||
|
|
||||||
|
fn duplicate(&self) -> Box<dyn Object>;
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,9 +17,9 @@
|
||||||
* along with ActivityStreams Types. If not, see <http://www.gnu.org/licenses/>.
|
* along with ActivityStreams Types. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
use activitystreams_derive::Properties;
|
use activitystreams_derive::PropRefs;
|
||||||
use activitystreams_traits::{Activity, Object};
|
use activitystreams_traits::{Activity, Object};
|
||||||
use serde_derive::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
kind::AcceptType,
|
kind::AcceptType,
|
||||||
|
@ -32,7 +32,7 @@ use crate::object::{properties::ObjectProperties, ObjectExt};
|
||||||
///
|
///
|
||||||
/// The target property can be used in certain circumstances to indicate the context into which the
|
/// The target property can be used in certain circumstances to indicate the context into which the
|
||||||
/// object has been accepted.
|
/// object has been accepted.
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, Properties)]
|
#[derive(Clone, Debug, Default, Deserialize, PropRefs, Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub struct Accept {
|
pub struct Accept {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
|
@ -42,34 +42,16 @@ pub struct Accept {
|
||||||
|
|
||||||
/// Adds all valid accept properties to this struct
|
/// Adds all valid accept properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(None)]
|
||||||
pub accept_props: AcceptProperties,
|
pub accept_props: AcceptProperties,
|
||||||
|
|
||||||
/// Adds all valid object properties to this struct
|
/// Adds all valid object properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Object)]
|
||||||
pub object_props: ObjectProperties,
|
pub object_props: ObjectProperties,
|
||||||
|
|
||||||
/// Adds all valid activity properties to this struct
|
/// Adds all valid activity properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Activity)]
|
||||||
pub activity_props: ActivityProperties,
|
pub activity_props: ActivityProperties,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Object for Accept {}
|
|
||||||
impl ObjectExt for Accept {
|
|
||||||
fn props(&self) -> &ObjectProperties {
|
|
||||||
&self.object_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ObjectProperties {
|
|
||||||
&mut self.object_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
impl Activity for Accept {}
|
|
||||||
impl ActivityExt for Accept {
|
|
||||||
fn props(&self) -> &ActivityProperties {
|
|
||||||
&self.activity_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ActivityProperties {
|
|
||||||
&mut self.activity_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -17,9 +17,9 @@
|
||||||
* along with ActivityStreams Types. If not, see <http://www.gnu.org/licenses/>.
|
* along with ActivityStreams Types. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
use activitystreams_derive::Properties;
|
use activitystreams_derive::PropRefs;
|
||||||
use activitystreams_traits::{Activity, Object};
|
use activitystreams_traits::{Activity, Object};
|
||||||
use serde_derive::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
kind::AddType,
|
kind::AddType,
|
||||||
|
@ -33,7 +33,7 @@ use crate::object::{properties::ObjectProperties, ObjectExt};
|
||||||
/// If the target property is not explicitly specified, the target would need to be determined
|
/// If the target property is not explicitly specified, the target would need to be determined
|
||||||
/// implicitly by context. The origin can be used to identify the context from which the object
|
/// implicitly by context. The origin can be used to identify the context from which the object
|
||||||
/// originated.
|
/// originated.
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, Properties)]
|
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub struct Add {
|
pub struct Add {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
|
@ -43,34 +43,16 @@ pub struct Add {
|
||||||
|
|
||||||
/// Adds all valid add properties to this struct
|
/// Adds all valid add properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(None)]
|
||||||
pub add_props: AddProperties,
|
pub add_props: AddProperties,
|
||||||
|
|
||||||
/// Adds all valid object properties to this struct
|
/// Adds all valid object properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Object)]
|
||||||
pub object_props: ObjectProperties,
|
pub object_props: ObjectProperties,
|
||||||
|
|
||||||
/// Adds all valid activity properties to this struct
|
/// Adds all valid activity properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Activity)]
|
||||||
pub activity_props: ActivityProperties,
|
pub activity_props: ActivityProperties,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Object for Add {}
|
|
||||||
impl ObjectExt for Add {
|
|
||||||
fn props(&self) -> &ObjectProperties {
|
|
||||||
&self.object_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ObjectProperties {
|
|
||||||
&mut self.object_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
impl Activity for Add {}
|
|
||||||
impl ActivityExt for Add {
|
|
||||||
fn props(&self) -> &ActivityProperties {
|
|
||||||
&self.activity_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ActivityProperties {
|
|
||||||
&mut self.activity_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -17,9 +17,9 @@
|
||||||
* along with ActivityStreams Types. If not, see <http://www.gnu.org/licenses/>.
|
* along with ActivityStreams Types. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
use activitystreams_derive::Properties;
|
use activitystreams_derive::PropRefs;
|
||||||
use activitystreams_traits::{Activity, Object};
|
use activitystreams_traits::{Activity, Object};
|
||||||
use serde_derive::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
kind::MoveType,
|
kind::MoveType,
|
||||||
|
@ -31,7 +31,7 @@ use crate::object::{properties::ObjectProperties, ObjectExt};
|
||||||
/// Indicates that the actor has moved object from origin to target.
|
/// Indicates that the actor has moved object from origin to target.
|
||||||
///
|
///
|
||||||
/// If the origin or target are not specified, either can be determined by context.
|
/// If the origin or target are not specified, either can be determined by context.
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, Properties)]
|
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub struct AMove {
|
pub struct AMove {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
|
@ -41,34 +41,16 @@ pub struct AMove {
|
||||||
|
|
||||||
/// Adds all valid move properties to this struct
|
/// Adds all valid move properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(None)]
|
||||||
pub move_props: MoveProperties,
|
pub move_props: MoveProperties,
|
||||||
|
|
||||||
/// Adds all valid object properties to this struct
|
/// Adds all valid object properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Object)]
|
||||||
pub object_props: ObjectProperties,
|
pub object_props: ObjectProperties,
|
||||||
|
|
||||||
/// Adds all valid activity properties to this struct
|
/// Adds all valid activity properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Activity)]
|
||||||
pub activity_props: ActivityProperties,
|
pub activity_props: ActivityProperties,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Object for AMove {}
|
|
||||||
impl ObjectExt for AMove {
|
|
||||||
fn props(&self) -> &ObjectProperties {
|
|
||||||
&self.object_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ObjectProperties {
|
|
||||||
&mut self.object_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
impl Activity for AMove {}
|
|
||||||
impl ActivityExt for AMove {
|
|
||||||
fn props(&self) -> &ActivityProperties {
|
|
||||||
&self.activity_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ActivityProperties {
|
|
||||||
&mut self.activity_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -17,9 +17,9 @@
|
||||||
* along with ActivityStreams Types. If not, see <http://www.gnu.org/licenses/>.
|
* along with ActivityStreams Types. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
use activitystreams_derive::Properties;
|
use activitystreams_derive::PropRefs;
|
||||||
use activitystreams_traits::{Activity, Object};
|
use activitystreams_traits::{Activity, Object};
|
||||||
use serde_derive::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
kind::AnnounceType,
|
kind::AnnounceType,
|
||||||
|
@ -31,7 +31,7 @@ use crate::object::{properties::ObjectProperties, ObjectExt};
|
||||||
/// Indicates that the actor is calling the target's attention the object.
|
/// Indicates that the actor is calling the target's attention the object.
|
||||||
///
|
///
|
||||||
/// The origin typically has no defined meaning.
|
/// The origin typically has no defined meaning.
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, Properties)]
|
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub struct Announce {
|
pub struct Announce {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
|
@ -41,34 +41,16 @@ pub struct Announce {
|
||||||
|
|
||||||
/// Adds all valid announce properties to this struct
|
/// Adds all valid announce properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(None)]
|
||||||
pub announce_props: AnnounceProperties,
|
pub announce_props: AnnounceProperties,
|
||||||
|
|
||||||
/// Adds all valid object properties to this struct
|
/// Adds all valid object properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Object)]
|
||||||
pub object_props: ObjectProperties,
|
pub object_props: ObjectProperties,
|
||||||
|
|
||||||
/// Adds all valid activity properties to this struct
|
/// Adds all valid activity properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Activity)]
|
||||||
pub activity_props: ActivityProperties,
|
pub activity_props: ActivityProperties,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Object for Announce {}
|
|
||||||
impl ObjectExt for Announce {
|
|
||||||
fn props(&self) -> &ObjectProperties {
|
|
||||||
&self.object_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ObjectProperties {
|
|
||||||
&mut self.object_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
impl Activity for Announce {}
|
|
||||||
impl ActivityExt for Announce {
|
|
||||||
fn props(&self) -> &ActivityProperties {
|
|
||||||
&self.activity_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ActivityProperties {
|
|
||||||
&mut self.activity_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -17,9 +17,9 @@
|
||||||
* along with ActivityStreams Types. If not, see <http://www.gnu.org/licenses/>.
|
* along with ActivityStreams Types. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
use activitystreams_derive::Properties;
|
use activitystreams_derive::PropRefs;
|
||||||
use activitystreams_traits::{Activity, IntransitiveActivity, Object};
|
use activitystreams_traits::{Activity, IntransitiveActivity, Object};
|
||||||
use serde_derive::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
kind::ArriveType,
|
kind::ArriveType,
|
||||||
|
@ -32,7 +32,7 @@ use crate::object::{properties::ObjectProperties, ObjectExt};
|
||||||
///
|
///
|
||||||
/// The origin can be used to identify the context from which the actor originated. The target
|
/// The origin can be used to identify the context from which the actor originated. The target
|
||||||
/// typically has no defined meaning.
|
/// typically has no defined meaning.
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, Properties)]
|
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub struct Arrive {
|
pub struct Arrive {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
|
@ -42,35 +42,18 @@ pub struct Arrive {
|
||||||
|
|
||||||
/// Adds all valid arrive properties to this struct
|
/// Adds all valid arrive properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(None)]
|
||||||
pub arrive_props: ArriveProperties,
|
pub arrive_props: ArriveProperties,
|
||||||
|
|
||||||
/// Adds all valid object properties to this struct
|
/// Adds all valid object properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Object)]
|
||||||
pub object_props: ObjectProperties,
|
pub object_props: ObjectProperties,
|
||||||
|
|
||||||
/// Adds all valid activity properties to this struct
|
/// Adds all valid activity properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Activity)]
|
||||||
pub activity_props: ActivityProperties,
|
pub activity_props: ActivityProperties,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Object for Arrive {}
|
|
||||||
impl ObjectExt for Arrive {
|
|
||||||
fn props(&self) -> &ObjectProperties {
|
|
||||||
&self.object_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ObjectProperties {
|
|
||||||
&mut self.object_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
impl Activity for Arrive {}
|
|
||||||
impl IntransitiveActivity for Arrive {}
|
impl IntransitiveActivity for Arrive {}
|
||||||
impl ActivityExt for Arrive {
|
|
||||||
fn props(&self) -> &ActivityProperties {
|
|
||||||
&self.activity_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ActivityProperties {
|
|
||||||
&mut self.activity_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -17,9 +17,9 @@
|
||||||
* along with ActivityStreams Types. If not, see <http://www.gnu.org/licenses/>.
|
* along with ActivityStreams Types. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
use activitystreams_derive::Properties;
|
use activitystreams_derive::PropRefs;
|
||||||
use activitystreams_traits::{Activity, Object};
|
use activitystreams_traits::{Activity, Object};
|
||||||
use serde_derive::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
kind::BlockType,
|
kind::BlockType,
|
||||||
|
@ -33,7 +33,7 @@ use crate::object::{properties::ObjectProperties, ObjectExt};
|
||||||
/// Blocking is a stronger form of Ignore. The typical use is to support social systems that allow
|
/// Blocking is a stronger form of Ignore. The typical use is to support social systems that allow
|
||||||
/// one user to block activities or content of other users. The target and origin typically have no
|
/// one user to block activities or content of other users. The target and origin typically have no
|
||||||
/// defined meaning.
|
/// defined meaning.
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, Properties)]
|
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub struct Block {
|
pub struct Block {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
|
@ -43,34 +43,16 @@ pub struct Block {
|
||||||
|
|
||||||
/// Adds all valid block properties to this struct
|
/// Adds all valid block properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(None)]
|
||||||
pub block_props: BlockProperties,
|
pub block_props: BlockProperties,
|
||||||
|
|
||||||
/// Adds all valid object properties to this struct
|
/// Adds all valid object properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Object)]
|
||||||
pub object_props: ObjectProperties,
|
pub object_props: ObjectProperties,
|
||||||
|
|
||||||
/// Adds all valid activity properties to this struct
|
/// Adds all valid activity properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Activity)]
|
||||||
pub activity_props: ActivityProperties,
|
pub activity_props: ActivityProperties,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Object for Block {}
|
|
||||||
impl ObjectExt for Block {
|
|
||||||
fn props(&self) -> &ObjectProperties {
|
|
||||||
&self.object_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ObjectProperties {
|
|
||||||
&mut self.object_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
impl Activity for Block {}
|
|
||||||
impl ActivityExt for Block {
|
|
||||||
fn props(&self) -> &ActivityProperties {
|
|
||||||
&self.activity_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ActivityProperties {
|
|
||||||
&mut self.activity_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -17,9 +17,9 @@
|
||||||
* along with ActivityStreams Types. If not, see <http://www.gnu.org/licenses/>.
|
* along with ActivityStreams Types. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
use activitystreams_derive::Properties;
|
use activitystreams_derive::PropRefs;
|
||||||
use activitystreams_traits::{Activity, Object};
|
use activitystreams_traits::{Activity, Object};
|
||||||
use serde_derive::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
kind::CreateType,
|
kind::CreateType,
|
||||||
|
@ -29,7 +29,7 @@ use super::{
|
||||||
use crate::object::{properties::ObjectProperties, ObjectExt};
|
use crate::object::{properties::ObjectProperties, ObjectExt};
|
||||||
|
|
||||||
/// Indicates that the actor has created the object.
|
/// Indicates that the actor has created the object.
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, Properties)]
|
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub struct Create {
|
pub struct Create {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
|
@ -39,34 +39,16 @@ pub struct Create {
|
||||||
|
|
||||||
/// Adds all valid create properties to this struct
|
/// Adds all valid create properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(None)]
|
||||||
pub create_props: CreateProperties,
|
pub create_props: CreateProperties,
|
||||||
|
|
||||||
/// Adds all valid object properties to this struct
|
/// Adds all valid object properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Object)]
|
||||||
pub object_props: ObjectProperties,
|
pub object_props: ObjectProperties,
|
||||||
|
|
||||||
/// Adds all valid activity properties to this struct
|
/// Adds all valid activity properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Activity)]
|
||||||
pub activity_props: ActivityProperties,
|
pub activity_props: ActivityProperties,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Object for Create {}
|
|
||||||
impl ObjectExt for Create {
|
|
||||||
fn props(&self) -> &ObjectProperties {
|
|
||||||
&self.object_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ObjectProperties {
|
|
||||||
&mut self.object_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
impl Activity for Create {}
|
|
||||||
impl ActivityExt for Create {
|
|
||||||
fn props(&self) -> &ActivityProperties {
|
|
||||||
&self.activity_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ActivityProperties {
|
|
||||||
&mut self.activity_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -17,9 +17,9 @@
|
||||||
* along with ActivityStreams Types. If not, see <http://www.gnu.org/licenses/>.
|
* along with ActivityStreams Types. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
use activitystreams_derive::Properties;
|
use activitystreams_derive::PropRefs;
|
||||||
use activitystreams_traits::{Activity, Object};
|
use activitystreams_traits::{Activity, Object};
|
||||||
use serde_derive::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
kind::DeleteType,
|
kind::DeleteType,
|
||||||
|
@ -31,7 +31,7 @@ use crate::object::{properties::ObjectProperties, ObjectExt};
|
||||||
/// Indicates that the actor has deleted the object.
|
/// Indicates that the actor has deleted the object.
|
||||||
///
|
///
|
||||||
/// If specified, the origin indicates the context from which the object was deleted.
|
/// If specified, the origin indicates the context from which the object was deleted.
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, Properties)]
|
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub struct Delete {
|
pub struct Delete {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
|
@ -41,34 +41,16 @@ pub struct Delete {
|
||||||
|
|
||||||
/// Adds all valid delete properties to this struct
|
/// Adds all valid delete properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(None)]
|
||||||
pub delete_props: DeleteProperties,
|
pub delete_props: DeleteProperties,
|
||||||
|
|
||||||
/// Adds all valid object properties to this struct
|
/// Adds all valid object properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Object)]
|
||||||
pub object_props: ObjectProperties,
|
pub object_props: ObjectProperties,
|
||||||
|
|
||||||
/// Adds all valid activity properties to this struct
|
/// Adds all valid activity properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Activity)]
|
||||||
pub activity_props: ActivityProperties,
|
pub activity_props: ActivityProperties,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Object for Delete {}
|
|
||||||
impl ObjectExt for Delete {
|
|
||||||
fn props(&self) -> &ObjectProperties {
|
|
||||||
&self.object_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ObjectProperties {
|
|
||||||
&mut self.object_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
impl Activity for Delete {}
|
|
||||||
impl ActivityExt for Delete {
|
|
||||||
fn props(&self) -> &ActivityProperties {
|
|
||||||
&self.activity_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ActivityProperties {
|
|
||||||
&mut self.activity_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -17,9 +17,9 @@
|
||||||
* along with ActivityStreams Types. If not, see <http://www.gnu.org/licenses/>.
|
* along with ActivityStreams Types. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
use activitystreams_derive::Properties;
|
use activitystreams_derive::PropRefs;
|
||||||
use activitystreams_traits::{Activity, Object};
|
use activitystreams_traits::{Activity, Object};
|
||||||
use serde_derive::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
kind::DislikeType,
|
kind::DislikeType,
|
||||||
|
@ -29,7 +29,7 @@ use super::{
|
||||||
use crate::object::{properties::ObjectProperties, ObjectExt};
|
use crate::object::{properties::ObjectProperties, ObjectExt};
|
||||||
|
|
||||||
/// Indicates that the actor dislikes the object.
|
/// Indicates that the actor dislikes the object.
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, Properties)]
|
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub struct Dislike {
|
pub struct Dislike {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
|
@ -39,34 +39,16 @@ pub struct Dislike {
|
||||||
|
|
||||||
/// Adds all valid dislike properties to this struct
|
/// Adds all valid dislike properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(None)]
|
||||||
pub dislike_props: DislikeProperties,
|
pub dislike_props: DislikeProperties,
|
||||||
|
|
||||||
/// Adds all valid object properties to this struct
|
/// Adds all valid object properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Object)]
|
||||||
pub object_props: ObjectProperties,
|
pub object_props: ObjectProperties,
|
||||||
|
|
||||||
/// Adds all valid activity properties to this struct
|
/// Adds all valid activity properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Activity)]
|
||||||
pub activity_props: ActivityProperties,
|
pub activity_props: ActivityProperties,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Object for Dislike {}
|
|
||||||
impl ObjectExt for Dislike {
|
|
||||||
fn props(&self) -> &ObjectProperties {
|
|
||||||
&self.object_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ObjectProperties {
|
|
||||||
&mut self.object_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
impl Activity for Dislike {}
|
|
||||||
impl ActivityExt for Dislike {
|
|
||||||
fn props(&self) -> &ActivityProperties {
|
|
||||||
&self.activity_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ActivityProperties {
|
|
||||||
&mut self.activity_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -17,9 +17,9 @@
|
||||||
* along with ActivityStreams Types. If not, see <http://www.gnu.org/licenses/>.
|
* along with ActivityStreams Types. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
use activitystreams_derive::Properties;
|
use activitystreams_derive::PropRefs;
|
||||||
use activitystreams_traits::{Activity, Object};
|
use activitystreams_traits::{Activity, Object};
|
||||||
use serde_derive::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
kind::FlagType,
|
kind::FlagType,
|
||||||
|
@ -32,7 +32,7 @@ use crate::object::{properties::ObjectProperties, ObjectExt};
|
||||||
///
|
///
|
||||||
/// Flagging is defined in the sense common to many social platforms as reporting content as being
|
/// Flagging is defined in the sense common to many social platforms as reporting content as being
|
||||||
/// inappropriate for any number of reasons.
|
/// inappropriate for any number of reasons.
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, Properties)]
|
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub struct Flag {
|
pub struct Flag {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
|
@ -42,34 +42,16 @@ pub struct Flag {
|
||||||
|
|
||||||
/// Adds all valid flag properties to this struct
|
/// Adds all valid flag properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(None)]
|
||||||
pub flag_props: FlagProperties,
|
pub flag_props: FlagProperties,
|
||||||
|
|
||||||
/// Adds all valid object properties to this struct
|
/// Adds all valid object properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Object)]
|
||||||
pub object_props: ObjectProperties,
|
pub object_props: ObjectProperties,
|
||||||
|
|
||||||
/// Adds all valid activity properties to this struct
|
/// Adds all valid activity properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Activity)]
|
||||||
pub activity_props: ActivityProperties,
|
pub activity_props: ActivityProperties,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Object for Flag {}
|
|
||||||
impl ObjectExt for Flag {
|
|
||||||
fn props(&self) -> &ObjectProperties {
|
|
||||||
&self.object_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ObjectProperties {
|
|
||||||
&mut self.object_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
impl Activity for Flag {}
|
|
||||||
impl ActivityExt for Flag {
|
|
||||||
fn props(&self) -> &ActivityProperties {
|
|
||||||
&self.activity_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ActivityProperties {
|
|
||||||
&mut self.activity_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -17,9 +17,9 @@
|
||||||
* along with ActivityStreams Types. If not, see <http://www.gnu.org/licenses/>.
|
* along with ActivityStreams Types. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
use activitystreams_derive::Properties;
|
use activitystreams_derive::PropRefs;
|
||||||
use activitystreams_traits::{Activity, Object};
|
use activitystreams_traits::{Activity, Object};
|
||||||
use serde_derive::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
kind::FollowType,
|
kind::FollowType,
|
||||||
|
@ -33,7 +33,7 @@ use crate::object::{properties::ObjectProperties, ObjectExt};
|
||||||
/// Following is defined in the sense typically used within Social systems in which the actor is
|
/// Following is defined in the sense typically used within Social systems in which the actor is
|
||||||
/// interested in any activity performed by or on the object. The target and origin typically have
|
/// interested in any activity performed by or on the object. The target and origin typically have
|
||||||
/// no defined meaning.
|
/// no defined meaning.
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, Properties)]
|
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub struct Follow {
|
pub struct Follow {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
|
@ -43,34 +43,16 @@ pub struct Follow {
|
||||||
|
|
||||||
/// Adds all valid follow properties to this struct
|
/// Adds all valid follow properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(None)]
|
||||||
pub follow_props: FollowProperties,
|
pub follow_props: FollowProperties,
|
||||||
|
|
||||||
/// Adds all valid object properties to this struct
|
/// Adds all valid object properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Object)]
|
||||||
pub object_props: ObjectProperties,
|
pub object_props: ObjectProperties,
|
||||||
|
|
||||||
/// Adds all valid activity properties to this struct
|
/// Adds all valid activity properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Activity)]
|
||||||
pub activity_props: ActivityProperties,
|
pub activity_props: ActivityProperties,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Object for Follow {}
|
|
||||||
impl ObjectExt for Follow {
|
|
||||||
fn props(&self) -> &ObjectProperties {
|
|
||||||
&self.object_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ObjectProperties {
|
|
||||||
&mut self.object_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
impl Activity for Follow {}
|
|
||||||
impl ActivityExt for Follow {
|
|
||||||
fn props(&self) -> &ActivityProperties {
|
|
||||||
&self.activity_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ActivityProperties {
|
|
||||||
&mut self.activity_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -17,9 +17,9 @@
|
||||||
* along with ActivityStreams Types. If not, see <http://www.gnu.org/licenses/>.
|
* along with ActivityStreams Types. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
use activitystreams_derive::Properties;
|
use activitystreams_derive::PropRefs;
|
||||||
use activitystreams_traits::{Activity, Object};
|
use activitystreams_traits::{Activity, Object};
|
||||||
use serde_derive::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
kind::IgnoreType,
|
kind::IgnoreType,
|
||||||
|
@ -31,7 +31,7 @@ use crate::object::{properties::ObjectProperties, ObjectExt};
|
||||||
/// Indicates that the actor is ignoring the object.
|
/// Indicates that the actor is ignoring the object.
|
||||||
///
|
///
|
||||||
/// The target and origin typically have no defined meaning.
|
/// The target and origin typically have no defined meaning.
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, Properties)]
|
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub struct Ignore {
|
pub struct Ignore {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
|
@ -41,34 +41,16 @@ pub struct Ignore {
|
||||||
|
|
||||||
/// Adds all valid ignore properties to this struct
|
/// Adds all valid ignore properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(None)]
|
||||||
pub ignore_props: IgnoreProperties,
|
pub ignore_props: IgnoreProperties,
|
||||||
|
|
||||||
/// Adds all valid object properties to this struct
|
/// Adds all valid object properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Object)]
|
||||||
pub object_props: ObjectProperties,
|
pub object_props: ObjectProperties,
|
||||||
|
|
||||||
/// Adds all valid activity properties to this struct
|
/// Adds all valid activity properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Activity)]
|
||||||
pub activity_props: ActivityProperties,
|
pub activity_props: ActivityProperties,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Object for Ignore {}
|
|
||||||
impl ObjectExt for Ignore {
|
|
||||||
fn props(&self) -> &ObjectProperties {
|
|
||||||
&self.object_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ObjectProperties {
|
|
||||||
&mut self.object_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
impl Activity for Ignore {}
|
|
||||||
impl ActivityExt for Ignore {
|
|
||||||
fn props(&self) -> &ActivityProperties {
|
|
||||||
&self.activity_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ActivityProperties {
|
|
||||||
&mut self.activity_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -17,9 +17,9 @@
|
||||||
* along with ActivityStreams Types. If not, see <http://www.gnu.org/licenses/>.
|
* along with ActivityStreams Types. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
use activitystreams_derive::Properties;
|
use activitystreams_derive::PropRefs;
|
||||||
use activitystreams_traits::{Activity, Object};
|
use activitystreams_traits::{Activity, Object};
|
||||||
use serde_derive::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
kind::InviteType,
|
kind::InviteType,
|
||||||
|
@ -30,7 +30,7 @@ use crate::object::{properties::ObjectProperties, ObjectExt};
|
||||||
|
|
||||||
/// A specialization of Offer in which the actor is extending an invitation for the object to the
|
/// A specialization of Offer in which the actor is extending an invitation for the object to the
|
||||||
/// target.
|
/// target.
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, Properties)]
|
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub struct Invite {
|
pub struct Invite {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
|
@ -40,34 +40,16 @@ pub struct Invite {
|
||||||
|
|
||||||
/// Adds all valid invite properties to this struct
|
/// Adds all valid invite properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(None)]
|
||||||
pub invite_props: InviteProperties,
|
pub invite_props: InviteProperties,
|
||||||
|
|
||||||
/// Adds all valid object properties to this struct
|
/// Adds all valid object properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Object)]
|
||||||
pub object_props: ObjectProperties,
|
pub object_props: ObjectProperties,
|
||||||
|
|
||||||
/// Adds all valid activity properties to this struct
|
/// Adds all valid activity properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Activity)]
|
||||||
pub activity_props: ActivityProperties,
|
pub activity_props: ActivityProperties,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Object for Invite {}
|
|
||||||
impl ObjectExt for Invite {
|
|
||||||
fn props(&self) -> &ObjectProperties {
|
|
||||||
&self.object_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ObjectProperties {
|
|
||||||
&mut self.object_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
impl Activity for Invite {}
|
|
||||||
impl ActivityExt for Invite {
|
|
||||||
fn props(&self) -> &ActivityProperties {
|
|
||||||
&self.activity_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ActivityProperties {
|
|
||||||
&mut self.activity_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -17,9 +17,9 @@
|
||||||
* along with ActivityStreams Types. If not, see <http://www.gnu.org/licenses/>.
|
* along with ActivityStreams Types. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
use activitystreams_derive::Properties;
|
use activitystreams_derive::PropRefs;
|
||||||
use activitystreams_traits::{Activity, Object};
|
use activitystreams_traits::{Activity, Object};
|
||||||
use serde_derive::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
kind::JoinType,
|
kind::JoinType,
|
||||||
|
@ -31,7 +31,7 @@ use crate::object::{properties::ObjectProperties, ObjectExt};
|
||||||
/// Indicates that the actor has joined the object.
|
/// Indicates that the actor has joined the object.
|
||||||
///
|
///
|
||||||
/// The target and origin typically have no defined meaning
|
/// The target and origin typically have no defined meaning
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, Properties)]
|
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub struct Join {
|
pub struct Join {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
|
@ -41,34 +41,16 @@ pub struct Join {
|
||||||
|
|
||||||
/// Adds all valid join properties to this struct
|
/// Adds all valid join properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(None)]
|
||||||
pub join_props: JoinProperties,
|
pub join_props: JoinProperties,
|
||||||
|
|
||||||
/// Adds all valid object properties to this struct
|
/// Adds all valid object properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Object)]
|
||||||
pub object_props: ObjectProperties,
|
pub object_props: ObjectProperties,
|
||||||
|
|
||||||
/// Adds all valid activity properties to this struct
|
/// Adds all valid activity properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Activity)]
|
||||||
pub activity_props: ActivityProperties,
|
pub activity_props: ActivityProperties,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Object for Join {}
|
|
||||||
impl ObjectExt for Join {
|
|
||||||
fn props(&self) -> &ObjectProperties {
|
|
||||||
&self.object_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ObjectProperties {
|
|
||||||
&mut self.object_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
impl Activity for Join {}
|
|
||||||
impl ActivityExt for Join {
|
|
||||||
fn props(&self) -> &ActivityProperties {
|
|
||||||
&self.activity_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ActivityProperties {
|
|
||||||
&mut self.activity_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -17,9 +17,9 @@
|
||||||
* along with ActivityStreams Types. If not, see <http://www.gnu.org/licenses/>.
|
* along with ActivityStreams Types. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
use activitystreams_derive::Properties;
|
use activitystreams_derive::PropRefs;
|
||||||
use activitystreams_traits::{Activity, Object};
|
use activitystreams_traits::{Activity, Object};
|
||||||
use serde_derive::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
kind::LeaveType,
|
kind::LeaveType,
|
||||||
|
@ -31,7 +31,7 @@ use crate::object::{properties::ObjectProperties, ObjectExt};
|
||||||
/// Indicates that the actor has left the object.
|
/// Indicates that the actor has left the object.
|
||||||
///
|
///
|
||||||
/// The target and origin typically have no meaning.
|
/// The target and origin typically have no meaning.
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, Properties)]
|
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub struct Leave {
|
pub struct Leave {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
|
@ -41,34 +41,16 @@ pub struct Leave {
|
||||||
|
|
||||||
/// Adds all valid leave properties to this struct
|
/// Adds all valid leave properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(None)]
|
||||||
pub leave_props: LeaveProperties,
|
pub leave_props: LeaveProperties,
|
||||||
|
|
||||||
/// Adds all valid object properties to this struct
|
/// Adds all valid object properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Object)]
|
||||||
pub object_props: ObjectProperties,
|
pub object_props: ObjectProperties,
|
||||||
|
|
||||||
/// Adds all valid activity properties to this struct
|
/// Adds all valid activity properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Activity)]
|
||||||
pub activity_props: ActivityProperties,
|
pub activity_props: ActivityProperties,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Object for Leave {}
|
|
||||||
impl ObjectExt for Leave {
|
|
||||||
fn props(&self) -> &ObjectProperties {
|
|
||||||
&self.object_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ObjectProperties {
|
|
||||||
&mut self.object_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
impl Activity for Leave {}
|
|
||||||
impl ActivityExt for Leave {
|
|
||||||
fn props(&self) -> &ActivityProperties {
|
|
||||||
&self.activity_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ActivityProperties {
|
|
||||||
&mut self.activity_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -17,9 +17,9 @@
|
||||||
* along with ActivityStreams Types. If not, see <http://www.gnu.org/licenses/>.
|
* along with ActivityStreams Types. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
use activitystreams_derive::Properties;
|
use activitystreams_derive::PropRefs;
|
||||||
use activitystreams_traits::{Activity, Object};
|
use activitystreams_traits::{Activity, Object};
|
||||||
use serde_derive::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
kind::LikeType,
|
kind::LikeType,
|
||||||
|
@ -31,7 +31,7 @@ use crate::object::{properties::ObjectProperties, ObjectExt};
|
||||||
/// Indicates that the actor likes, recommends or endorses the object.
|
/// Indicates that the actor likes, recommends or endorses the object.
|
||||||
///
|
///
|
||||||
/// The target and origin typically have no defined meaning.
|
/// The target and origin typically have no defined meaning.
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, Properties)]
|
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub struct Like {
|
pub struct Like {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
|
@ -41,34 +41,16 @@ pub struct Like {
|
||||||
|
|
||||||
/// Adds all valid like properties to this struct
|
/// Adds all valid like properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(None)]
|
||||||
pub like_props: LikeProperties,
|
pub like_props: LikeProperties,
|
||||||
|
|
||||||
/// Adds all valid object properties to this struct
|
/// Adds all valid object properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Object)]
|
||||||
pub object_props: ObjectProperties,
|
pub object_props: ObjectProperties,
|
||||||
|
|
||||||
/// Adds all valid activity properties to this struct
|
/// Adds all valid activity properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Activity)]
|
||||||
pub activity_props: ActivityProperties,
|
pub activity_props: ActivityProperties,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Object for Like {}
|
|
||||||
impl ObjectExt for Like {
|
|
||||||
fn props(&self) -> &ObjectProperties {
|
|
||||||
&self.object_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ObjectProperties {
|
|
||||||
&mut self.object_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
impl Activity for Like {}
|
|
||||||
impl ActivityExt for Like {
|
|
||||||
fn props(&self) -> &ActivityProperties {
|
|
||||||
&self.activity_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ActivityProperties {
|
|
||||||
&mut self.activity_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -17,9 +17,9 @@
|
||||||
* along with ActivityStreams Types. If not, see <http://www.gnu.org/licenses/>.
|
* along with ActivityStreams Types. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
use activitystreams_derive::Properties;
|
use activitystreams_derive::PropRefs;
|
||||||
use activitystreams_traits::{Activity, Object};
|
use activitystreams_traits::{Activity, Object};
|
||||||
use serde_derive::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
kind::ListenType,
|
kind::ListenType,
|
||||||
|
@ -29,7 +29,7 @@ use super::{
|
||||||
use crate::object::{properties::ObjectProperties, ObjectExt};
|
use crate::object::{properties::ObjectProperties, ObjectExt};
|
||||||
|
|
||||||
/// Indicates that the actor has listened to the object.
|
/// Indicates that the actor has listened to the object.
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, Properties)]
|
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub struct Listen {
|
pub struct Listen {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
|
@ -39,34 +39,16 @@ pub struct Listen {
|
||||||
|
|
||||||
/// Adds all valid listen properties to this struct
|
/// Adds all valid listen properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(None)]
|
||||||
pub listen_props: ListenProperties,
|
pub listen_props: ListenProperties,
|
||||||
|
|
||||||
/// Adds all valid object properties to this struct
|
/// Adds all valid object properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Object)]
|
||||||
pub object_props: ObjectProperties,
|
pub object_props: ObjectProperties,
|
||||||
|
|
||||||
/// Adds all valid activity properties to this struct
|
/// Adds all valid activity properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Activity)]
|
||||||
pub activity_props: ActivityProperties,
|
pub activity_props: ActivityProperties,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Object for Listen {}
|
|
||||||
impl ObjectExt for Listen {
|
|
||||||
fn props(&self) -> &ObjectProperties {
|
|
||||||
&self.object_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ObjectProperties {
|
|
||||||
&mut self.object_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
impl Activity for Listen {}
|
|
||||||
impl ActivityExt for Listen {
|
|
||||||
fn props(&self) -> &ActivityProperties {
|
|
||||||
&self.activity_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ActivityProperties {
|
|
||||||
&mut self.activity_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -17,9 +17,9 @@
|
||||||
* along with ActivityStreams Types. If not, see <http://www.gnu.org/licenses/>.
|
* along with ActivityStreams Types. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
use activitystreams_derive::Properties;
|
use activitystreams_derive::PropRefs;
|
||||||
use activitystreams_traits::{Activity, Object};
|
use activitystreams_traits::{Activity, Object};
|
||||||
use serde_derive::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
kind::OfferType,
|
kind::OfferType,
|
||||||
|
@ -31,7 +31,7 @@ use crate::object::{properties::ObjectProperties, ObjectExt};
|
||||||
/// Indicates that the actor is offering the object.
|
/// Indicates that the actor is offering the object.
|
||||||
///
|
///
|
||||||
/// If specified, the target indicates the entity to which the object is being offered.
|
/// If specified, the target indicates the entity to which the object is being offered.
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, Properties)]
|
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub struct Offer {
|
pub struct Offer {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
|
@ -41,34 +41,16 @@ pub struct Offer {
|
||||||
|
|
||||||
/// Adds all valid object properties to this struct
|
/// Adds all valid object properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(None)]
|
||||||
pub offer_props: OfferProperties,
|
pub offer_props: OfferProperties,
|
||||||
|
|
||||||
/// Adds all valid object properties to this struct
|
/// Adds all valid object properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Object)]
|
||||||
pub object_props: ObjectProperties,
|
pub object_props: ObjectProperties,
|
||||||
|
|
||||||
/// Adds all valid activity properties to this struct
|
/// Adds all valid activity properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Activity)]
|
||||||
pub activity_props: ActivityProperties,
|
pub activity_props: ActivityProperties,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Object for Offer {}
|
|
||||||
impl ObjectExt for Offer {
|
|
||||||
fn props(&self) -> &ObjectProperties {
|
|
||||||
&self.object_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ObjectProperties {
|
|
||||||
&mut self.object_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
impl Activity for Offer {}
|
|
||||||
impl ActivityExt for Offer {
|
|
||||||
fn props(&self) -> &ActivityProperties {
|
|
||||||
&self.activity_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ActivityProperties {
|
|
||||||
&mut self.activity_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
/*
|
/* This file is part of ActivityStreams Types.
|
||||||
* This file is part of ActivityStreams Types.
|
|
||||||
*
|
*
|
||||||
* Copyright © 2018 Riley Trautman
|
* Copyright © 2018 Riley Trautman
|
||||||
*
|
*
|
||||||
|
@ -27,9 +26,9 @@
|
||||||
//! activity::properties::ActivityProperties,
|
//! activity::properties::ActivityProperties,
|
||||||
//! object::properties::ObjectProperties,
|
//! object::properties::ObjectProperties,
|
||||||
//! };
|
//! };
|
||||||
//! use serde_derive::{Deserialize, Serialize};
|
//! use serde::{Deserialize, Serialize};
|
||||||
//!
|
//!
|
||||||
//! #[derive(Clone, Debug, Serialize, Deserialize)]
|
//! #[derive(Debug, Serialize, Deserialize)]
|
||||||
//! #[serde(rename_all = "camelCase")]
|
//! #[serde(rename_all = "camelCase")]
|
||||||
//! pub struct MyActivity {
|
//! pub struct MyActivity {
|
||||||
//! #[serde(rename = "type")]
|
//! #[serde(rename = "type")]
|
||||||
|
@ -53,400 +52,582 @@
|
||||||
//! # fn main() {}
|
//! # fn main() {}
|
||||||
//! ```
|
//! ```
|
||||||
|
|
||||||
use activitystreams_derive::Properties;
|
use crate::{link::LinkBox, object::ObjectBox, primitives::*};
|
||||||
use activitystreams_traits::{Link, Object};
|
use activitystreams_derive::properties;
|
||||||
use serde_derive::{Deserialize, Serialize};
|
|
||||||
|
|
||||||
/// Activity objects are specializations of the base Object type that provide information about
|
properties! {
|
||||||
/// actions that have either already occurred, are in the process of occurring, or may occur in the
|
Activity {
|
||||||
/// future.
|
docs [
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, Properties)]
|
"Activity objects are specializations of the base Object type that provide information about",
|
||||||
#[serde(rename_all = "camelCase")]
|
"actions that have either already occurred, are in the process of occurring, or may occur in the",
|
||||||
pub struct ActivityProperties {
|
"future.",
|
||||||
/// Describes the result of the activity.
|
],
|
||||||
///
|
|
||||||
/// For instance, if a particular action results in the creation of a new resource, the result
|
|
||||||
/// property can be used to describe that new resource.
|
|
||||||
///
|
|
||||||
/// - Range: `Object` | `Link`
|
|
||||||
/// - Funcitonal: false
|
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
|
||||||
#[activitystreams(ab(Object, Link), concrete(String))]
|
|
||||||
pub result: Option<serde_json::Value>,
|
|
||||||
|
|
||||||
/// Identifies one or more objects used (or to be used) in the completion of an `Activity`.
|
result {
|
||||||
///
|
docs [
|
||||||
/// - Range: `Object` | `Link`
|
"Describes the result of the activity.",
|
||||||
/// - Funcitonal: false
|
"",
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
"For instance, if a particular action results in the creation of a new resource, the result",
|
||||||
#[activitystreams(ab(Object, Link), concrete(String))]
|
"property can be used to describe that new resource.",
|
||||||
pub instrument: Option<serde_json::Value>,
|
"",
|
||||||
|
"- Range: `Object` | `Link`",
|
||||||
|
"- Funcitonal: false",
|
||||||
|
],
|
||||||
|
types [
|
||||||
|
XsdAnyUri,
|
||||||
|
ObjectBox,
|
||||||
|
LinkBox,
|
||||||
|
],
|
||||||
|
},
|
||||||
|
|
||||||
|
instrument {
|
||||||
|
docs [
|
||||||
|
"Identifies one or more objects used (or to be used) in the completion of an `Activity`.",
|
||||||
|
"",
|
||||||
|
"- Range: `Object` | `Link`",
|
||||||
|
"- Funcitonal: false",
|
||||||
|
],
|
||||||
|
types [
|
||||||
|
XsdAnyUri,
|
||||||
|
ObjectBox,
|
||||||
|
LinkBox,
|
||||||
|
],
|
||||||
|
},
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Struct with `actor` and optional `origin` and `target` properties
|
properties! {
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, Properties)]
|
ActorOptOriginAndTarget {
|
||||||
#[serde(rename_all = "camelCase")]
|
docs [ "Struct with `actor` and optional `origin` and `target` properties" ],
|
||||||
pub struct ActorOptOriginAndTarget {
|
|
||||||
/// Describes one or more entities that either performed or are expected to perform the
|
|
||||||
/// activity.
|
|
||||||
///
|
|
||||||
/// Any single activity can have multiple actors. The actor MAY be specified using an indirect
|
|
||||||
/// Link.
|
|
||||||
///
|
|
||||||
/// - Range: `Object` | `Link`
|
|
||||||
/// - Functional: false
|
|
||||||
#[activitystreams(ab(Object, Link), concrete(String))]
|
|
||||||
pub actor: serde_json::Value,
|
|
||||||
|
|
||||||
/// Describes an indirect object of the activity from which the activity is directed.
|
actor {
|
||||||
///
|
docs [
|
||||||
/// The precise meaning of the origin is the object of the English preposition "from". For
|
"Describes one or more entities that either performed or are expected to perform the",
|
||||||
/// instance, in the activity "John moved an item to List B from List A", the origin of the
|
"activity.",
|
||||||
/// activity is "List A".
|
"",
|
||||||
///
|
"Any single activity can have multiple actors. The actor MAY be specified using an indirect",
|
||||||
/// - Range: `Object` | `Link`
|
"Link.",
|
||||||
/// - Functional: false
|
"",
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
"- Range: `Object` | `Link`",
|
||||||
#[activitystreams(ab(Object, Link), concrete(String))]
|
"- Functional: false",
|
||||||
pub origin: Option<serde_json::Value>,
|
],
|
||||||
|
types [
|
||||||
|
XsdAnyUri,
|
||||||
|
ObjectBox,
|
||||||
|
LinkBox,
|
||||||
|
],
|
||||||
|
required
|
||||||
|
},
|
||||||
|
|
||||||
/// Describes the indirect object, or target, of the activity.
|
origin {
|
||||||
///
|
docs [
|
||||||
/// The precise meaning of the target is largely dependent on the type of action being
|
"Describes an indirect object of the activity from which the activity is directed.",
|
||||||
/// described but will often be the object of the English preposition "to". For instance, in
|
"",
|
||||||
/// the activity "John added a movie to his wishlist", the target of the activity is John's
|
"The precise meaning of the origin is the object of the English preposition \"from\". For",
|
||||||
/// wishlist. An activity can have more than one target
|
"instance, in the activity \"John moved an item to List B from List A\", the origin of the",
|
||||||
///
|
"activity is \"List A\".",
|
||||||
/// - Range: `Object` | `Link`
|
"",
|
||||||
/// - Functional: false
|
"- Range: `Object` | `Link`",
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
"- Functional: false",
|
||||||
#[activitystreams(ab(Object, Link), concrete(String))]
|
],
|
||||||
pub target: Option<serde_json::Value>,
|
types [
|
||||||
|
XsdAnyUri,
|
||||||
|
ObjectBox,
|
||||||
|
LinkBox,
|
||||||
|
],
|
||||||
|
},
|
||||||
|
|
||||||
|
target {
|
||||||
|
docs [
|
||||||
|
"Describes the indirect object, or target, of the activity.",
|
||||||
|
"",
|
||||||
|
"The precise meaning of the target is largely dependent on the type of action being",
|
||||||
|
"described but will often be the object of the English preposition \"to\". For instance, in",
|
||||||
|
"the activity \"John added a movie to his wishlist\", the target of the activity is John's",
|
||||||
|
"wishlist. An activity can have more than one target",
|
||||||
|
"",
|
||||||
|
"- Range: `Object` | `Link`",
|
||||||
|
"- Functional: false",
|
||||||
|
],
|
||||||
|
types [
|
||||||
|
XsdAnyUri,
|
||||||
|
ObjectBox,
|
||||||
|
LinkBox,
|
||||||
|
],
|
||||||
|
},
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Struct with `actor` and `object` properties
|
properties! {
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, Properties)]
|
ActorAndObject {
|
||||||
#[serde(rename_all = "camelCase")]
|
docs [ "Struct with `actor` and `object` properties" ],
|
||||||
pub struct ActorAndObject {
|
|
||||||
/// Describes one or more entities that either performed or are expected to perform the
|
|
||||||
/// activity.
|
|
||||||
///
|
|
||||||
/// Any single activity can have multiple actors. The actor MAY be specified using an indirect
|
|
||||||
/// Link.
|
|
||||||
///
|
|
||||||
/// - Range: `Object` | `Link`
|
|
||||||
/// - Functional: false
|
|
||||||
#[activitystreams(ab(Object, Link), concrete(String))]
|
|
||||||
pub actor: serde_json::Value,
|
|
||||||
|
|
||||||
/// When used within an Activity, describes the direct object of the activity.
|
actor {
|
||||||
///
|
docs [
|
||||||
/// For instance, in the activity "John added a movie to his wishlist", the object of the
|
"Describes one or more entities that either performed or are expected to perform the",
|
||||||
/// activity is the movie added.
|
"activity.",
|
||||||
///
|
"",
|
||||||
/// - Range: `Object` | `Link`
|
"Any single activity can have multiple actors. The actor MAY be specified using an indirect",
|
||||||
/// - Functional: false
|
"Link.",
|
||||||
#[activitystreams(ab(Object, Link), concrete(String))]
|
"",
|
||||||
pub object: serde_json::Value,
|
"- Range: `Object` | `Link`",
|
||||||
|
"- Functional: false",
|
||||||
|
],
|
||||||
|
types [
|
||||||
|
XsdAnyUri,
|
||||||
|
ObjectBox,
|
||||||
|
LinkBox,
|
||||||
|
],
|
||||||
|
required,
|
||||||
|
},
|
||||||
|
|
||||||
|
object {
|
||||||
|
docs [
|
||||||
|
"When used within an Activity, describes the direct object of the activity.",
|
||||||
|
"",
|
||||||
|
"For instance, in the activity \"John added a movie to his wishlist\", the object of the",
|
||||||
|
"activity is the movie added.",
|
||||||
|
"",
|
||||||
|
"- Range: `Object` | `Link`",
|
||||||
|
"- Functional: false",
|
||||||
|
],
|
||||||
|
types [
|
||||||
|
XsdAnyUri,
|
||||||
|
ObjectBox,
|
||||||
|
LinkBox,
|
||||||
|
],
|
||||||
|
required,
|
||||||
|
},
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Struct with `actor`, `object`, and `target` properties
|
properties! {
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, Properties)]
|
ActorObjectAndTarget {
|
||||||
#[serde(rename_all = "camelCase")]
|
docs [ "Struct with `actor`, `object`, and `target` properties" ],
|
||||||
pub struct ActorObjectAndTarget {
|
|
||||||
/// Describes one or more entities that either performed or are expected to perform the
|
|
||||||
/// activity.
|
|
||||||
///
|
|
||||||
/// Any single activity can have multiple actors. The actor MAY be specified using an indirect
|
|
||||||
/// Link.
|
|
||||||
///
|
|
||||||
/// - Range: `Object` | `Link`
|
|
||||||
/// - Functional: false
|
|
||||||
#[activitystreams(ab(Object, Link), concrete(String))]
|
|
||||||
pub actor: serde_json::Value,
|
|
||||||
|
|
||||||
/// When used within an Activity, describes the direct object of the activity.
|
actor {
|
||||||
///
|
docs [
|
||||||
/// For instance, in the activity "John added a movie to his wishlist", the object of the
|
"Describes one or more entities that either performed or are expected to perform the",
|
||||||
/// activity is the movie added.
|
"activity.",
|
||||||
///
|
"",
|
||||||
/// - Range: `Object` | `Link`
|
"Any single activity can have multiple actors. The actor MAY be specified using an indirect",
|
||||||
/// - Functional: false
|
"Link.",
|
||||||
#[activitystreams(ab(Object, Link), concrete(String))]
|
"",
|
||||||
pub object: serde_json::Value,
|
"- Range: `Object` | `Link`",
|
||||||
|
"- Functional: false",
|
||||||
|
],
|
||||||
|
types [
|
||||||
|
XsdAnyUri,
|
||||||
|
ObjectBox,
|
||||||
|
LinkBox,
|
||||||
|
],
|
||||||
|
required,
|
||||||
|
},
|
||||||
|
|
||||||
/// Describes the indirect object, or target, of the activity.
|
object {
|
||||||
///
|
docs [
|
||||||
/// The precise meaning of the target is largely dependent on the type of action being
|
"When used within an Activity, describes the direct object of the activity.",
|
||||||
/// described but will often be the object of the English preposition "to". For instance, in
|
"",
|
||||||
/// the activity "John added a movie to his wishlist", the target of the activity is John's
|
"For instance, in the activity \"John added a movie to his wishlist\", the object of the",
|
||||||
/// wishlist. An activity can have more than one target
|
"activity is the movie added.",
|
||||||
///
|
"",
|
||||||
/// - Range: `Object` | `Link`
|
"- Range: `Object` | `Link`",
|
||||||
/// - Functional: false
|
"- Functional: false",
|
||||||
#[activitystreams(ab(Object, Link), concrete(String))]
|
],
|
||||||
pub target: serde_json::Value,
|
types [
|
||||||
|
XsdAnyUri,
|
||||||
|
ObjectBox,
|
||||||
|
LinkBox,
|
||||||
|
],
|
||||||
|
required,
|
||||||
|
},
|
||||||
|
|
||||||
|
target {
|
||||||
|
docs [
|
||||||
|
"Describes the indirect object, or target, of the activity.",
|
||||||
|
"",
|
||||||
|
"The precise meaning of the target is largely dependent on the type of action being",
|
||||||
|
"described but will often be the object of the English preposition \"to\". For instance, in",
|
||||||
|
"the activity \"John added a movie to his wishlist\", the target of the activity is John's",
|
||||||
|
"wishlist. An activity can have more than one target",
|
||||||
|
"",
|
||||||
|
"- Range: `Object` | `Link`",
|
||||||
|
"- Functional: false",
|
||||||
|
],
|
||||||
|
types [
|
||||||
|
XsdAnyUri,
|
||||||
|
ObjectBox,
|
||||||
|
LinkBox,
|
||||||
|
],
|
||||||
|
required,
|
||||||
|
},
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Struct with `actor`, `object`, and optional `target` properties
|
properties! {
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, Properties)]
|
ActorAndObjectOptTarget {
|
||||||
#[serde(rename_all = "camelCase")]
|
docs [ "Struct with `actor`, `object`, and optional `target` properties" ],
|
||||||
pub struct ActorAndObjectOptTarget {
|
|
||||||
/// Describes one or more entities that either performed or are expected to perform the
|
|
||||||
/// activity.
|
|
||||||
///
|
|
||||||
/// Any single activity can have multiple actors. The actor MAY be specified using an indirect
|
|
||||||
/// Link.
|
|
||||||
///
|
|
||||||
/// - Range: `Object` | `Link`
|
|
||||||
/// - Functional: false
|
|
||||||
#[activitystreams(ab(Object, Link), concrete(String))]
|
|
||||||
pub actor: serde_json::Value,
|
|
||||||
|
|
||||||
/// When used within an Activity, describes the direct object of the activity.
|
actor {
|
||||||
///
|
docs [
|
||||||
/// For instance, in the activity "John added a movie to his wishlist", the object of the
|
"Describes one or more entities that either performed or are expected to perform the",
|
||||||
/// activity is the movie added.
|
"activity.",
|
||||||
///
|
"",
|
||||||
/// - Range: `Object` | `Link`
|
"Any single activity can have multiple actors. The actor MAY be specified using an indirect",
|
||||||
/// - Functional: false
|
"Link.",
|
||||||
#[activitystreams(ab(Object, Link), concrete(String))]
|
"",
|
||||||
pub object: serde_json::Value,
|
"- Range: `Object` | `Link`",
|
||||||
|
"- Functional: false",
|
||||||
|
],
|
||||||
|
types [
|
||||||
|
XsdAnyUri,
|
||||||
|
ObjectBox,
|
||||||
|
LinkBox,
|
||||||
|
],
|
||||||
|
required,
|
||||||
|
},
|
||||||
|
|
||||||
/// Describes the indirect object, or target, of the activity.
|
object {
|
||||||
///
|
docs [
|
||||||
/// The precise meaning of the target is largely dependent on the type of action being
|
"When used within an Activity, describes the direct object of the activity.",
|
||||||
/// described but will often be the object of the English preposition "to". For instance, in
|
"",
|
||||||
/// the activity "John added a movie to his wishlist", the target of the activity is John's
|
"For instance, in the activity \"John added a movie to his wishlist\", the object of the",
|
||||||
/// wishlist. An activity can have more than one target
|
"activity is the movie added.",
|
||||||
///
|
"",
|
||||||
/// - Range: `Object` | `Link`
|
"- Range: `Object` | `Link`",
|
||||||
/// - Functional: false
|
"- Functional: false",
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
],
|
||||||
#[activitystreams(ab(Object, Link), concrete(String))]
|
types [
|
||||||
pub target: Option<serde_json::Value>,
|
XsdAnyUri,
|
||||||
|
ObjectBox,
|
||||||
|
LinkBox,
|
||||||
|
],
|
||||||
|
required,
|
||||||
|
},
|
||||||
|
|
||||||
|
target {
|
||||||
|
docs [
|
||||||
|
"Describes the indirect object, or target, of the activity.",
|
||||||
|
"",
|
||||||
|
"The precise meaning of the target is largely dependent on the type of action being",
|
||||||
|
"described but will often be the object of the English preposition \"to\". For instance, in",
|
||||||
|
"the activity \"John added a movie to his wishlist\", the target of the activity is John's",
|
||||||
|
"wishlist. An activity can have more than one target",
|
||||||
|
"",
|
||||||
|
"- Range: `Object` | `Link`",
|
||||||
|
"- Functional: false",
|
||||||
|
],
|
||||||
|
types [
|
||||||
|
XsdAnyUri,
|
||||||
|
ObjectBox,
|
||||||
|
LinkBox,
|
||||||
|
],
|
||||||
|
},
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Struct with `actor`, `object`, and optional `origin` properties
|
properties! {
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, Properties)]
|
ActorAndObjectOptOrigin {
|
||||||
#[serde(rename_all = "camelCase")]
|
docs [ "Struct with `actor`, `object`, and optional `origin` properties" ],
|
||||||
pub struct ActorAndObjectOptOrigin {
|
|
||||||
/// Describes one or more entities that either performed or are expected to perform the
|
|
||||||
/// activity.
|
|
||||||
///
|
|
||||||
/// Any single activity can have multiple actors. The actor MAY be specified using an indirect
|
|
||||||
/// Link.
|
|
||||||
///
|
|
||||||
/// - Range: `Object` | `Link`
|
|
||||||
/// - Functional: false
|
|
||||||
#[activitystreams(ab(Object, Link), concrete(String))]
|
|
||||||
pub actor: serde_json::Value,
|
|
||||||
|
|
||||||
/// When used within an Activity, describes the direct object of the activity.
|
actor {
|
||||||
///
|
docs [
|
||||||
/// For instance, in the activity "John added a movie to his wishlist", the object of the
|
"Describes one or more entities that either performed or are expected to perform the",
|
||||||
/// activity is the movie added.
|
"activity.",
|
||||||
///
|
"",
|
||||||
/// - Range: `Object` | `Link`
|
"Any single activity can have multiple actors. The actor MAY be specified using an indirect",
|
||||||
/// - Functional: false
|
"Link.",
|
||||||
#[activitystreams(ab(Object, Link), concrete(String))]
|
"",
|
||||||
pub object: serde_json::Value,
|
"- Range: `Object` | `Link`",
|
||||||
|
"- Functional: false",
|
||||||
|
],
|
||||||
|
types [
|
||||||
|
XsdAnyUri,
|
||||||
|
ObjectBox,
|
||||||
|
LinkBox,
|
||||||
|
],
|
||||||
|
required,
|
||||||
|
},
|
||||||
|
|
||||||
/// Describes an indirect object of the activity from which the activity is directed.
|
object {
|
||||||
///
|
docs [
|
||||||
/// The precise meaning of the origin is the object of the English preposition "from". For
|
"When used within an Activity, describes the direct object of the activity.",
|
||||||
/// instance, in the activity "John moved an item to List B from List A", the origin of the
|
"",
|
||||||
/// activity is "List A".
|
"For instance, in the activity \"John added a movie to his wishlist\", the object of the",
|
||||||
///
|
"activity is the movie added.",
|
||||||
/// - Range: `Object` | `Link`
|
"",
|
||||||
/// - Functional: false
|
"- Range: `Object` | `Link`",
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
"- Functional: false",
|
||||||
#[activitystreams(ab(Object, Link), concrete(String))]
|
],
|
||||||
pub origin: Option<serde_json::Value>,
|
types [
|
||||||
|
XsdAnyUri,
|
||||||
|
ObjectBox,
|
||||||
|
LinkBox,
|
||||||
|
],
|
||||||
|
required,
|
||||||
|
},
|
||||||
|
|
||||||
|
origin {
|
||||||
|
docs [
|
||||||
|
"Describes an indirect object of the activity from which the activity is directed.",
|
||||||
|
"",
|
||||||
|
"The precise meaning of the origin is the object of the English preposition \"from\". For",
|
||||||
|
"instance, in the activity \"John moved an item to List B from List A\", the origin of the",
|
||||||
|
"activity is \"List A\".",
|
||||||
|
"",
|
||||||
|
"- Range: `Object` | `Link`",
|
||||||
|
"- Functional: false",
|
||||||
|
],
|
||||||
|
types [
|
||||||
|
XsdAnyUri,
|
||||||
|
ObjectBox,
|
||||||
|
LinkBox,
|
||||||
|
],
|
||||||
|
},
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Struct with `actor`, `object`, and optional `origin` and `target` properties
|
properties! {
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, Properties)]
|
ActorAndObjectOptOthers {
|
||||||
#[serde(rename_all = "camelCase")]
|
docs [ "Struct with `actor`, `object`, and optional `origin` and `target` properties" ],
|
||||||
pub struct ActorAndObjectOptOthers {
|
|
||||||
/// Describes one or more entities that either performed or are expected to perform the
|
|
||||||
/// activity.
|
|
||||||
///
|
|
||||||
/// Any single activity can have multiple actors. The actor MAY be specified using an indirect
|
|
||||||
/// Link.
|
|
||||||
///
|
|
||||||
/// - Range: `Object` | `Link`
|
|
||||||
/// - Functional: false
|
|
||||||
#[activitystreams(ab(Object, Link), concrete(String))]
|
|
||||||
pub actor: serde_json::Value,
|
|
||||||
|
|
||||||
/// When used within an Activity, describes the direct object of the activity.
|
actor {
|
||||||
///
|
docs [
|
||||||
/// For instance, in the activity "John added a movie to his wishlist", the object of the
|
"Describes one or more entities that either performed or are expected to perform the",
|
||||||
/// activity is the movie added.
|
"activity.",
|
||||||
///
|
"",
|
||||||
/// - Range: `Object` | `Link`
|
"Any single activity can have multiple actors. The actor MAY be specified using an indirect",
|
||||||
/// - Functional: false
|
"Link.",
|
||||||
#[activitystreams(ab(Object, Link), concrete(String))]
|
"",
|
||||||
pub object: serde_json::Value,
|
"- Range: `Object` | `Link`",
|
||||||
|
"- Functional: false",
|
||||||
|
],
|
||||||
|
types [
|
||||||
|
XsdAnyUri,
|
||||||
|
ObjectBox,
|
||||||
|
LinkBox,
|
||||||
|
],
|
||||||
|
required,
|
||||||
|
},
|
||||||
|
|
||||||
/// Describes an indirect object of the activity from which the activity is directed.
|
object {
|
||||||
///
|
docs [
|
||||||
/// The precise meaning of the origin is the object of the English preposition "from". For
|
"When used within an Activity, describes the direct object of the activity.",
|
||||||
/// instance, in the activity "John moved an item to List B from List A", the origin of the
|
"",
|
||||||
/// activity is "List A".
|
"For instance, in the activity \"John added a movie to his wishlist\", the object of the",
|
||||||
///
|
"activity is the movie added.",
|
||||||
/// - Range: `Object` | `Link`
|
"",
|
||||||
/// - Functional: false
|
"- Range: `Object` | `Link`",
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
"- Functional: false",
|
||||||
#[activitystreams(ab(Object, Link), concrete(String))]
|
],
|
||||||
pub origin: Option<serde_json::Value>,
|
types [
|
||||||
|
XsdAnyUri,
|
||||||
|
ObjectBox,
|
||||||
|
LinkBox,
|
||||||
|
],
|
||||||
|
required,
|
||||||
|
},
|
||||||
|
|
||||||
/// Describes the indirect object, or target, of the activity.
|
origin {
|
||||||
///
|
docs [
|
||||||
/// The precise meaning of the target is largely dependent on the type of action being
|
"Describes an indirect object of the activity from which the activity is directed.",
|
||||||
/// described but will often be the object of the English preposition "to". For instance, in
|
"",
|
||||||
/// the activity "John added a movie to his wishlist", the target of the activity is John's
|
"The precise meaning of the origin is the object of the English preposition \"from\". For",
|
||||||
/// wishlist. An activity can have more than one target
|
"instance, in the activity \"John moved an item to List B from List A\", the origin of the",
|
||||||
///
|
"activity is \"List A\".",
|
||||||
/// - Range: `Object` | `Link`
|
"",
|
||||||
/// - Functional: false
|
"- Range: `Object` | `Link`",
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
"- Functional: false",
|
||||||
#[activitystreams(ab(Object, Link), concrete(String))]
|
],
|
||||||
pub target: Option<serde_json::Value>,
|
types [
|
||||||
|
XsdAnyUri,
|
||||||
|
ObjectBox,
|
||||||
|
LinkBox,
|
||||||
|
],
|
||||||
|
},
|
||||||
|
|
||||||
|
target {
|
||||||
|
docs [
|
||||||
|
"Describes the indirect object, or target, of the activity.",
|
||||||
|
"",
|
||||||
|
"The precise meaning of the target is largely dependent on the type of action being",
|
||||||
|
"described but will often be the object of the English preposition \"to\". For instance, in",
|
||||||
|
"the activity \"John added a movie to his wishlist\", the target of the activity is John's",
|
||||||
|
"wishlist. An activity can have more than one target",
|
||||||
|
"",
|
||||||
|
"- Range: `Object` | `Link`",
|
||||||
|
"- Functional: false",
|
||||||
|
],
|
||||||
|
types [
|
||||||
|
XsdAnyUri,
|
||||||
|
ObjectBox,
|
||||||
|
LinkBox,
|
||||||
|
],
|
||||||
|
},
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Struct with `actor` and `origin` properties
|
properties! {
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, Properties)]
|
ActorAndOrigin {
|
||||||
#[serde(rename_all = "camelCase")]
|
docs [ "Struct with `actor` and `origin` properties" ],
|
||||||
pub struct ActorAndOrigin {
|
|
||||||
/// Describes one or more entities that either performed or are expected to perform the
|
|
||||||
/// activity.
|
|
||||||
///
|
|
||||||
/// Any single activity can have multiple actors. The actor MAY be specified using an indirect
|
|
||||||
/// Link.
|
|
||||||
///
|
|
||||||
/// - Range: `Object` | `Link`
|
|
||||||
/// - Functional: false
|
|
||||||
#[activitystreams(ab(Object, Link), concrete(String))]
|
|
||||||
pub actor: serde_json::Value,
|
|
||||||
|
|
||||||
/// Describes an indirect object of the activity from which the activity is directed.
|
actor {
|
||||||
///
|
docs [
|
||||||
/// The precise meaning of the origin is the object of the English preposition "from". For
|
"Describes one or more entities that either performed or are expected to perform the",
|
||||||
/// instance, in the activity "John moved an item to List B from List A", the origin of the
|
"activity.",
|
||||||
/// activity is "List A".
|
"",
|
||||||
///
|
"Any single activity can have multiple actors. The actor MAY be specified using an indirect",
|
||||||
/// - Range: `Object` | `Link`
|
"Link.",
|
||||||
/// - Functional: false
|
"",
|
||||||
#[activitystreams(ab(Object, Link), concrete(String))]
|
"- Range: `Object` | `Link`",
|
||||||
pub origin: serde_json::Value,
|
"- Functional: false",
|
||||||
|
],
|
||||||
|
types [
|
||||||
|
XsdString,
|
||||||
|
ObjectBox,
|
||||||
|
LinkBox,
|
||||||
|
],
|
||||||
|
required,
|
||||||
|
},
|
||||||
|
|
||||||
|
origin {
|
||||||
|
docs [
|
||||||
|
"Describes an indirect object of the activity from which the activity is directed.",
|
||||||
|
"",
|
||||||
|
"The precise meaning of the origin is the object of the English preposition \"from\". For",
|
||||||
|
"instance, in the activity \"John moved an item to List B from List A\", the origin of the",
|
||||||
|
"activity is \"List A\".",
|
||||||
|
"",
|
||||||
|
"- Range: `Object` | `Link`",
|
||||||
|
"- Functional: false",
|
||||||
|
],
|
||||||
|
types [
|
||||||
|
XsdAnyUri,
|
||||||
|
ObjectBox,
|
||||||
|
LinkBox,
|
||||||
|
],
|
||||||
|
required,
|
||||||
|
},
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Properties for the Accept activity
|
/// Properties for the Accept activity
|
||||||
pub type AcceptProperties = ActorAndObject;
|
pub type AcceptProperties = ActorAndObjectProperties;
|
||||||
|
|
||||||
/// Properties for the Add activity
|
/// Properties for the Add activity
|
||||||
pub type AddProperties = ActorAndObject;
|
pub type AddProperties = ActorAndObjectProperties;
|
||||||
|
|
||||||
/// Properties for the Move activity
|
/// Properties for the Move activity
|
||||||
pub type MoveProperties = ActorAndObjectOptOthers;
|
pub type MoveProperties = ActorAndObjectOptOthersProperties;
|
||||||
|
|
||||||
/// Properties for the Announce activity
|
/// Properties for the Announce activity
|
||||||
pub type AnnounceProperties = ActorAndObjectOptTarget;
|
pub type AnnounceProperties = ActorAndObjectOptTargetProperties;
|
||||||
|
|
||||||
/// Properties for the Arrive activity
|
/// Properties for the Arrive activity
|
||||||
pub type ArriveProperties = ActorAndOrigin;
|
pub type ArriveProperties = ActorAndOriginProperties;
|
||||||
|
|
||||||
/// Properties for the Block activity
|
/// Properties for the Block activity
|
||||||
pub type BlockProperties = ActorAndObject;
|
pub type BlockProperties = ActorAndObjectProperties;
|
||||||
|
|
||||||
/// Properties for the Create activity
|
/// Properties for the Create activity
|
||||||
pub type CreateProperties = ActorAndObject;
|
pub type CreateProperties = ActorAndObjectProperties;
|
||||||
|
|
||||||
/// Properties for the Delete activity
|
/// Properties for the Delete activity
|
||||||
pub type DeleteProperties = ActorAndObjectOptOrigin;
|
pub type DeleteProperties = ActorAndObjectOptOriginProperties;
|
||||||
|
|
||||||
/// Properties for the Dislike activity
|
/// Properties for the Dislike activity
|
||||||
pub type DislikeProperties = ActorAndObject;
|
pub type DislikeProperties = ActorAndObjectProperties;
|
||||||
|
|
||||||
/// Properties for the Flag activity
|
/// Properties for the Flag activity
|
||||||
pub type FlagProperties = ActorAndObject;
|
pub type FlagProperties = ActorAndObjectProperties;
|
||||||
|
|
||||||
/// Properties for the Follow activity
|
/// Properties for the Follow activity
|
||||||
pub type FollowProperties = ActorAndObject;
|
pub type FollowProperties = ActorAndObjectProperties;
|
||||||
|
|
||||||
/// Properties for the Ignore activity
|
/// Properties for the Ignore activity
|
||||||
pub type IgnoreProperties = ActorAndObject;
|
pub type IgnoreProperties = ActorAndObjectProperties;
|
||||||
|
|
||||||
/// Properties for the Invite activity
|
/// Properties for the Invite activity
|
||||||
pub type InviteProperties = ActorObjectAndTarget;
|
pub type InviteProperties = ActorObjectAndTargetProperties;
|
||||||
|
|
||||||
/// Properties for the Join activity
|
/// Properties for the Join activity
|
||||||
pub type JoinProperties = ActorAndObject;
|
pub type JoinProperties = ActorAndObjectProperties;
|
||||||
|
|
||||||
/// Properties for the Leave activity
|
/// Properties for the Leave activity
|
||||||
pub type LeaveProperties = ActorAndObject;
|
pub type LeaveProperties = ActorAndObjectProperties;
|
||||||
|
|
||||||
/// Properties for the Like activity
|
/// Properties for the Like activity
|
||||||
pub type LikeProperties = ActorAndObject;
|
pub type LikeProperties = ActorAndObjectProperties;
|
||||||
|
|
||||||
/// Properties for the Listen activity
|
/// Properties for the Listen activity
|
||||||
pub type ListenProperties = ActorAndObject;
|
pub type ListenProperties = ActorAndObjectProperties;
|
||||||
|
|
||||||
/// Properties for the Offer activity
|
/// Properties for the Offer activity
|
||||||
pub type OfferProperties = ActorAndObjectOptTarget;
|
pub type OfferProperties = ActorAndObjectOptTargetProperties;
|
||||||
|
|
||||||
/// Properties for the Question activity
|
properties! {
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, Properties)]
|
Question {
|
||||||
#[serde(rename_all = "camelCase")]
|
docs [ "Properties for the Question activity" ],
|
||||||
pub struct QuestionProperties {
|
|
||||||
/// Identifies an exclusive option for a Question.
|
|
||||||
///
|
|
||||||
/// Use of `one_of` implies that the Question can have only a single answer. To indicate that a
|
|
||||||
/// `Question` can have multiple answers, use `any_of`.
|
|
||||||
///
|
|
||||||
/// - Range: `Object` | `Link`
|
|
||||||
/// - Functional: false
|
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
|
||||||
#[activitystreams(ab(Object, Link), concrete(String))]
|
|
||||||
pub one_of: Option<serde_json::Value>,
|
|
||||||
|
|
||||||
/// Identifies an inclusive option for a Question.
|
one_of {
|
||||||
///
|
docs [
|
||||||
/// Use of `any_of` implies that the Question can have multiple answers. To indicate that a
|
"Identifies an exclusive option for a Question.",
|
||||||
/// `Question` can have only one answer, use `one_of`.
|
"",
|
||||||
///
|
"Use of `one_of` implies that the Question can have only a single answer. To indicate that a",
|
||||||
/// - Range: `Object` | `Link`
|
"`Question` can have multiple answers, use `any_of`.",
|
||||||
/// - Functional: false
|
"",
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
"- Range: `Object` | `Link`",
|
||||||
#[activitystreams(ab(Object, Link), concrete(String))]
|
"- Functional: false",
|
||||||
pub any_of: Option<serde_json::Value>,
|
],
|
||||||
|
types [
|
||||||
|
XsdAnyUri,
|
||||||
|
ObjectBox,
|
||||||
|
LinkBox,
|
||||||
|
],
|
||||||
|
},
|
||||||
|
|
||||||
|
any_of {
|
||||||
|
docs [
|
||||||
|
"Identifies an inclusive option for a Question.",
|
||||||
|
"",
|
||||||
|
"Use of `any_of` implies that the Question can have multiple answers. To indicate that a",
|
||||||
|
"`Question` can have only one answer, use `one_of`.",
|
||||||
|
"",
|
||||||
|
"- Range: `Object` | `Link`",
|
||||||
|
"- Functional: false",
|
||||||
|
],
|
||||||
|
types [
|
||||||
|
XsdAnyUri,
|
||||||
|
ObjectBox,
|
||||||
|
LinkBox,
|
||||||
|
],
|
||||||
|
},
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Properties for the Read activity
|
/// Properties for the Read activity
|
||||||
pub type ReadProperties = ActorAndObject;
|
pub type ReadProperties = ActorAndObjectProperties;
|
||||||
|
|
||||||
/// Properties for the Reject activity
|
/// Properties for the Reject activity
|
||||||
pub type RejectProperties = ActorAndObject;
|
pub type RejectProperties = ActorAndObjectProperties;
|
||||||
|
|
||||||
/// Properties for the Remove activity
|
/// Properties for the Remove activity
|
||||||
pub type RemoveProperties = ActorAndObjectOptOthers;
|
pub type RemoveProperties = ActorAndObjectOptOthersProperties;
|
||||||
|
|
||||||
/// Properties for the TentativeAccept activity
|
/// Properties for the TentativeAccept activity
|
||||||
pub type TentativeAcceptProperties = ActorAndObject;
|
pub type TentativeAcceptProperties = ActorAndObjectProperties;
|
||||||
|
|
||||||
/// Properties for the TentativeReject activity
|
/// Properties for the TentativeReject activity
|
||||||
pub type TentativeRejectProperties = ActorAndObject;
|
pub type TentativeRejectProperties = ActorAndObjectProperties;
|
||||||
|
|
||||||
/// Properties for the Travel activity
|
/// Properties for the Travel activity
|
||||||
pub type TravelProperties = ActorOptOriginAndTarget;
|
pub type TravelProperties = ActorOptOriginAndTargetProperties;
|
||||||
|
|
||||||
/// Properties for the Undo activity
|
/// Properties for the Undo activity
|
||||||
pub type UndoProperties = ActorAndObject;
|
pub type UndoProperties = ActorAndObjectProperties;
|
||||||
|
|
||||||
/// Properties for the Update activity
|
/// Properties for the Update activity
|
||||||
pub type UpdateProperties = ActorAndObject;
|
pub type UpdateProperties = ActorAndObjectProperties;
|
||||||
|
|
||||||
/// Properties for the View activity
|
/// Properties for the View activity
|
||||||
pub type ViewProperties = ActorAndObject;
|
pub type ViewProperties = ActorAndObjectProperties;
|
||||||
|
|
|
@ -17,9 +17,9 @@
|
||||||
* along with ActivityStreams Types. If not, see <http://www.gnu.org/licenses/>.
|
* along with ActivityStreams Types. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
use activitystreams_derive::Properties;
|
use activitystreams_derive::PropRefs;
|
||||||
use activitystreams_traits::{Activity, IntransitiveActivity, Object};
|
use activitystreams_traits::{Activity, IntransitiveActivity, Object};
|
||||||
use serde_derive::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
kind::QuestionType,
|
kind::QuestionType,
|
||||||
|
@ -36,7 +36,7 @@ use crate::object::{properties::ObjectProperties, ObjectExt};
|
||||||
///
|
///
|
||||||
/// Either of the anyOf and oneOf properties MAY be used to express possible answers, but a
|
/// Either of the anyOf and oneOf properties MAY be used to express possible answers, but a
|
||||||
/// Question object MUST NOT have both properties.
|
/// Question object MUST NOT have both properties.
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, Properties)]
|
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub struct Question {
|
pub struct Question {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
|
@ -46,35 +46,18 @@ pub struct Question {
|
||||||
|
|
||||||
/// Adds all valid question properties to this struct
|
/// Adds all valid question properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(None)]
|
||||||
pub question_props: QuestionProperties,
|
pub question_props: QuestionProperties,
|
||||||
|
|
||||||
/// Adds all valid object properties to this struct
|
/// Adds all valid object properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Object)]
|
||||||
pub object_props: ObjectProperties,
|
pub object_props: ObjectProperties,
|
||||||
|
|
||||||
/// Adds all valid activity properties to this struct
|
/// Adds all valid activity properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Activity)]
|
||||||
pub activity_props: ActivityProperties,
|
pub activity_props: ActivityProperties,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Object for Question {}
|
|
||||||
impl ObjectExt for Question {
|
|
||||||
fn props(&self) -> &ObjectProperties {
|
|
||||||
&self.object_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ObjectProperties {
|
|
||||||
&mut self.object_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
impl Activity for Question {}
|
|
||||||
impl ActivityExt for Question {
|
|
||||||
fn props(&self) -> &ActivityProperties {
|
|
||||||
&self.activity_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ActivityProperties {
|
|
||||||
&mut self.activity_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
impl IntransitiveActivity for Question {}
|
impl IntransitiveActivity for Question {}
|
||||||
|
|
|
@ -17,9 +17,9 @@
|
||||||
* along with ActivityStreams Types. If not, see <http://www.gnu.org/licenses/>.
|
* along with ActivityStreams Types. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
use activitystreams_derive::Properties;
|
use activitystreams_derive::PropRefs;
|
||||||
use activitystreams_traits::{Activity, Object};
|
use activitystreams_traits::{Activity, Object};
|
||||||
use serde_derive::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
kind::ReadType,
|
kind::ReadType,
|
||||||
|
@ -29,7 +29,7 @@ use super::{
|
||||||
use crate::object::{properties::ObjectProperties, ObjectExt};
|
use crate::object::{properties::ObjectProperties, ObjectExt};
|
||||||
|
|
||||||
/// Indicates that the actor has read the object.
|
/// Indicates that the actor has read the object.
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, Properties)]
|
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub struct Read {
|
pub struct Read {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
|
@ -39,34 +39,16 @@ pub struct Read {
|
||||||
|
|
||||||
/// Adds all valid read properties to this struct
|
/// Adds all valid read properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(None)]
|
||||||
pub read_props: ReadProperties,
|
pub read_props: ReadProperties,
|
||||||
|
|
||||||
/// Adds all valid object properties to this struct
|
/// Adds all valid object properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Object)]
|
||||||
pub object_props: ObjectProperties,
|
pub object_props: ObjectProperties,
|
||||||
|
|
||||||
/// Adds all valid activity properties to this struct
|
/// Adds all valid activity properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Activity)]
|
||||||
pub activity_props: ActivityProperties,
|
pub activity_props: ActivityProperties,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Object for Read {}
|
|
||||||
impl ObjectExt for Read {
|
|
||||||
fn props(&self) -> &ObjectProperties {
|
|
||||||
&self.object_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ObjectProperties {
|
|
||||||
&mut self.object_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
impl Activity for Read {}
|
|
||||||
impl ActivityExt for Read {
|
|
||||||
fn props(&self) -> &ActivityProperties {
|
|
||||||
&self.activity_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ActivityProperties {
|
|
||||||
&mut self.activity_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -17,9 +17,9 @@
|
||||||
* along with ActivityStreams Types. If not, see <http://www.gnu.org/licenses/>.
|
* along with ActivityStreams Types. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
use activitystreams_derive::Properties;
|
use activitystreams_derive::PropRefs;
|
||||||
use activitystreams_traits::{Activity, Object};
|
use activitystreams_traits::{Activity, Object};
|
||||||
use serde_derive::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
kind::RejectType,
|
kind::RejectType,
|
||||||
|
@ -31,7 +31,7 @@ use crate::object::{properties::ObjectProperties, ObjectExt};
|
||||||
/// Indicates that the actor is rejecting the object.
|
/// Indicates that the actor is rejecting the object.
|
||||||
///
|
///
|
||||||
/// The target and origin typically have no defined meaning.
|
/// The target and origin typically have no defined meaning.
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, Properties)]
|
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub struct Reject {
|
pub struct Reject {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
|
@ -41,34 +41,16 @@ pub struct Reject {
|
||||||
|
|
||||||
/// Adds all valid reject properties to this struct
|
/// Adds all valid reject properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(None)]
|
||||||
pub reject_props: RejectProperties,
|
pub reject_props: RejectProperties,
|
||||||
|
|
||||||
/// Adds all valid object properties to this struct
|
/// Adds all valid object properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Object)]
|
||||||
pub object_props: ObjectProperties,
|
pub object_props: ObjectProperties,
|
||||||
|
|
||||||
/// Adds all valid activity properties to this struct
|
/// Adds all valid activity properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Activity)]
|
||||||
pub activity_props: ActivityProperties,
|
pub activity_props: ActivityProperties,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Object for Reject {}
|
|
||||||
impl ObjectExt for Reject {
|
|
||||||
fn props(&self) -> &ObjectProperties {
|
|
||||||
&self.object_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ObjectProperties {
|
|
||||||
&mut self.object_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
impl Activity for Reject {}
|
|
||||||
impl ActivityExt for Reject {
|
|
||||||
fn props(&self) -> &ActivityProperties {
|
|
||||||
&self.activity_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ActivityProperties {
|
|
||||||
&mut self.activity_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -17,9 +17,9 @@
|
||||||
* along with ActivityStreams Types. If not, see <http://www.gnu.org/licenses/>.
|
* along with ActivityStreams Types. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
use activitystreams_derive::Properties;
|
use activitystreams_derive::PropRefs;
|
||||||
use activitystreams_traits::{Activity, Object};
|
use activitystreams_traits::{Activity, Object};
|
||||||
use serde_derive::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
kind::RemoveType,
|
kind::RemoveType,
|
||||||
|
@ -31,7 +31,7 @@ use crate::object::{properties::ObjectProperties, ObjectExt};
|
||||||
/// Indicates that the actor is removing the object.
|
/// Indicates that the actor is removing the object.
|
||||||
///
|
///
|
||||||
/// If specified, the origin indicates the context from which the object is being removed.
|
/// If specified, the origin indicates the context from which the object is being removed.
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, Properties)]
|
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub struct Remove {
|
pub struct Remove {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
|
@ -41,34 +41,16 @@ pub struct Remove {
|
||||||
|
|
||||||
/// Adds all valid remove properties to this struct
|
/// Adds all valid remove properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(None)]
|
||||||
pub remove_props: RemoveProperties,
|
pub remove_props: RemoveProperties,
|
||||||
|
|
||||||
/// Adds all valid object properties to this struct
|
/// Adds all valid object properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Object)]
|
||||||
pub object_props: ObjectProperties,
|
pub object_props: ObjectProperties,
|
||||||
|
|
||||||
/// Adds all valid activity properties to this struct
|
/// Adds all valid activity properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Activity)]
|
||||||
pub activity_props: ActivityProperties,
|
pub activity_props: ActivityProperties,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Object for Remove {}
|
|
||||||
impl ObjectExt for Remove {
|
|
||||||
fn props(&self) -> &ObjectProperties {
|
|
||||||
&self.object_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ObjectProperties {
|
|
||||||
&mut self.object_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
impl Activity for Remove {}
|
|
||||||
impl ActivityExt for Remove {
|
|
||||||
fn props(&self) -> &ActivityProperties {
|
|
||||||
&self.activity_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ActivityProperties {
|
|
||||||
&mut self.activity_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -17,9 +17,9 @@
|
||||||
* along with ActivityStreams Types. If not, see <http://www.gnu.org/licenses/>.
|
* along with ActivityStreams Types. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
use activitystreams_derive::Properties;
|
use activitystreams_derive::PropRefs;
|
||||||
use activitystreams_traits::{Activity, Object};
|
use activitystreams_traits::{Activity, Object};
|
||||||
use serde_derive::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
kind::TentativeAcceptType,
|
kind::TentativeAcceptType,
|
||||||
|
@ -29,7 +29,7 @@ use super::{
|
||||||
use crate::object::{properties::ObjectProperties, ObjectExt};
|
use crate::object::{properties::ObjectProperties, ObjectExt};
|
||||||
|
|
||||||
/// A specialization of Accept indicating that the acceptance is tentative.
|
/// A specialization of Accept indicating that the acceptance is tentative.
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, Properties)]
|
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub struct TentativeAccept {
|
pub struct TentativeAccept {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
|
@ -39,34 +39,16 @@ pub struct TentativeAccept {
|
||||||
|
|
||||||
/// Adds all valid tentative_accept properties to this struct
|
/// Adds all valid tentative_accept properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(None)]
|
||||||
pub tentative_accept_props: TentativeAcceptProperties,
|
pub tentative_accept_props: TentativeAcceptProperties,
|
||||||
|
|
||||||
/// Adds all valid object properties to this struct
|
/// Adds all valid object properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Object)]
|
||||||
pub object_props: ObjectProperties,
|
pub object_props: ObjectProperties,
|
||||||
|
|
||||||
/// Adds all valid activity properties to this struct
|
/// Adds all valid activity properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Activity)]
|
||||||
pub activity_props: ActivityProperties,
|
pub activity_props: ActivityProperties,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Object for TentativeAccept {}
|
|
||||||
impl ObjectExt for TentativeAccept {
|
|
||||||
fn props(&self) -> &ObjectProperties {
|
|
||||||
&self.object_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ObjectProperties {
|
|
||||||
&mut self.object_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
impl Activity for TentativeAccept {}
|
|
||||||
impl ActivityExt for TentativeAccept {
|
|
||||||
fn props(&self) -> &ActivityProperties {
|
|
||||||
&self.activity_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ActivityProperties {
|
|
||||||
&mut self.activity_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -17,9 +17,9 @@
|
||||||
* along with ActivityStreams Types. If not, see <http://www.gnu.org/licenses/>.
|
* along with ActivityStreams Types. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
use activitystreams_derive::Properties;
|
use activitystreams_derive::PropRefs;
|
||||||
use activitystreams_traits::{Activity, Object};
|
use activitystreams_traits::{Activity, Object};
|
||||||
use serde_derive::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
kind::TentativeRejectType,
|
kind::TentativeRejectType,
|
||||||
|
@ -29,7 +29,7 @@ use super::{
|
||||||
use crate::object::{properties::ObjectProperties, ObjectExt};
|
use crate::object::{properties::ObjectProperties, ObjectExt};
|
||||||
|
|
||||||
/// A specialization of Reject in which the rejection is considered tentative.
|
/// A specialization of Reject in which the rejection is considered tentative.
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, Properties)]
|
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub struct TentativeReject {
|
pub struct TentativeReject {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
|
@ -39,34 +39,16 @@ pub struct TentativeReject {
|
||||||
|
|
||||||
/// Adds all valid tentative_reject properties to this struct
|
/// Adds all valid tentative_reject properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(None)]
|
||||||
pub tentative_reject_props: TentativeRejectProperties,
|
pub tentative_reject_props: TentativeRejectProperties,
|
||||||
|
|
||||||
/// Adds all valid object properties to this struct
|
/// Adds all valid object properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Object)]
|
||||||
pub object_props: ObjectProperties,
|
pub object_props: ObjectProperties,
|
||||||
|
|
||||||
/// Adds all valid activity properties to this struct
|
/// Adds all valid activity properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Activity)]
|
||||||
pub activity_props: ActivityProperties,
|
pub activity_props: ActivityProperties,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Object for TentativeReject {}
|
|
||||||
impl ObjectExt for TentativeReject {
|
|
||||||
fn props(&self) -> &ObjectProperties {
|
|
||||||
&self.object_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ObjectProperties {
|
|
||||||
&mut self.object_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
impl Activity for TentativeReject {}
|
|
||||||
impl ActivityExt for TentativeReject {
|
|
||||||
fn props(&self) -> &ActivityProperties {
|
|
||||||
&self.activity_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ActivityProperties {
|
|
||||||
&mut self.activity_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -17,9 +17,9 @@
|
||||||
* along with ActivityStreams Types. If not, see <http://www.gnu.org/licenses/>.
|
* along with ActivityStreams Types. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
use activitystreams_derive::Properties;
|
use activitystreams_derive::PropRefs;
|
||||||
use activitystreams_traits::{Activity, IntransitiveActivity, Object};
|
use activitystreams_traits::{Activity, IntransitiveActivity, Object};
|
||||||
use serde_derive::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
kind::TravelType,
|
kind::TravelType,
|
||||||
|
@ -32,7 +32,7 @@ use crate::object::{properties::ObjectProperties, ObjectExt};
|
||||||
///
|
///
|
||||||
/// Travel is an IntransitiveObject whose actor specifies the direct object. If the target or
|
/// Travel is an IntransitiveObject whose actor specifies the direct object. If the target or
|
||||||
/// origin are not specified, either can be determined by context.
|
/// origin are not specified, either can be determined by context.
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, Properties)]
|
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub struct Travel {
|
pub struct Travel {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
|
@ -42,35 +42,18 @@ pub struct Travel {
|
||||||
|
|
||||||
/// Adds all valid travel properties to this struct
|
/// Adds all valid travel properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(None)]
|
||||||
pub travel_props: TravelProperties,
|
pub travel_props: TravelProperties,
|
||||||
|
|
||||||
/// Adds all valid object properties to this struct
|
/// Adds all valid object properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Object)]
|
||||||
pub object_props: ObjectProperties,
|
pub object_props: ObjectProperties,
|
||||||
|
|
||||||
/// Adds all valid activity properties to this struct
|
/// Adds all valid activity properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Activity)]
|
||||||
pub activity_props: ActivityProperties,
|
pub activity_props: ActivityProperties,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Object for Travel {}
|
|
||||||
impl ObjectExt for Travel {
|
|
||||||
fn props(&self) -> &ObjectProperties {
|
|
||||||
&self.object_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ObjectProperties {
|
|
||||||
&mut self.object_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
impl Activity for Travel {}
|
|
||||||
impl ActivityExt for Travel {
|
|
||||||
fn props(&self) -> &ActivityProperties {
|
|
||||||
&self.activity_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ActivityProperties {
|
|
||||||
&mut self.activity_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
impl IntransitiveActivity for Travel {}
|
impl IntransitiveActivity for Travel {}
|
||||||
|
|
|
@ -17,9 +17,9 @@
|
||||||
* along with ActivityStreams Types. If not, see <http://www.gnu.org/licenses/>.
|
* along with ActivityStreams Types. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
use activitystreams_derive::Properties;
|
use activitystreams_derive::PropRefs;
|
||||||
use activitystreams_traits::{Activity, Object};
|
use activitystreams_traits::{Activity, Object};
|
||||||
use serde_derive::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
kind::UndoType,
|
kind::UndoType,
|
||||||
|
@ -35,7 +35,7 @@ use crate::object::{properties::ObjectProperties, ObjectExt};
|
||||||
/// choose to undo that like at some later point in time).
|
/// choose to undo that like at some later point in time).
|
||||||
///
|
///
|
||||||
/// The target and origin typically have no defined meaning.
|
/// The target and origin typically have no defined meaning.
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, Properties)]
|
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub struct Undo {
|
pub struct Undo {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
|
@ -45,34 +45,16 @@ pub struct Undo {
|
||||||
|
|
||||||
/// Adds all valid undo properties to this struct
|
/// Adds all valid undo properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(None)]
|
||||||
pub undo_props: UndoProperties,
|
pub undo_props: UndoProperties,
|
||||||
|
|
||||||
/// Adds all valid object properties to this struct
|
/// Adds all valid object properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Object)]
|
||||||
pub object_props: ObjectProperties,
|
pub object_props: ObjectProperties,
|
||||||
|
|
||||||
/// Adds all valid activity properties to this struct
|
/// Adds all valid activity properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Activity)]
|
||||||
pub activity_props: ActivityProperties,
|
pub activity_props: ActivityProperties,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Object for Undo {}
|
|
||||||
impl ObjectExt for Undo {
|
|
||||||
fn props(&self) -> &ObjectProperties {
|
|
||||||
&self.object_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ObjectProperties {
|
|
||||||
&mut self.object_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
impl Activity for Undo {}
|
|
||||||
impl ActivityExt for Undo {
|
|
||||||
fn props(&self) -> &ActivityProperties {
|
|
||||||
&self.activity_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ActivityProperties {
|
|
||||||
&mut self.activity_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -17,9 +17,9 @@
|
||||||
* along with ActivityStreams Types. If not, see <http://www.gnu.org/licenses/>.
|
* along with ActivityStreams Types. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
use activitystreams_derive::Properties;
|
use activitystreams_derive::PropRefs;
|
||||||
use activitystreams_traits::{Activity, Object};
|
use activitystreams_traits::{Activity, Object};
|
||||||
use serde_derive::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
kind::UpdateType,
|
kind::UpdateType,
|
||||||
|
@ -34,7 +34,7 @@ use crate::object::{properties::ObjectProperties, ObjectExt};
|
||||||
/// of modifications made to object.
|
/// of modifications made to object.
|
||||||
///
|
///
|
||||||
/// The target and origin typically have no defined meaning.
|
/// The target and origin typically have no defined meaning.
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, Properties)]
|
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub struct Update {
|
pub struct Update {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
|
@ -44,34 +44,16 @@ pub struct Update {
|
||||||
|
|
||||||
/// Adds all valid update properties to this struct
|
/// Adds all valid update properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(None)]
|
||||||
pub update_props: UpdateProperties,
|
pub update_props: UpdateProperties,
|
||||||
|
|
||||||
/// Adds all valid object properties to this struct
|
/// Adds all valid object properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Object)]
|
||||||
pub object_props: ObjectProperties,
|
pub object_props: ObjectProperties,
|
||||||
|
|
||||||
/// Adds all valid activity properties to this struct
|
/// Adds all valid activity properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Activity)]
|
||||||
pub activity_props: ActivityProperties,
|
pub activity_props: ActivityProperties,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Object for Update {}
|
|
||||||
impl ObjectExt for Update {
|
|
||||||
fn props(&self) -> &ObjectProperties {
|
|
||||||
&self.object_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ObjectProperties {
|
|
||||||
&mut self.object_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
impl Activity for Update {}
|
|
||||||
impl ActivityExt for Update {
|
|
||||||
fn props(&self) -> &ActivityProperties {
|
|
||||||
&self.activity_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ActivityProperties {
|
|
||||||
&mut self.activity_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -17,9 +17,9 @@
|
||||||
* along with ActivityStreams Types. If not, see <http://www.gnu.org/licenses/>.
|
* along with ActivityStreams Types. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
use activitystreams_derive::Properties;
|
use activitystreams_derive::PropRefs;
|
||||||
use activitystreams_traits::{Activity, Object};
|
use activitystreams_traits::{Activity, Object};
|
||||||
use serde_derive::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
kind::ViewType,
|
kind::ViewType,
|
||||||
|
@ -29,7 +29,7 @@ use super::{
|
||||||
use crate::object::{properties::ObjectProperties, ObjectExt};
|
use crate::object::{properties::ObjectProperties, ObjectExt};
|
||||||
|
|
||||||
/// Indicates that the actor has viewed the object.
|
/// Indicates that the actor has viewed the object.
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, Properties)]
|
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub struct View {
|
pub struct View {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
|
@ -39,34 +39,16 @@ pub struct View {
|
||||||
|
|
||||||
/// Adds all valid view properties to this struct
|
/// Adds all valid view properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(None)]
|
||||||
pub view_props: ViewProperties,
|
pub view_props: ViewProperties,
|
||||||
|
|
||||||
/// Adds all valid object properties to this struct
|
/// Adds all valid object properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Object)]
|
||||||
pub object_props: ObjectProperties,
|
pub object_props: ObjectProperties,
|
||||||
|
|
||||||
/// Adds all valid activity properties to this struct
|
/// Adds all valid activity properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Activity)]
|
||||||
pub activity_props: ActivityProperties,
|
pub activity_props: ActivityProperties,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Object for View {}
|
|
||||||
impl ObjectExt for View {
|
|
||||||
fn props(&self) -> &ObjectProperties {
|
|
||||||
&self.object_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ObjectProperties {
|
|
||||||
&mut self.object_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
impl Activity for View {}
|
|
||||||
impl ActivityExt for View {
|
|
||||||
fn props(&self) -> &ActivityProperties {
|
|
||||||
&self.activity_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ActivityProperties {
|
|
||||||
&mut self.activity_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -19,8 +19,9 @@
|
||||||
|
|
||||||
//! Namespace for Actor types
|
//! Namespace for Actor types
|
||||||
|
|
||||||
|
use activitystreams_derive::PropRefs;
|
||||||
use activitystreams_traits::{Actor, Object};
|
use activitystreams_traits::{Actor, Object};
|
||||||
use serde_derive::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use crate::object::{properties::ObjectProperties, ObjectExt};
|
use crate::object::{properties::ObjectProperties, ObjectExt};
|
||||||
|
|
||||||
|
@ -28,7 +29,7 @@ pub mod kind;
|
||||||
use self::kind::*;
|
use self::kind::*;
|
||||||
|
|
||||||
/// Describes a software application.
|
/// Describes a software application.
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Default, Deserialize, PropRefs, Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub struct Application {
|
pub struct Application {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
|
@ -38,23 +39,14 @@ pub struct Application {
|
||||||
|
|
||||||
/// Adds all valid object properties to this struct
|
/// Adds all valid object properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Object)]
|
||||||
pub object_props: ObjectProperties,
|
pub object_props: ObjectProperties,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Object for Application {}
|
|
||||||
impl ObjectExt for Application {
|
|
||||||
fn props(&self) -> &ObjectProperties {
|
|
||||||
&self.object_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ObjectProperties {
|
|
||||||
&mut self.object_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
impl Actor for Application {}
|
impl Actor for Application {}
|
||||||
|
|
||||||
/// Represents a formal or informal collective of Actors.
|
/// Represents a formal or informal collective of Actors.
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Default, Deserialize, PropRefs, Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub struct Group {
|
pub struct Group {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
|
@ -64,23 +56,14 @@ pub struct Group {
|
||||||
|
|
||||||
/// Adds all valid object properties to this struct
|
/// Adds all valid object properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Object)]
|
||||||
pub object_props: ObjectProperties,
|
pub object_props: ObjectProperties,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Object for Group {}
|
|
||||||
impl ObjectExt for Group {
|
|
||||||
fn props(&self) -> &ObjectProperties {
|
|
||||||
&self.object_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ObjectProperties {
|
|
||||||
&mut self.object_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
impl Actor for Group {}
|
impl Actor for Group {}
|
||||||
|
|
||||||
/// Represents an organization.
|
/// Represents an organization.
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Default, Deserialize, PropRefs, Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub struct Organization {
|
pub struct Organization {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
|
@ -90,23 +73,14 @@ pub struct Organization {
|
||||||
|
|
||||||
/// Adds all valid object properties to this struct
|
/// Adds all valid object properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Object)]
|
||||||
pub object_props: ObjectProperties,
|
pub object_props: ObjectProperties,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Object for Organization {}
|
|
||||||
impl ObjectExt for Organization {
|
|
||||||
fn props(&self) -> &ObjectProperties {
|
|
||||||
&self.object_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ObjectProperties {
|
|
||||||
&mut self.object_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
impl Actor for Organization {}
|
impl Actor for Organization {}
|
||||||
|
|
||||||
/// Represents an individual person.
|
/// Represents an individual person.
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Default, Deserialize, PropRefs, Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub struct Person {
|
pub struct Person {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
|
@ -116,23 +90,14 @@ pub struct Person {
|
||||||
|
|
||||||
/// Adds all valid object properties to this struct
|
/// Adds all valid object properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Object)]
|
||||||
pub object_props: ObjectProperties,
|
pub object_props: ObjectProperties,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Object for Person {}
|
|
||||||
impl ObjectExt for Person {
|
|
||||||
fn props(&self) -> &ObjectProperties {
|
|
||||||
&self.object_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ObjectProperties {
|
|
||||||
&mut self.object_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
impl Actor for Person {}
|
impl Actor for Person {}
|
||||||
|
|
||||||
/// Represents a service of any kind.
|
/// Represents a service of any kind.
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Default, Deserialize, PropRefs, Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub struct Service {
|
pub struct Service {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
|
@ -142,17 +107,8 @@ pub struct Service {
|
||||||
|
|
||||||
/// Adds all valid object properties to this struct
|
/// Adds all valid object properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Object)]
|
||||||
pub object_props: ObjectProperties,
|
pub object_props: ObjectProperties,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Object for Service {}
|
|
||||||
impl ObjectExt for Service {
|
|
||||||
fn props(&self) -> &ObjectProperties {
|
|
||||||
&self.object_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ObjectProperties {
|
|
||||||
&mut self.object_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
impl Actor for Service {}
|
impl Actor for Service {}
|
||||||
|
|
|
@ -19,9 +19,9 @@
|
||||||
|
|
||||||
//! Namespace for Collection types
|
//! Namespace for Collection types
|
||||||
|
|
||||||
use activitystreams_derive::Properties;
|
use activitystreams_derive::PropRefs;
|
||||||
use activitystreams_traits::{Collection, CollectionPage, Object};
|
use activitystreams_traits::{Collection, CollectionPage, Object};
|
||||||
use serde_derive::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use crate::object::{properties::ObjectProperties, ObjectExt};
|
use crate::object::{properties::ObjectProperties, ObjectExt};
|
||||||
|
|
||||||
|
@ -46,8 +46,16 @@ pub trait CollectionPageExt: CollectionPage {
|
||||||
fn props_mut(&mut self) -> &mut CollectionPageProperties;
|
fn props_mut(&mut self) -> &mut CollectionPageProperties;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Deserialize, Serialize)]
|
||||||
|
#[serde(transparent)]
|
||||||
|
pub struct CollectionBox(pub Box<dyn Object>);
|
||||||
|
|
||||||
|
#[derive(Debug, Deserialize, Serialize)]
|
||||||
|
#[serde(transparent)]
|
||||||
|
pub struct CollectionPageBox(pub Box<dyn Object>);
|
||||||
|
|
||||||
/// The default `Collection` type.
|
/// The default `Collection` type.
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, Properties)]
|
#[derive(Clone, Debug, Default, Deserialize, PropRefs, Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub struct UnorderedCollection {
|
pub struct UnorderedCollection {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
|
@ -57,37 +65,18 @@ pub struct UnorderedCollection {
|
||||||
|
|
||||||
/// Adds all valid object properties to this struct
|
/// Adds all valid object properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Object)]
|
||||||
pub object_props: ObjectProperties,
|
pub object_props: ObjectProperties,
|
||||||
|
|
||||||
/// Adds all valid collection properties to this struct
|
/// Adds all valid collection properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Collection)]
|
||||||
pub collection_props: CollectionProperties,
|
pub collection_props: CollectionProperties,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Object for UnorderedCollection {}
|
|
||||||
impl ObjectExt for UnorderedCollection {
|
|
||||||
fn props(&self) -> &ObjectProperties {
|
|
||||||
&self.object_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ObjectProperties {
|
|
||||||
&mut self.object_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
impl Collection for UnorderedCollection {}
|
|
||||||
impl CollectionExt for UnorderedCollection {
|
|
||||||
fn props(&self) -> &CollectionProperties {
|
|
||||||
&self.collection_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut CollectionProperties {
|
|
||||||
&mut self.collection_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// A subtype of `Collection` in which members of the logical collection are assumed to always be
|
/// A subtype of `Collection` in which members of the logical collection are assumed to always be
|
||||||
/// strictly ordered.
|
/// strictly ordered.
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, Properties)]
|
#[derive(Clone, Debug, Default, Deserialize, PropRefs, Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub struct OrderedCollection {
|
pub struct OrderedCollection {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
|
@ -97,36 +86,17 @@ pub struct OrderedCollection {
|
||||||
|
|
||||||
/// Adds all valid object properties to this struct
|
/// Adds all valid object properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Object)]
|
||||||
pub object_props: ObjectProperties,
|
pub object_props: ObjectProperties,
|
||||||
|
|
||||||
/// Adds all valid collection properties to this struct
|
/// Adds all valid collection properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Collection)]
|
||||||
pub collection_props: CollectionProperties,
|
pub collection_props: CollectionProperties,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Object for OrderedCollection {}
|
|
||||||
impl ObjectExt for OrderedCollection {
|
|
||||||
fn props(&self) -> &ObjectProperties {
|
|
||||||
&self.object_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ObjectProperties {
|
|
||||||
&mut self.object_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
impl Collection for OrderedCollection {}
|
|
||||||
impl CollectionExt for OrderedCollection {
|
|
||||||
fn props(&self) -> &CollectionProperties {
|
|
||||||
&self.collection_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut CollectionProperties {
|
|
||||||
&mut self.collection_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Used to represent distinct subsets of items from a `Collection`.
|
/// Used to represent distinct subsets of items from a `Collection`.
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, Properties)]
|
#[derive(Clone, Debug, Default, Deserialize, PropRefs, Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub struct UnorderedCollectionPage {
|
pub struct UnorderedCollectionPage {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
|
@ -136,50 +106,22 @@ pub struct UnorderedCollectionPage {
|
||||||
|
|
||||||
/// Adds all valid object properties to this struct
|
/// Adds all valid object properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Object)]
|
||||||
pub object_props: ObjectProperties,
|
pub object_props: ObjectProperties,
|
||||||
|
|
||||||
/// Adds all valid collection properties to this struct
|
/// Adds all valid collection properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Collection)]
|
||||||
pub collection_props: CollectionProperties,
|
pub collection_props: CollectionProperties,
|
||||||
|
|
||||||
/// Adds all valid collection page properties to this struct
|
/// Adds all valid collection page properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(CollectionPage)]
|
||||||
pub collection_page_props: CollectionPageProperties,
|
pub collection_page_props: CollectionPageProperties,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Object for UnorderedCollectionPage {}
|
|
||||||
impl ObjectExt for UnorderedCollectionPage {
|
|
||||||
fn props(&self) -> &ObjectProperties {
|
|
||||||
&self.object_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ObjectProperties {
|
|
||||||
&mut self.object_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
impl Collection for UnorderedCollectionPage {}
|
|
||||||
impl CollectionExt for UnorderedCollectionPage {
|
|
||||||
fn props(&self) -> &CollectionProperties {
|
|
||||||
&self.collection_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut CollectionProperties {
|
|
||||||
&mut self.collection_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
impl CollectionPage for UnorderedCollectionPage {}
|
|
||||||
impl CollectionPageExt for UnorderedCollectionPage {
|
|
||||||
fn props(&self) -> &CollectionPageProperties {
|
|
||||||
&self.collection_page_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut CollectionPageProperties {
|
|
||||||
&mut self.collection_page_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Used to represent ordered subsets of items from an `OrderedCollection`.
|
/// Used to represent ordered subsets of items from an `OrderedCollection`.
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, Properties)]
|
#[derive(Clone, Debug, Default, Deserialize, PropRefs, Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub struct OrderedCollectionPage {
|
pub struct OrderedCollectionPage {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
|
@ -189,48 +131,97 @@ pub struct OrderedCollectionPage {
|
||||||
|
|
||||||
/// Adds all valid object properties to this struct
|
/// Adds all valid object properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Object)]
|
||||||
pub object_props: ObjectProperties,
|
pub object_props: ObjectProperties,
|
||||||
|
|
||||||
/// Adds all valid collection properties to this struct
|
/// Adds all valid collection properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Collection)]
|
||||||
pub collection_props: CollectionProperties,
|
pub collection_props: CollectionProperties,
|
||||||
|
|
||||||
/// Adds all valid collection page properties to this struct
|
/// Adds all valid collection page properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(CollectionPage)]
|
||||||
pub collection_page_props: CollectionPageProperties,
|
pub collection_page_props: CollectionPageProperties,
|
||||||
|
|
||||||
/// Adds all valid ordered collection page properties to this struct
|
/// Adds all valid ordered collection page properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(None)]
|
||||||
pub ordered_collection_page_props: OrderedCollectionPageProperties,
|
pub ordered_collection_page_props: OrderedCollectionPageProperties,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Object for OrderedCollectionPage {}
|
impl CollectionBox {
|
||||||
impl ObjectExt for OrderedCollectionPage {
|
pub fn is<T>(&self) -> bool
|
||||||
fn props(&self) -> &ObjectProperties {
|
where
|
||||||
&self.object_props
|
T: Collection + 'static,
|
||||||
|
{
|
||||||
|
self.0.as_any().is::<T>()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut ObjectProperties {
|
pub fn downcast_ref<T>(&self) -> Option<&T>
|
||||||
&mut self.object_props
|
where
|
||||||
}
|
T: Collection + 'static,
|
||||||
}
|
{
|
||||||
impl Collection for OrderedCollectionPage {}
|
self.0.as_any().downcast_ref()
|
||||||
impl CollectionExt for OrderedCollectionPage {
|
|
||||||
fn props(&self) -> &CollectionProperties {
|
|
||||||
&self.collection_props
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut CollectionProperties {
|
pub fn downcast_mut<T>(&mut self) -> Option<&mut T>
|
||||||
&mut self.collection_props
|
where
|
||||||
|
T: Collection + 'static,
|
||||||
|
{
|
||||||
|
self.0.as_any_mut().downcast_mut()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
impl CollectionPage for OrderedCollectionPage {}
|
|
||||||
impl CollectionPageExt for OrderedCollectionPage {
|
|
||||||
fn props(&self) -> &CollectionPageProperties {
|
|
||||||
&self.collection_page_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut CollectionPageProperties {
|
impl CollectionPageBox {
|
||||||
&mut self.collection_page_props
|
pub fn is<T>(&self) -> bool
|
||||||
|
where
|
||||||
|
T: CollectionPage + 'static,
|
||||||
|
{
|
||||||
|
self.0.as_any().is::<T>()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn downcast_ref<T>(&self) -> Option<&T>
|
||||||
|
where
|
||||||
|
T: CollectionPage + 'static,
|
||||||
|
{
|
||||||
|
self.0.as_any().downcast_ref()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn downcast_mut<T>(&mut self) -> Option<&mut T>
|
||||||
|
where
|
||||||
|
T: CollectionPage + 'static,
|
||||||
|
{
|
||||||
|
self.0.as_any_mut().downcast_mut()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Clone for CollectionBox {
|
||||||
|
fn clone(&self) -> Self {
|
||||||
|
CollectionBox(self.0.duplicate())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Clone for CollectionPageBox {
|
||||||
|
fn clone(&self) -> Self {
|
||||||
|
CollectionPageBox(self.0.duplicate())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<T> From<T> for CollectionBox
|
||||||
|
where
|
||||||
|
T: Collection + 'static,
|
||||||
|
{
|
||||||
|
fn from(t: T) -> Self {
|
||||||
|
CollectionBox(Box::new(t))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<T> From<T> for CollectionPageBox
|
||||||
|
where
|
||||||
|
T: CollectionPage + 'static,
|
||||||
|
{
|
||||||
|
fn from(t: T) -> Self {
|
||||||
|
CollectionPageBox(Box::new(t))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,15 +27,15 @@
|
||||||
//! collection::properties::CollectionProperties,
|
//! collection::properties::CollectionProperties,
|
||||||
//! object::properties::ObjectProperties,
|
//! object::properties::ObjectProperties,
|
||||||
//! };
|
//! };
|
||||||
//! use serde_derive::{Deserialize, Serialize};
|
//! use serde::{Deserialize, Serialize};
|
||||||
//!
|
//!
|
||||||
//! #[derive(Clone, Debug, Serialize, Deserialize)]
|
//! #[derive(Debug, Serialize, Deserialize)]
|
||||||
//! #[serde(rename_all = "camelCase")]
|
//! #[serde(rename_all = "camelCase")]
|
||||||
//! pub struct MyCollection {
|
//! pub struct MyCollection {
|
||||||
//! #[serde(rename = "type")]
|
//! #[serde(rename = "type")]
|
||||||
//! pub kind: String,
|
//! pub kind: String,
|
||||||
//!
|
//!
|
||||||
//! /// Define a require property for the MyCollection type
|
//! docs("Define a require property for the MyCollection type"),
|
||||||
//! pub my_property: String,
|
//! pub my_property: String,
|
||||||
//!
|
//!
|
||||||
//! #[serde(flatten)]
|
//! #[serde(flatten)]
|
||||||
|
@ -51,105 +51,173 @@
|
||||||
//! # fn main() {}
|
//! # fn main() {}
|
||||||
//! ```
|
//! ```
|
||||||
|
|
||||||
use activitystreams_derive::Properties;
|
use crate::{
|
||||||
use activitystreams_traits::{Collection, CollectionPage, Link, Object};
|
collection::{CollectionBox, CollectionPageBox},
|
||||||
use serde_derive::{Deserialize, Serialize};
|
link::LinkBox,
|
||||||
|
object::ObjectBox,
|
||||||
|
primitives::*,
|
||||||
|
};
|
||||||
|
use activitystreams_derive::properties;
|
||||||
|
|
||||||
/// `Collection` objects are a specialization of the base `Object` that serve as a container for
|
properties! {
|
||||||
/// other `Objects` or `Links`.
|
Collection {
|
||||||
///
|
docs [
|
||||||
/// The items within a `Collection` can be ordered or unordered. The `OrderedCollection` type MAY be
|
"`Collection` objects are a specialization of the base `Object` that serve as a container for",
|
||||||
/// used to identify a `Collection` whose items are always ordered. In the JSON serialization, the
|
"other `Objects` or `Links`.",
|
||||||
/// unordered items of a `Collection` are represented using the `items` property while ordered items
|
"",
|
||||||
/// are represented using the `ordered_items` property.
|
"The items within a `Collection` can be ordered or unordered. The `OrderedCollection` type MAY be",
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, Properties)]
|
"used to identify a `Collection` whose items are always ordered. In the JSON serialization, the",
|
||||||
#[serde(rename_all = "camelCase")]
|
"unordered items of a `Collection` are represented using the `items` property while ordered items",
|
||||||
pub struct CollectionProperties {
|
"are represented using the `ordered_items` property.",
|
||||||
/// Identifies the items contained in a collection. The items might be ordered or unordered.
|
],
|
||||||
///
|
|
||||||
/// - Range: `Object` | `Link` | Ordered List of [ `Object` | `Link` ]
|
|
||||||
/// - Functional: false
|
|
||||||
#[activitystreams(ab(Object, Link), concrete(String))]
|
|
||||||
pub items: serde_json::Value,
|
|
||||||
|
|
||||||
/// A non-negative integer specifying the total number of objects contained by the logical view
|
items {
|
||||||
/// of the collection.
|
docs [
|
||||||
///
|
"Identifies the items contained in a collection. The items might be ordered or unordered.",
|
||||||
/// This number might not reflect the actual number of items serialized within the `Collection`
|
"",
|
||||||
/// object instance.
|
"- Range: `Object` | `Link` | Ordered List of [ `Object` | `Link` ]",
|
||||||
///
|
"- Functional: false",
|
||||||
/// - Range: `xsd:nonNegativeInteger`
|
],
|
||||||
/// - Functional: true
|
types [
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
XsdString,
|
||||||
#[activitystreams(concrete(u64), functional)]
|
ObjectBox,
|
||||||
pub total_items: Option<serde_json::Value>,
|
LinkBox,
|
||||||
|
],
|
||||||
|
required,
|
||||||
|
},
|
||||||
|
|
||||||
/// In a paged `Collection`, indicates the page that contains the most recently updated member
|
total_items {
|
||||||
/// items.
|
docs [
|
||||||
///
|
"A non-negative integer specifying the total number of objects contained by the logical view",
|
||||||
/// - Range: `CollectionPage` | `Link`
|
"of the collection.",
|
||||||
/// - Functional: true
|
"",
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
"This number might not reflect the actual number of items serialized within the `Collection`",
|
||||||
#[activitystreams(ab(Link, CollectionPage), concrete(String), functional)]
|
"object instance.",
|
||||||
pub current: Option<serde_json::Value>,
|
"",
|
||||||
|
"- Range: `xsd:nonNegativeInteger`",
|
||||||
|
"- Functional: true",
|
||||||
|
],
|
||||||
|
types [
|
||||||
|
XsdNonNegativeInteger,
|
||||||
|
],
|
||||||
|
functional,
|
||||||
|
},
|
||||||
|
|
||||||
/// In a paged `Collection`, indicates the furthest preceeding page of items in the collection.
|
current {
|
||||||
///
|
docs [
|
||||||
/// - Range: `CollectionPage` | `Link`
|
"In a paged `Collection`, indicates the page that contains the most recently updated member",
|
||||||
/// - Functional: true
|
"items.",
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
"",
|
||||||
#[activitystreams(ab(Link, CollectionPage), concrete(String), functional)]
|
"- Range: `CollectionPage` | `Link`",
|
||||||
pub first: Option<serde_json::Value>,
|
"- Functional: true",
|
||||||
|
],
|
||||||
|
types [
|
||||||
|
XsdAnyUri,
|
||||||
|
LinkBox,
|
||||||
|
CollectionPageBox,
|
||||||
|
],
|
||||||
|
functional,
|
||||||
|
},
|
||||||
|
|
||||||
/// In a paged `Collection`, indicates the furthest proceeding page of the collection.
|
first {
|
||||||
///
|
docs [
|
||||||
/// - Range: `CollectionPage` | `Link`
|
"In a paged `Collection`, indicates the furthest preceeding page of items in the collection.",
|
||||||
/// - Functional: true
|
"",
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
"- Range: `CollectionPage` | `Link`",
|
||||||
#[activitystreams(ab(Link, CollectionPage), concrete(String), functional)]
|
"- Functional: true",
|
||||||
pub last: Option<serde_json::Value>,
|
],
|
||||||
|
types [
|
||||||
|
XsdAnyUri,
|
||||||
|
LinkBox,
|
||||||
|
CollectionPageBox,
|
||||||
|
],
|
||||||
|
functional,
|
||||||
|
},
|
||||||
|
|
||||||
|
last {
|
||||||
|
docs [
|
||||||
|
"In a paged `Collection`, indicates the furthest proceeding page of the collection.",
|
||||||
|
"",
|
||||||
|
"- Range: `CollectionPage` | `Link`",
|
||||||
|
"- Functional: true",
|
||||||
|
],
|
||||||
|
types [
|
||||||
|
XsdAnyUri,
|
||||||
|
LinkBox,
|
||||||
|
CollectionPageBox,
|
||||||
|
],
|
||||||
|
},
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// The `CollectionPage` type extends from the base `Collection` type and inherits all of it's
|
properties! {
|
||||||
/// properties.
|
CollectionPage {
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, Properties)]
|
docs [
|
||||||
#[serde(rename_all = "camelCase")]
|
"The `CollectionPage` type extends from the base `Collection` type and inherits all of it's",
|
||||||
pub struct CollectionPageProperties {
|
"properties.",
|
||||||
/// Identifies the `Collection` to which a `CollectionPage` objects items belong.
|
],
|
||||||
///
|
|
||||||
/// Range: `Collection` | `Link`
|
|
||||||
/// Functional: true
|
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
|
||||||
#[activitystreams(ab(Link, Collection), concrete(String), functional)]
|
|
||||||
pub part_of: Option<serde_json::Value>,
|
|
||||||
|
|
||||||
/// In a paged `Collection`, indicates the next page of items.
|
part_of {
|
||||||
///
|
docs [
|
||||||
/// - Range: `CollectionPage` | `Link`
|
"Identifies the `Collection` to which a `CollectionPage` objects items belong.",
|
||||||
/// - Functional: true
|
"",
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
"Range: `Collection` | `Link`",
|
||||||
#[activitystreams(ab(Link, CollectionPage), concrete(String), functional)]
|
"Functional: true",
|
||||||
pub next: Option<serde_json::Value>,
|
],
|
||||||
|
types [
|
||||||
|
XsdAnyUri,
|
||||||
|
LinkBox,
|
||||||
|
CollectionBox,
|
||||||
|
],
|
||||||
|
functional,
|
||||||
|
},
|
||||||
|
|
||||||
/// In a paged `Collection`, identifies the previous page of items.
|
next {
|
||||||
///
|
docs [
|
||||||
/// - Range: `CollectionPage` | `Link`
|
"In a paged `Collection`, indicates the next page of items.",
|
||||||
/// - Functional: true
|
"",
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
"- Range: `CollectionPage` | `Link`",
|
||||||
#[activitystreams(ab(Link, CollectionPage), concrete(String), functional)]
|
"- Functional: true",
|
||||||
pub prev: Option<serde_json::Value>,
|
],
|
||||||
|
types [
|
||||||
|
XsdAnyUri,
|
||||||
|
LinkBox,
|
||||||
|
CollectionPageBox,
|
||||||
|
],
|
||||||
|
functional,
|
||||||
|
},
|
||||||
|
|
||||||
|
prev {
|
||||||
|
docs [
|
||||||
|
"In a paged `Collection`, identifies the previous page of items.",
|
||||||
|
"",
|
||||||
|
"- Range: `CollectionPage` | `Link`",
|
||||||
|
"- Functional: true",
|
||||||
|
],
|
||||||
|
types [
|
||||||
|
XsdAnyUri,
|
||||||
|
LinkBox,
|
||||||
|
CollectionPageBox,
|
||||||
|
],
|
||||||
|
functional,
|
||||||
|
},
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// The OrderedCollectionPage type MAY be used to identify a page whose items are strictly ordered.
|
properties! {
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, Properties)]
|
OrderedCollectionPage {
|
||||||
#[serde(rename_all = "camelCase")]
|
docs ["The OrderedCollectionPage type MAY be used to identify a page whose items are strictly ordered." ],
|
||||||
pub struct OrderedCollectionPageProperties {
|
start_index {
|
||||||
/// A non-negative integer value identifying the relative position within the logical view of a
|
docs ["A non-negative integer value identifying the relative position within the logical view of a",
|
||||||
/// strictly ordered collection.
|
"strictly ordered collection.",
|
||||||
///
|
"",
|
||||||
/// - Range: `xsd:nonNegativeInteger`
|
"- Range: `xsd:nonNegativeInteger`",
|
||||||
/// - Functional: true
|
"- Functional: true",
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
],
|
||||||
#[activitystreams(concrete(u64), functional)]
|
types [
|
||||||
pub start_index: Option<serde_json::Value>,
|
XsdNonNegativeInteger,
|
||||||
|
],
|
||||||
|
functional,
|
||||||
|
},
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,151 +0,0 @@
|
||||||
/*
|
|
||||||
* This file is part of ActivityStreams Types.
|
|
||||||
*
|
|
||||||
* Copyright © 2018 Riley Trautman
|
|
||||||
*
|
|
||||||
* ActivityStreams Types is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* ActivityStreams Types is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with ActivityStreams Types. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
//! A collection of simple types for extending the ActivityStreams Types base types
|
|
||||||
|
|
||||||
use serde::{de::DeserializeOwned, ser};
|
|
||||||
|
|
||||||
use activitystreams_traits::{
|
|
||||||
Activity, Actor, Collection, CollectionPage, IntransitiveActivity, Link, Object,
|
|
||||||
};
|
|
||||||
use serde_derive::{Deserialize, Serialize};
|
|
||||||
|
|
||||||
/// A custom type extending Link
|
|
||||||
///
|
|
||||||
/// CustomLink allows for providing a pre-defined Link type, and a set of extending properties, and
|
|
||||||
/// treating those two items as a single Link type.
|
|
||||||
///
|
|
||||||
/// ## Example
|
|
||||||
/// ```rust
|
|
||||||
/// use activitystreams_types::{
|
|
||||||
/// CustomLink,
|
|
||||||
/// link::Mention,
|
|
||||||
/// };
|
|
||||||
///
|
|
||||||
/// struct MyProps {
|
|
||||||
/// some_prop: String,
|
|
||||||
/// }
|
|
||||||
///
|
|
||||||
/// fn main() {
|
|
||||||
/// let mention = Mention::default();
|
|
||||||
/// let extended_mention = CustomLink::new(mention, MyProps { some_prop: "hey".to_owned() });
|
|
||||||
/// }
|
|
||||||
/// ```
|
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
pub struct CustomLink<C, L> {
|
|
||||||
#[serde(flatten)]
|
|
||||||
pub link: L,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
pub custom_props: C,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<C, L: Link> CustomLink<C, L> {
|
|
||||||
pub fn new(link: L, custom_props: C) -> Self {
|
|
||||||
CustomLink { link, custom_props }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<C, L> Link for CustomLink<C, L>
|
|
||||||
where
|
|
||||||
C: DeserializeOwned + ser::Serialize,
|
|
||||||
L: Link,
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
/// A custom type extending Object
|
|
||||||
///
|
|
||||||
/// CustomObject allows for providing a pre-defined Link type, and a set of extending properties,
|
|
||||||
/// and treating those two items as a single Object type.
|
|
||||||
///
|
|
||||||
/// This type can also be used to extend any type deriving from Object, such as Actor, Activity, or
|
|
||||||
/// Collection.
|
|
||||||
///
|
|
||||||
/// ## Example
|
|
||||||
/// ```rust
|
|
||||||
/// use activitystreams_types::{
|
|
||||||
/// CustomObject,
|
|
||||||
/// object::Video,
|
|
||||||
/// };
|
|
||||||
///
|
|
||||||
/// struct MyProps {
|
|
||||||
/// some_prop: String,
|
|
||||||
/// }
|
|
||||||
///
|
|
||||||
/// fn main() {
|
|
||||||
/// let video = Video::default();
|
|
||||||
/// let extended_video = CustomObject::new(video, MyProps { some_prop: "hey".to_owned() });
|
|
||||||
/// }
|
|
||||||
/// ```
|
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
pub struct CustomObject<C, O> {
|
|
||||||
#[serde(flatten)]
|
|
||||||
pub object: O,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
pub custom_props: C,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<C, O: Object> CustomObject<C, O> {
|
|
||||||
pub fn new(object: O, custom_props: C) -> Self {
|
|
||||||
CustomObject {
|
|
||||||
object,
|
|
||||||
custom_props,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<C, O> Object for CustomObject<C, O>
|
|
||||||
where
|
|
||||||
C: DeserializeOwned + ser::Serialize,
|
|
||||||
O: Object,
|
|
||||||
{
|
|
||||||
}
|
|
||||||
impl<C, O> Actor for CustomObject<C, O>
|
|
||||||
where
|
|
||||||
C: DeserializeOwned + ser::Serialize,
|
|
||||||
O: Actor,
|
|
||||||
{
|
|
||||||
}
|
|
||||||
impl<C, O> Collection for CustomObject<C, O>
|
|
||||||
where
|
|
||||||
C: DeserializeOwned + ser::Serialize,
|
|
||||||
O: Collection,
|
|
||||||
{
|
|
||||||
}
|
|
||||||
impl<C, O> CollectionPage for CustomObject<C, O>
|
|
||||||
where
|
|
||||||
C: DeserializeOwned + ser::Serialize,
|
|
||||||
O: CollectionPage,
|
|
||||||
{
|
|
||||||
}
|
|
||||||
impl<C, O> Activity for CustomObject<C, O>
|
|
||||||
where
|
|
||||||
C: DeserializeOwned + ser::Serialize,
|
|
||||||
O: Activity,
|
|
||||||
{
|
|
||||||
}
|
|
||||||
impl<C, O> IntransitiveActivity for CustomObject<C, O>
|
|
||||||
where
|
|
||||||
C: DeserializeOwned + ser::Serialize,
|
|
||||||
O: IntransitiveActivity,
|
|
||||||
{
|
|
||||||
}
|
|
|
@ -28,7 +28,7 @@
|
||||||
//! fn run() -> Result<(), anyhow::Error> {
|
//! fn run() -> Result<(), anyhow::Error> {
|
||||||
//! /// A Mention is the only predefined Link type in the Activity Streams spec
|
//! /// A Mention is the only predefined Link type in the Activity Streams spec
|
||||||
//! let mut mention = Mention::default();
|
//! let mut mention = Mention::default();
|
||||||
//! mention.link_props.set_context_object(context())?;
|
//! mention.link_props.set_context_xdg_any_uri(context())?;
|
||||||
//!
|
//!
|
||||||
//! let mention_string = serde_json::to_string(&mention)?;
|
//! let mention_string = serde_json::to_string(&mention)?;
|
||||||
//!
|
//!
|
||||||
|
@ -42,25 +42,14 @@
|
||||||
//! # }
|
//! # }
|
||||||
//! ```
|
//! ```
|
||||||
|
|
||||||
use serde_derive::{Deserialize, Serialize};
|
|
||||||
|
|
||||||
/// Define a simple wrapper around a string for this crate's main Context type
|
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
|
||||||
pub struct ContextObject(pub String);
|
|
||||||
|
|
||||||
impl activitystreams_traits::Object for ContextObject {}
|
|
||||||
|
|
||||||
/// The context associated with all of the Activity Streams types defined in the crate.
|
/// The context associated with all of the Activity Streams types defined in the crate.
|
||||||
pub fn context() -> ContextObject {
|
pub fn context() -> crate::primitives::XsdAnyUri {
|
||||||
ContextObject("https://www.w3.org/ns/activitystreams".to_owned())
|
"https://www.w3.org/ns/activitystreams".parse().unwrap()
|
||||||
}
|
}
|
||||||
|
|
||||||
pub mod activity;
|
pub mod activity;
|
||||||
pub mod actor;
|
pub mod actor;
|
||||||
pub mod collection;
|
pub mod collection;
|
||||||
mod custom_props;
|
|
||||||
pub mod link;
|
pub mod link;
|
||||||
pub mod object;
|
pub mod object;
|
||||||
pub mod primitives;
|
pub mod primitives;
|
||||||
|
|
||||||
pub use self::custom_props::{CustomLink, CustomObject};
|
|
||||||
|
|
|
@ -19,8 +19,9 @@
|
||||||
|
|
||||||
//! Namespace for Link types
|
//! Namespace for Link types
|
||||||
|
|
||||||
|
use activitystreams_derive::PropRefs;
|
||||||
use activitystreams_traits::Link;
|
use activitystreams_traits::Link;
|
||||||
use serde_derive::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
pub mod kind;
|
pub mod kind;
|
||||||
pub mod properties;
|
pub mod properties;
|
||||||
|
@ -35,8 +36,12 @@ pub trait LinkExt: Link {
|
||||||
fn props_mut(&mut self) -> &mut LinkProperties;
|
fn props_mut(&mut self) -> &mut LinkProperties;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Deserialize, Serialize)]
|
||||||
|
#[serde(transparent)]
|
||||||
|
pub struct LinkBox(pub Box<dyn Link>);
|
||||||
|
|
||||||
/// A specialized Link that represents an @mention.
|
/// A specialized Link that represents an @mention.
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Default, Deserialize, PropRefs, Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub struct Mention {
|
pub struct Mention {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
|
@ -46,58 +51,42 @@ pub struct Mention {
|
||||||
|
|
||||||
/// Adds all valid link properties to this struct
|
/// Adds all valid link properties to this struct
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
#[activitystreams(Link)]
|
||||||
pub link_props: LinkProperties,
|
pub link_props: LinkProperties,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Link for Mention {}
|
|
||||||
impl LinkExt for Mention {
|
|
||||||
fn props(&self) -> &LinkProperties {
|
|
||||||
&self.link_props
|
|
||||||
}
|
|
||||||
|
|
||||||
fn props_mut(&mut self) -> &mut LinkProperties {
|
|
||||||
&mut self.link_props
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
|
||||||
#[serde(transparent)]
|
|
||||||
pub struct LinkBox(pub Box<dyn Link>);
|
|
||||||
|
|
||||||
impl LinkBox {
|
impl LinkBox {
|
||||||
pub fn is<T>(&self) -> bool
|
pub fn is<T>(&self) -> bool
|
||||||
where
|
where
|
||||||
T: Link,
|
T: Link + 'static,
|
||||||
{
|
{
|
||||||
self.0.as_any().is::<T>()
|
self.0.as_any().is::<T>()
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn downcast_ref<T>(&self) -> Option<&T>
|
pub fn downcast_ref<T>(&self) -> Option<&T>
|
||||||
where
|
where
|
||||||
T: Link,
|
T: Link + 'static,
|
||||||
{
|
{
|
||||||
self.0.as_any().downcast_ref()
|
self.0.as_any().downcast_ref()
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn downcast_mut<T>(&mut self) -> Option<&mut T>
|
pub fn downcast_mut<T>(&mut self) -> Option<&mut T>
|
||||||
where
|
where
|
||||||
T: Link,
|
T: Link + 'static,
|
||||||
{
|
{
|
||||||
self.0.as_any_mut().downcast_mut()
|
self.0.as_any_mut().downcast_mut()
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub fn downcast<T>(self) -> Option<T>
|
impl Clone for LinkBox {
|
||||||
where
|
fn clone(&self) -> Self {
|
||||||
T: Link,
|
LinkBox(self.0.duplicate())
|
||||||
{
|
|
||||||
let any: Box<dyn Any> = self;
|
|
||||||
any.downcast()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<T> From<T> for LinkBox
|
impl<T> From<T> for LinkBox
|
||||||
where
|
where
|
||||||
T: Link,
|
T: Link + 'static,
|
||||||
{
|
{
|
||||||
fn from(t: T) -> Self {
|
fn from(t: T) -> Self {
|
||||||
LinkBox(Box::new(t))
|
LinkBox(Box::new(t))
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
//! ```rust
|
//! ```rust
|
||||||
//! use activitystreams_traits::Link;
|
//! use activitystreams_traits::Link;
|
||||||
//! use activitystreams_types::link::properties::LinkProperties;
|
//! use activitystreams_types::link::properties::LinkProperties;
|
||||||
//! use serde_derive::{Deserialize, Serialize};
|
//! use serde::{Deserialize, Serialize};
|
||||||
//!
|
//!
|
||||||
//! #[derive(Clone, Debug, Serialize, Deserialize)]
|
//! #[derive(Clone, Debug, Serialize, Deserialize)]
|
||||||
//! #[serde(rename_all = "camelCase")]
|
//! #[serde(rename_all = "camelCase")]
|
||||||
|
@ -44,145 +44,185 @@
|
||||||
//! # fn main() {}
|
//! # fn main() {}
|
||||||
//! ```
|
//! ```
|
||||||
|
|
||||||
use activitystreams_derive::Properties;
|
use activitystreams_derive::properties;
|
||||||
use activitystreams_traits::{Error, Link, Object, Result};
|
|
||||||
use serde_derive::{Deserialize, Serialize};
|
|
||||||
|
|
||||||
/// Define all the properties of the Object base type as described by the Activity Streams
|
use crate::{link::LinkBox, object::ObjectBox, primitives::*};
|
||||||
/// vocabulary.
|
|
||||||
///
|
|
||||||
/// The properties of the `Link` object are not the properties of the referenced resource, but are
|
|
||||||
/// provided as hints for rendering agents to understand how to make use of the resource. For
|
|
||||||
/// example, height and width might represent the desired rendered size of a referenced image,
|
|
||||||
/// rather than the actual pixel dimensions of the referenced image.
|
|
||||||
///
|
|
||||||
/// The target URI of the Link is expressed using the required href property.
|
|
||||||
///
|
|
||||||
/// For example, all Objects can contain an image property whose value describes a graphical
|
|
||||||
/// representation of the containing object. This property will typically be used to provide the URL
|
|
||||||
/// to an image (e.g. JPEG, GIF or PNG) resource that can be displayed to the user. Any given object
|
|
||||||
/// might have multiple such visual representations -- multiple screenshots, for instance, or the
|
|
||||||
/// same image at different resolutions. In Activity Streams 2.0, there are essentially three ways
|
|
||||||
/// of describing such references.
|
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, Properties)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
pub struct LinkProperties {
|
|
||||||
// TODO: IRI type
|
|
||||||
/// Provides the globally unique identifier for an Object or Link.
|
|
||||||
///
|
|
||||||
/// The `id` property is expressed as an absolute IRI in the spec, but for now is represented
|
|
||||||
/// as a string.
|
|
||||||
///
|
|
||||||
/// - Range: `anyUri`
|
|
||||||
/// - Functional: true
|
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
|
||||||
#[activitystreams(concrete(String), functional)]
|
|
||||||
pub id: Option<serde_json::Value>,
|
|
||||||
|
|
||||||
/// Identifies the context within which the object exists or an activity was performed.
|
properties! {
|
||||||
///
|
Link {
|
||||||
/// The notion of "context" used is intentionally vague. The intended function is to serve as a
|
docs [
|
||||||
/// means of grouping objects and activities that share a common originating context or purpose.
|
"Define all the properties of the Object base type as described by the Activity Streams vocabulary.",
|
||||||
/// An example could be all activities relating to a common project or event.
|
"",
|
||||||
///
|
"The properties of the `Link` object are not the properties of the referenced resource, but are",
|
||||||
/// - Range: `Object` | `Link`
|
"provided as hints for rendering agents to understand how to make use of the resource. For",
|
||||||
/// - Functional: false
|
"example, height and width might represent the desired rendered size of a referenced image,",
|
||||||
#[serde(skip_serializing_if = "Option::is_none", rename = "@context")]
|
"rather than the actual pixel dimensions of the referenced image.",
|
||||||
#[activitystreams(ab(Object, Link), concrete(String))]
|
"",
|
||||||
pub context: Option<serde_json::Value>,
|
"The target URI of the Link is expressed using the required href property.",
|
||||||
|
"",
|
||||||
|
"For example, all Objects can contain an image property whose value describes a graphical",
|
||||||
|
"representation of the containing object. This property will typically be used to provide the URL",
|
||||||
|
"to an image (e.g. JPEG, GIF or PNG) resource that can be displayed to the user. Any given object",
|
||||||
|
"might have multiple such visual representations -- multiple screenshots, for instance, or the",
|
||||||
|
"same image at different resolutions. In Activity Streams 2.0, there are essentially three ways",
|
||||||
|
"of describing such references.",
|
||||||
|
],
|
||||||
|
id {
|
||||||
|
docs [
|
||||||
|
"Provides the globally unique identifier for an Object or Link.",
|
||||||
|
"",
|
||||||
|
"The `id` property is expressed as an absolute IRI in the spec, but for now is represented",
|
||||||
|
"as a string.",
|
||||||
|
"",
|
||||||
|
"- Range: `anyUri`",
|
||||||
|
"- Functional: true",
|
||||||
|
],
|
||||||
|
types [
|
||||||
|
XsdAnyUri,
|
||||||
|
],
|
||||||
|
functional,
|
||||||
|
},
|
||||||
|
|
||||||
// TODO: rdf:langString
|
context {
|
||||||
/// A simple, human-readable, plain-text name for the object.
|
docs [
|
||||||
///
|
"Identifies the context within which the object exists or an activity was performed.",
|
||||||
/// HTML markup MUST NOT be included. The name MAY be expressed using multiple language-tagged
|
"",
|
||||||
/// values.
|
"The notion of \"context\" used is intentionally vague. The intended function is to serve as a",
|
||||||
///
|
"means of grouping objects and activities that share a common originating context or purpose.",
|
||||||
/// - Range: `xsd:string` | `rdf:langString`
|
"An example could be all activities relating to a common project or event.",
|
||||||
/// - Functional: false
|
"",
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
"- Range: `Object` | `Link`",
|
||||||
#[activitystreams(concrete(String))]
|
"- Functional: false",
|
||||||
pub name: Option<serde_json::Value>,
|
],
|
||||||
|
types [
|
||||||
|
XsdAnyUri,
|
||||||
|
ObjectBox,
|
||||||
|
LinkBox,
|
||||||
|
],
|
||||||
|
rename("@context"),
|
||||||
|
},
|
||||||
|
|
||||||
/// The target resource pointed to by a Link.
|
name {
|
||||||
///
|
docs [
|
||||||
/// - Range: `xsd:anyUri`
|
"A simple, human-readable, plain-text name for the object.",
|
||||||
/// - Functional: true
|
"",
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
"HTML markup MUST NOT be included. The name MAY be expressed using multiple language-tagged",
|
||||||
#[activitystreams(concrete(String), functional)]
|
"values.",
|
||||||
pub href: Option<serde_json::Value>,
|
"",
|
||||||
|
"- Range: `xsd:string` | `rdf:langString`",
|
||||||
|
"- Functional: false",
|
||||||
|
],
|
||||||
|
types [
|
||||||
|
XsdString,
|
||||||
|
RdfLangString,
|
||||||
|
],
|
||||||
|
},
|
||||||
|
|
||||||
// TODO: lang enum
|
href {
|
||||||
/// Hints as to the language used by the target resource.
|
docs [
|
||||||
///
|
"The target resource pointed to by a Link.",
|
||||||
/// Value MUST be a [[BCP47](https://tools.ietf.org/html/bcp47)]
|
"",
|
||||||
/// Language-Tag.
|
"- Range: `xsd:anyUri`",
|
||||||
///
|
"- Functional: true",
|
||||||
/// - Range: [[BCP47](https://tools.ietf.org/html/bcp47)] Language
|
],
|
||||||
/// Tag
|
types [
|
||||||
/// - Functional: true
|
XsdAnyUri,
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
],
|
||||||
#[activitystreams(concrete(String), functional)]
|
functional,
|
||||||
pub hreflang: Option<serde_json::Value>,
|
},
|
||||||
|
|
||||||
/// When used on a `Link`, identifies the MIME media type of the referenced resource.
|
hreflang {
|
||||||
///
|
docs [
|
||||||
/// If not specified, the content property is assumed to contain text/html content.
|
"Hints as to the language used by the target resource.",
|
||||||
///
|
"",
|
||||||
/// - Range: `Mime Media Type`
|
"Value MUST be a [[BCP47](https://tools.ietf.org/html/bcp47)]",
|
||||||
/// - Functional: true
|
"Language-Tag.",
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
"",
|
||||||
#[activitystreams(concrete(String), functional)]
|
"- Range: [[BCP47](https://tools.ietf.org/html/bcp47)] Language",
|
||||||
pub media_type: Option<serde_json::Value>,
|
"Tag",
|
||||||
|
"- Functional: true",
|
||||||
|
],
|
||||||
|
types [
|
||||||
|
XsdString,
|
||||||
|
],
|
||||||
|
functional,
|
||||||
|
},
|
||||||
|
|
||||||
/// A link relation associated with a Link.
|
media_type {
|
||||||
///
|
docs [
|
||||||
/// The value MUST conform to both the
|
"When used on a `Link`, identifies the MIME media type of the referenced resource.",
|
||||||
/// [[HTML5](https://www.w3.org/TR/html5/)] and [[RFC5988](https://tools.ietf.org/html/rfc5988)]
|
"",
|
||||||
/// "link relation" definitions.
|
"If not specified, the content property is assumed to contain text/html content.",
|
||||||
///
|
"",
|
||||||
/// In the [[HTML5](https://www.w3.org/TR/html5/)], any string
|
"- Range: `Mime Media Type`",
|
||||||
/// not containing the "space" U+0020, "tab" (U+0009), "LF" (U+000A), "FF" (U+000C), "CR"
|
"- Functional: true",
|
||||||
/// (U+000D) or "," (U+002C) characters can be used as a valid link relation.
|
],
|
||||||
///
|
types [
|
||||||
/// - Range:
|
MimeMediaType,
|
||||||
/// [[RFC5988](https://tools.ietf.org/html/rfc5988)] or
|
],
|
||||||
/// [[HTML5](https://www.w3.org/TR/html5/)] Link Relation
|
functional,
|
||||||
/// - Functional: false
|
},
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
|
||||||
#[activitystreams(concrete(String))]
|
|
||||||
pub rel: Option<serde_json::Value>,
|
|
||||||
|
|
||||||
/// On a `Link`, specifies a hint as to the rendering height in device-independent pixels of the
|
rel {
|
||||||
/// linked resource.
|
docs [
|
||||||
///
|
"A link relation associated with a Link.",
|
||||||
/// - Range: `xsd:nonNegativeInteger`
|
"",
|
||||||
/// - Functional: true
|
"The value MUST conform to both the",
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
"[[HTML5](https://www.w3.org/TR/html5/)] and [[RFC5988](https://tools.ietf.org/html/rfc5988)]",
|
||||||
#[activitystreams(concrete(u64), functional)]
|
"\"link relation\" definitions.",
|
||||||
pub height: Option<serde_json::Value>,
|
"",
|
||||||
|
"In the [[HTML5](https://www.w3.org/TR/html5/)], any string",
|
||||||
|
"not containing the \"space\" U+0020, \"tab\" (U+0009), \"LF\" (U+000A), \"FF\" (U+000C), \"CR\"",
|
||||||
|
"(U+000D) or \",\" (U+002C) characters can be used as a valid link relation.",
|
||||||
|
"",
|
||||||
|
"- Range:",
|
||||||
|
" [[RFC5988](https://tools.ietf.org/html/rfc5988)] or",
|
||||||
|
" [[HTML5](https://www.w3.org/TR/html5/)] Link Relation",
|
||||||
|
"- Functional: false",
|
||||||
|
],
|
||||||
|
types [
|
||||||
|
XsdString,
|
||||||
|
],
|
||||||
|
},
|
||||||
|
|
||||||
/// On a `Link`, specifies a hint as to the rendering width in device-independent pixels of the
|
height {
|
||||||
/// linked resource.
|
docs ["On a `Link`, specifies a hint as to the rendering height in device-independent pixels of the",
|
||||||
///
|
"linked resource.",
|
||||||
/// - Range: `xsd:nonNegativeInteger`
|
"",
|
||||||
/// - Functional: true
|
"- Range: `xsd:nonNegativeInteger`",
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
"- Functional: true",
|
||||||
#[activitystreams(concrete(u64), functional)]
|
],
|
||||||
pub width: Option<serde_json::Value>,
|
types [
|
||||||
|
XsdNonNegativeInteger,
|
||||||
|
],
|
||||||
|
functional,
|
||||||
|
},
|
||||||
|
|
||||||
/// Identifies an entity that provides a preview of this object.
|
width {
|
||||||
///
|
docs [
|
||||||
/// - Range: `Object` | `Link`
|
"On a `Link`, specifies a hint as to the rendering width in device-independent pixels of the",
|
||||||
/// - Functional: false
|
"linked resource.",
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
"",
|
||||||
#[activitystreams(ab(Object, Link), concrete(String))]
|
"- Range: `xsd:nonNegativeInteger`",
|
||||||
pub preview: Option<serde_json::Value>,
|
"- Functional: true",
|
||||||
}
|
],
|
||||||
|
types [
|
||||||
|
XsdNonNegativeInteger,
|
||||||
|
],
|
||||||
|
},
|
||||||
|
|
||||||
impl LinkProperties {
|
preview {
|
||||||
/// Fetch a typed `Mime` struct from the `media_type` field.
|
docs [
|
||||||
pub fn media_type(&self) -> Result<mime::Mime> {
|
"Identifies an entity that provides a preview of this object.",
|
||||||
self.media_type_string()
|
"",
|
||||||
.and_then(|s| s.parse().map_err(|_| Error::Deserialize))
|
"- Range: `Object` | `Link`",
|
||||||
|
"- Functional: false",
|
||||||
|
],
|
||||||
|
types [
|
||||||
|
XsdAnyUri,
|
||||||
|
ObjectBox,
|
||||||
|
LinkBox,
|
||||||
|
],
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,9 +19,9 @@
|
||||||
|
|
||||||
//! Namespace for Object types
|
//! Namespace for Object types
|
||||||
|
|
||||||
use activitystreams_derive::{PropRefs, Properties};
|
use activitystreams_derive::PropRefs;
|
||||||
use activitystreams_traits::Object;
|
use activitystreams_traits::Object;
|
||||||
use serde_derive::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
pub mod kind;
|
pub mod kind;
|
||||||
pub mod properties;
|
pub mod properties;
|
||||||
|
@ -36,6 +36,14 @@ pub trait ObjectExt: Object {
|
||||||
fn props_mut(&mut self) -> &mut ObjectProperties;
|
fn props_mut(&mut self) -> &mut ObjectProperties;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
|
#[serde(transparent)]
|
||||||
|
pub struct ImageBox(pub Box<Image>);
|
||||||
|
|
||||||
|
#[derive(Debug, Deserialize, Serialize)]
|
||||||
|
#[serde(transparent)]
|
||||||
|
pub struct ObjectBox(pub Box<dyn Object>);
|
||||||
|
|
||||||
/// Represents any kind of multi-paragraph written work.
|
/// Represents any kind of multi-paragraph written work.
|
||||||
#[derive(Clone, Debug, Default, Deserialize, PropRefs, Serialize)]
|
#[derive(Clone, Debug, Default, Deserialize, PropRefs, Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
|
@ -272,43 +280,27 @@ pub struct Video {
|
||||||
pub object_props: ObjectProperties,
|
pub object_props: ObjectProperties,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
|
||||||
#[serde(transparent)]
|
|
||||||
pub struct ImageBox(pub Box<Image>);
|
|
||||||
|
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
|
||||||
#[serde(transparent)]
|
|
||||||
pub struct ObjectBox(pub Box<dyn Object>);
|
|
||||||
|
|
||||||
impl ObjectBox {
|
impl ObjectBox {
|
||||||
pub fn is<T>(&self) -> bool
|
pub fn is<T>(&self) -> bool
|
||||||
where
|
where
|
||||||
T: Object,
|
T: Object + 'static,
|
||||||
{
|
{
|
||||||
self.0.as_any().is::<T>()
|
self.0.as_any().is::<T>()
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn downcast_ref<T>(&self) -> Option<&T>
|
pub fn downcast_ref<T>(&self) -> Option<&T>
|
||||||
where
|
where
|
||||||
T: Object,
|
T: Object + 'static,
|
||||||
{
|
{
|
||||||
self.0.as_any().downcast_ref()
|
self.0.as_any().downcast_ref()
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn downcast_mut<T>(&mut self) -> Option<&mut T>
|
pub fn downcast_mut<T>(&mut self) -> Option<&mut T>
|
||||||
where
|
where
|
||||||
T: Object,
|
T: Object + 'static,
|
||||||
{
|
{
|
||||||
self.0.as_any_mut().downcast_mut()
|
self.0.as_any_mut().downcast_mut()
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn downcast<T>(self) -> Option<T>
|
|
||||||
where
|
|
||||||
T: Object,
|
|
||||||
{
|
|
||||||
let any: Box<dyn Any> = self;
|
|
||||||
any.downcast()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl From<Image> for ImageBox {
|
impl From<Image> for ImageBox {
|
||||||
|
@ -323,9 +315,15 @@ impl From<ImageBox> for Image {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl Clone for ObjectBox {
|
||||||
|
fn clone(&self) -> Self {
|
||||||
|
ObjectBox(self.0.duplicate())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl<T> From<T> for ObjectBox
|
impl<T> From<T> for ObjectBox
|
||||||
where
|
where
|
||||||
T: Object,
|
T: Object + 'static,
|
||||||
{
|
{
|
||||||
fn from(t: T) -> Self {
|
fn from(t: T) -> Self {
|
||||||
ObjectBox(Box::new(t))
|
ObjectBox(Box::new(t))
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
//! ```rust
|
//! ```rust
|
||||||
//! use activitystreams_traits::Object;
|
//! use activitystreams_traits::Object;
|
||||||
//! use activitystreams_types::object::properties::ObjectProperties;
|
//! use activitystreams_types::object::properties::ObjectProperties;
|
||||||
//! use serde_derive::{Deserialize, Serialize};
|
//! use serde::{Deserialize, Serialize};
|
||||||
//! use std::any::Any;
|
//! use std::any::Any;
|
||||||
//!
|
//!
|
||||||
//! #[derive(Clone, Debug, Serialize, Deserialize)]
|
//! #[derive(Clone, Debug, Serialize, Deserialize)]
|
||||||
|
@ -54,53 +54,56 @@
|
||||||
//! ```
|
//! ```
|
||||||
|
|
||||||
use activitystreams_derive::properties;
|
use activitystreams_derive::properties;
|
||||||
use activitystreams_traits::{Collection, Error, Link, Object, Result};
|
|
||||||
use chrono::{offset::Utc, DateTime};
|
|
||||||
use serde_derive::{Deserialize, Serialize};
|
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
link::LinkBox,
|
link::LinkBox,
|
||||||
object::{Image, ObjectBox},
|
object::{ImageBox, ObjectBox},
|
||||||
primitives::*,
|
primitives::*,
|
||||||
};
|
};
|
||||||
|
|
||||||
/// Define all the properties of the Object base type as described by the Activity Streams
|
|
||||||
/// vocabulary.
|
|
||||||
///
|
|
||||||
/// In addition to having a global identifier (expressed as an absolute IRI using the id property)
|
|
||||||
/// and an "object type" (expressed using the type property), all instances of the Object type share
|
|
||||||
/// a common set of properties normatively defined by the Activity Vocabulary.
|
|
||||||
///
|
|
||||||
/// This struct does not provide an optional `type` property, if you are implementing your own
|
|
||||||
/// object type, you must supply your own type. This crate's provided object types all supply their
|
|
||||||
/// own `type` properties as Unit Structs with custom serde behaviour.
|
|
||||||
///
|
|
||||||
/// All properties are optional (including the id and type).
|
|
||||||
properties! {
|
properties! {
|
||||||
Object {
|
Object {
|
||||||
|
docs [
|
||||||
|
"Define all the properties of the Object base type as described by the Activity Streams",
|
||||||
|
"vocabulary.",
|
||||||
|
"",
|
||||||
|
"In addition to having a global identifier (expressed as an absolute IRI using the id property)",
|
||||||
|
"and an \"object type\"(expressed using the type property), all instances of the Object type share",
|
||||||
|
"a common set of properties normatively defined by the Activity Vocabulary.",
|
||||||
|
"",
|
||||||
|
"This struct does not provide an optional `type` property, if you are implementing your own",
|
||||||
|
"object type, you must supply your own type. This crate's provided object types all supply their",
|
||||||
|
"own `type` properties as Unit Structs with custom serde behaviour.",
|
||||||
|
"",
|
||||||
|
"All properties are optional (including the id and type).",
|
||||||
|
],
|
||||||
id {
|
id {
|
||||||
/// Provides the globally unique identifier for an Object or Link.
|
docs [
|
||||||
///
|
"Provides the globally unique identifier for an Object or Link.",
|
||||||
/// The `id` property is expressed as an absolute IRI in the spec, but for now is represented
|
"",
|
||||||
/// as a string.
|
"The `id` property is expressed as an absolute IRI in the spec, but for now is represented",
|
||||||
///
|
"as a string.",
|
||||||
/// - Range: `xsd:anyUri`
|
"",
|
||||||
/// - Functional: true
|
"- Range: `xsd:anyUri`",
|
||||||
|
"- Functional: true",
|
||||||
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
],
|
],
|
||||||
functional,
|
functional,
|
||||||
|
alias [ "@id" ],
|
||||||
},
|
},
|
||||||
|
|
||||||
attachment {
|
attachment {
|
||||||
/// Identifies a resource attached or related to an object that potentially requires special
|
docs [
|
||||||
/// handling.
|
"Identifies a resource attached or related to an object that potentially requires special",
|
||||||
///
|
"handling.",
|
||||||
/// The intent is to provide a model that is at least semantically similar to attachments in
|
"",
|
||||||
/// email.
|
"The intent is to provide a model that is at least semantically similar to attachments in",
|
||||||
///
|
"email.",
|
||||||
/// - Range: `Object` | `Link`
|
"",
|
||||||
/// - Functional: false
|
"- Range: `Object` | `Link`",
|
||||||
|
"- Functional: false",
|
||||||
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
ObjectBox,
|
ObjectBox,
|
||||||
|
@ -109,13 +112,15 @@ properties! {
|
||||||
},
|
},
|
||||||
|
|
||||||
attributed_to {
|
attributed_to {
|
||||||
/// Identifies one or more entities to which this object is attributed.
|
docs [
|
||||||
///
|
"Identifies one or more entities to which this object is attributed.",
|
||||||
/// The attributed entities might not be Actors. For instance, an object might be attributed to
|
"",
|
||||||
/// the completion of another activity.
|
"The attributed entities might not be Actors. For instance, an object might be attributed to",
|
||||||
///
|
"the completion of another activity.",
|
||||||
/// - Range: `Object` | `Link`
|
"",
|
||||||
/// - Functional: false
|
"- Range: `Object` | `Link`",
|
||||||
|
"- Functional: false",
|
||||||
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
ObjectBox,
|
ObjectBox,
|
||||||
|
@ -124,11 +129,13 @@ properties! {
|
||||||
},
|
},
|
||||||
|
|
||||||
audience {
|
audience {
|
||||||
/// Identifies one or more entities that represent the total population of entities for which
|
docs [
|
||||||
/// the object can considered to be relevant.
|
"Identifies one or more entities that represent the total population of entities for which",
|
||||||
///
|
"the object can considered to be relevant.",
|
||||||
/// - Range: `Object` | `Link`
|
"",
|
||||||
/// - Functional: false
|
"- Range: `Object` | `Link`",
|
||||||
|
"- Functional: false",
|
||||||
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
ObjectBox,
|
ObjectBox,
|
||||||
|
@ -137,15 +144,17 @@ properties! {
|
||||||
},
|
},
|
||||||
|
|
||||||
content {
|
content {
|
||||||
/// The content or textual representation of the Object encoded as a JSON string.
|
docs [
|
||||||
///
|
"The content or textual representation of the Object encoded as a JSON string.",
|
||||||
/// By default, the value of content is HTML. The mediaType property can be used in the object
|
"",
|
||||||
/// to indicate a different content type.
|
"By default, the value of content is HTML. The mediaType property can be used in the object",
|
||||||
///
|
"to indicate a different content type.",
|
||||||
/// The content MAY be expressed using multiple language-tagged values.
|
"",
|
||||||
///
|
"The content MAY be expressed using multiple language-tagged values.",
|
||||||
/// - Range: `xsd:string` | `rdf:langString`
|
"",
|
||||||
/// - Functional: false
|
"- Range: `xsd:string` | `rdf:langString`",
|
||||||
|
"- Functional: false",
|
||||||
|
],
|
||||||
types [
|
types [
|
||||||
XsdString,
|
XsdString,
|
||||||
RdfLangString,
|
RdfLangString,
|
||||||
|
@ -153,14 +162,16 @@ properties! {
|
||||||
},
|
},
|
||||||
|
|
||||||
context {
|
context {
|
||||||
/// Identifies the context within which the object exists or an activity was performed.
|
docs [
|
||||||
///
|
"Identifies the context within which the object exists or an activity was performed.",
|
||||||
/// The notion of "context" used is intentionally vague. The intended function is to serve as a
|
"",
|
||||||
/// means of grouping objects and activities that share a common originating context or purpose.
|
"The notion of \"context\"used is intentionally vague. The intended function is to serve as a",
|
||||||
/// An example could be all activities relating to a common project or event.
|
"means of grouping objects and activities that share a common originating context or purpose.",
|
||||||
///
|
"An example could be all activities relating to a common project or event.",
|
||||||
/// - Range: `Object` | `Link`
|
"",
|
||||||
/// - Functional: false
|
"- Range: `Object` | `Link`",
|
||||||
|
"- Functional: false",
|
||||||
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
ObjectBox,
|
ObjectBox,
|
||||||
|
@ -169,28 +180,32 @@ properties! {
|
||||||
},
|
},
|
||||||
|
|
||||||
name {
|
name {
|
||||||
/// A simple, human-readable, plain-text name for the object.
|
docs [
|
||||||
///
|
"A simple, human-readable, plain-text name for the object.",
|
||||||
/// HTML markup MUST NOT be included. The name MAY be expressed using multiple language-tagged
|
"",
|
||||||
/// values.
|
"HTML markup MUST NOT be included. The name MAY be expressed using multiple language-tagged",
|
||||||
///
|
"values.",
|
||||||
/// - Range: `xsd:string` | `rdf:langString`
|
"",
|
||||||
/// - Functional: false
|
"- Range: `xsd:string` | `rdf:langString`",
|
||||||
|
"- Functional: false",
|
||||||
|
],
|
||||||
types [
|
types [
|
||||||
XsdString,
|
XsdString,
|
||||||
RdfLangString,
|
RdfLangString,
|
||||||
],
|
],
|
||||||
alias("displayName"),
|
alias [ "displayName" ],
|
||||||
},
|
},
|
||||||
|
|
||||||
end_time {
|
end_time {
|
||||||
/// The date and time describing the actual or expected ending time of the object.
|
docs [
|
||||||
///
|
"The date and time describing the actual or expected ending time of the object.",
|
||||||
/// When used with an Activity object, for instance, the endTime property specifies the moment
|
"",
|
||||||
/// the activity concluded or is expected to conclude.
|
"When used with an Activity object, for instance, the endTime property specifies the moment",
|
||||||
///
|
"the activity concluded or is expected to conclude.",
|
||||||
/// - Range: `xsd:dateTime`
|
"",
|
||||||
/// - Functional: true
|
"- Range: `xsd:dateTime`",
|
||||||
|
"- Functional: true",
|
||||||
|
],
|
||||||
types [
|
types [
|
||||||
XsdDateTime,
|
XsdDateTime,
|
||||||
],
|
],
|
||||||
|
@ -198,10 +213,12 @@ properties! {
|
||||||
},
|
},
|
||||||
|
|
||||||
generator {
|
generator {
|
||||||
/// Identifies the entity (e.g. an application) that generated the object.
|
docs [
|
||||||
///
|
"Identifies the entity (e.g. an application) that generated the object.",
|
||||||
/// - Range: `Object` | `Link`
|
"",
|
||||||
/// - Functional: false
|
"- Range: `Object` | `Link`",
|
||||||
|
"- Functional: false",
|
||||||
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
ObjectBox,
|
ObjectBox,
|
||||||
|
@ -210,13 +227,15 @@ properties! {
|
||||||
},
|
},
|
||||||
|
|
||||||
icon {
|
icon {
|
||||||
/// Indicates an entity that describes an icon for this object.
|
docs [
|
||||||
///
|
"Indicates an entity that describes an icon for this object.",
|
||||||
/// The image should have an aspect ratio of one (horizontal) to one (vertical) and should be
|
"",
|
||||||
/// suitable for presentation at a small size.
|
"The image should have an aspect ratio of one (horizontal) to one (vertical) and should be",
|
||||||
///
|
"suitable for presentation at a small size.",
|
||||||
/// - Range: `Image` | `Link`
|
"",
|
||||||
/// - Functional: false
|
"- Range: `Image` | `Link`",
|
||||||
|
"- Functional: false",
|
||||||
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
ImageBox,
|
ImageBox,
|
||||||
|
@ -225,12 +244,14 @@ properties! {
|
||||||
},
|
},
|
||||||
|
|
||||||
image {
|
image {
|
||||||
/// Indicates an entity that describes an image for this object.
|
docs [
|
||||||
///
|
"Indicates an entity that describes an image for this object.",
|
||||||
/// Unlike the icon property, there are no aspect ratio or display size limitations assumed.
|
"",
|
||||||
///
|
"Unlike the icon property, there are no aspect ratio or display size limitations assumed.",
|
||||||
/// - Range: `Image` | `Link`
|
"",
|
||||||
/// - Functional: false
|
"- Range: `Image` | `Link`",
|
||||||
|
"- Functional: false",
|
||||||
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
ImageBox,
|
ImageBox,
|
||||||
|
@ -239,10 +260,12 @@ properties! {
|
||||||
},
|
},
|
||||||
|
|
||||||
in_reply_to {
|
in_reply_to {
|
||||||
/// Indicates one or more entities for which this object is considered a response.
|
docs [
|
||||||
///
|
"Indicates one or more entities for which this object is considered a response.",
|
||||||
/// - Range: `Object` | `Link`
|
"",
|
||||||
/// - Functional: false
|
"- Range: `Object` | `Link`",
|
||||||
|
"- Functional: false",
|
||||||
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
ObjectBox,
|
ObjectBox,
|
||||||
|
@ -251,10 +274,12 @@ properties! {
|
||||||
},
|
},
|
||||||
|
|
||||||
location {
|
location {
|
||||||
/// Indicates one or more physical or logical locations associated with the object.
|
docs [
|
||||||
///
|
"Indicates one or more physical or logical locations associated with the object.",
|
||||||
/// - Range: `Object` | `Link`
|
"",
|
||||||
/// - Functional: false
|
"- Range: `Object` | `Link`",
|
||||||
|
"- Functional: false",
|
||||||
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
ObjectBox,
|
ObjectBox,
|
||||||
|
@ -263,10 +288,12 @@ properties! {
|
||||||
},
|
},
|
||||||
|
|
||||||
preview {
|
preview {
|
||||||
/// Identifies an entity that provides a preview of this object.
|
docs [
|
||||||
///
|
"Identifies an entity that provides a preview of this object.",
|
||||||
/// - Range: `Object` | `Link`
|
"",
|
||||||
/// - Functional: false
|
"- Range: `Object` | `Link`",
|
||||||
|
"- Functional: false",
|
||||||
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
ObjectBox,
|
ObjectBox,
|
||||||
|
@ -275,10 +302,12 @@ properties! {
|
||||||
},
|
},
|
||||||
|
|
||||||
published {
|
published {
|
||||||
/// The date and time at which the object was published.
|
docs [
|
||||||
///
|
"The date and time at which the object was published.",
|
||||||
/// - Range: `xsd:dateTime`
|
"",
|
||||||
/// - Functional: true
|
"- Range: `xsd:dateTime`",
|
||||||
|
"- Functional: true",
|
||||||
|
],
|
||||||
types [
|
types [
|
||||||
XsdDateTime,
|
XsdDateTime,
|
||||||
],
|
],
|
||||||
|
@ -286,10 +315,12 @@ properties! {
|
||||||
},
|
},
|
||||||
|
|
||||||
replies {
|
replies {
|
||||||
/// Identifies a `Collection` containing objects considered to be responses to this object.
|
docs [
|
||||||
///
|
"Identifies a `Collection` containing objects considered to be responses to this object.",
|
||||||
/// - Range: `Object` | `Link`
|
"",
|
||||||
/// - Functional: false
|
"- Range: `Object` | `Link`",
|
||||||
|
"- Functional: false",
|
||||||
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
ObjectBox,
|
ObjectBox,
|
||||||
|
@ -298,13 +329,15 @@ properties! {
|
||||||
},
|
},
|
||||||
|
|
||||||
start_time {
|
start_time {
|
||||||
/// The date and time describing the actual or expected starting time of the object.
|
docs [
|
||||||
///
|
"The date and time describing the actual or expected starting time of the object.",
|
||||||
/// When used with an `Activity` object, for instance, the `start_time` property specifies the
|
"",
|
||||||
/// moment the activity began or is scheduled to begin.
|
"When used with an `Activity` object, for instance, the `start_time` property specifies the",
|
||||||
///
|
"moment the activity began or is scheduled to begin.",
|
||||||
/// - Range: `xsd:DateTime`
|
"",
|
||||||
/// - Functional: true
|
"- Range: `xsd:DateTime`",
|
||||||
|
"- Functional: true",
|
||||||
|
],
|
||||||
types [
|
types [
|
||||||
XsdDateTime,
|
XsdDateTime,
|
||||||
],
|
],
|
||||||
|
@ -312,12 +345,14 @@ properties! {
|
||||||
},
|
},
|
||||||
|
|
||||||
summary {
|
summary {
|
||||||
/// A natural language summarization of the object encoded as HTML.
|
docs [
|
||||||
///
|
"A natural language summarization of the object encoded as HTML.",
|
||||||
/// Multiple language tagged summaries MAY be provided.
|
"",
|
||||||
///
|
"Multiple language tagged summaries MAY be provided.",
|
||||||
/// - Range: `xsd:string` | `rdf:langString`
|
"",
|
||||||
/// - Functional: false
|
"- Range: `xsd:string` | `rdf:langString`",
|
||||||
|
"- Functional: false",
|
||||||
|
],
|
||||||
types [
|
types [
|
||||||
XsdString,
|
XsdString,
|
||||||
RdfLangString,
|
RdfLangString,
|
||||||
|
@ -325,14 +360,16 @@ properties! {
|
||||||
},
|
},
|
||||||
|
|
||||||
tag {
|
tag {
|
||||||
/// One or more "tags" that have been associated with an objects. A tag can be any kind of
|
docs [
|
||||||
/// `Object`.
|
"One or more \"tags\" that have been associated with an objects. A tag can be any kind of",
|
||||||
///
|
"`Object`.",
|
||||||
/// The key difference between attachment and tag is that the former implies association by
|
"",
|
||||||
/// inclusion, while the latter implies associated by reference.
|
"The key difference between attachment and tag is that the former implies association by",
|
||||||
///
|
"inclusion, while the latter implies associated by reference.",
|
||||||
/// - Range: `Object` | `Link`
|
"",
|
||||||
/// - Functional: false
|
"- Range: `Object` | `Link`",
|
||||||
|
"- Functional: false",
|
||||||
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
ObjectBox,
|
ObjectBox,
|
||||||
|
@ -341,10 +378,12 @@ properties! {
|
||||||
},
|
},
|
||||||
|
|
||||||
updated {
|
updated {
|
||||||
/// The date and time at which the object was updated,
|
docs [
|
||||||
///
|
"The date and time at which the object was updated,",
|
||||||
/// - Range: `xsd:dateTime`
|
"",
|
||||||
/// - Functional: true
|
"- Range: `xsd:dateTime`",
|
||||||
|
"- Functional: true",
|
||||||
|
],
|
||||||
types [
|
types [
|
||||||
XsdDateTime,
|
XsdDateTime,
|
||||||
],
|
],
|
||||||
|
@ -352,10 +391,12 @@ properties! {
|
||||||
},
|
},
|
||||||
|
|
||||||
url {
|
url {
|
||||||
/// Identifies one or more links to representations of the object.
|
docs [
|
||||||
///
|
"Identifies one or more links to representations of the object.",
|
||||||
/// - Range: `xsd:anyUri` | `Link`
|
"",
|
||||||
/// - Functional: false
|
"- Range: `xsd:anyUri` | `Link`",
|
||||||
|
"- Functional: false",
|
||||||
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
LinkBox,
|
LinkBox,
|
||||||
|
@ -363,10 +404,12 @@ properties! {
|
||||||
},
|
},
|
||||||
|
|
||||||
to {
|
to {
|
||||||
/// Identifies an entity considered to be part of the public primary audience of an `Object`.
|
docs [
|
||||||
///
|
"Identifies an entity considered to be part of the public primary audience of an `Object`.",
|
||||||
/// - Range: `Object` | `Link`
|
"",
|
||||||
/// - Functional: false
|
"- Range: `Object` | `Link`",
|
||||||
|
"- Functional: false",
|
||||||
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
ObjectBox,
|
ObjectBox,
|
||||||
|
@ -375,10 +418,12 @@ properties! {
|
||||||
},
|
},
|
||||||
|
|
||||||
bto {
|
bto {
|
||||||
/// Identifies an `Object` that is part of the private primary audience of this `Object`.
|
docs [
|
||||||
///
|
"Identifies an `Object` that is part of the private primary audience of this `Object`.",
|
||||||
/// - Range: `Object` | `Link`
|
"",
|
||||||
/// - Functional: false
|
"- Range: `Object` | `Link`",
|
||||||
|
"- Functional: false",
|
||||||
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
ObjectBox,
|
ObjectBox,
|
||||||
|
@ -387,10 +432,12 @@ properties! {
|
||||||
},
|
},
|
||||||
|
|
||||||
cc {
|
cc {
|
||||||
/// Identifies an `Object` that is part of the public secondary audience of this `Object`.
|
docs [
|
||||||
///
|
"Identifies an `Object` that is part of the public secondary audience of this `Object`.",
|
||||||
/// - Range: `Object` | `Link`
|
"",
|
||||||
/// - Functional: false
|
"- Range: `Object` | `Link`",
|
||||||
|
"- Functional: false",
|
||||||
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
ObjectBox,
|
ObjectBox,
|
||||||
|
@ -399,11 +446,13 @@ properties! {
|
||||||
},
|
},
|
||||||
|
|
||||||
bcc {
|
bcc {
|
||||||
/// Identifies one or more `Objects` that are part of the private secondary audience of this
|
docs [
|
||||||
/// `Object`.
|
"Identifies one or more `Objects` that are part of the private secondary audience of this",
|
||||||
///
|
"`Object`.",
|
||||||
/// - Range: `Object` | `Link`
|
"",
|
||||||
/// - Functional: false
|
"- Range: `Object` | `Link`",
|
||||||
|
"- Functional: false",
|
||||||
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
ObjectBox,
|
ObjectBox,
|
||||||
|
@ -412,13 +461,15 @@ properties! {
|
||||||
},
|
},
|
||||||
|
|
||||||
media_type {
|
media_type {
|
||||||
/// When used on an `Object`, identifies the MIME media type of the value of the content
|
docs [
|
||||||
/// property.
|
"When used on an `Object`, identifies the MIME media type of the value of the content",
|
||||||
///
|
"property.",
|
||||||
/// If not specified, the content property is assumed to contain text/html content.
|
"",
|
||||||
///
|
"If not specified, the content property is assumed to contain text/html content.",
|
||||||
/// - Range: `Mime Media Type`
|
"",
|
||||||
/// - Functional: true
|
"- Range: `Mime Media Type`",
|
||||||
|
"- Functional: true",
|
||||||
|
],
|
||||||
types [
|
types [
|
||||||
MimeMediaType,
|
MimeMediaType,
|
||||||
],
|
],
|
||||||
|
@ -426,15 +477,17 @@ properties! {
|
||||||
},
|
},
|
||||||
|
|
||||||
duration {
|
duration {
|
||||||
/// When the object describes a time-bound resource, such as an audio or video, a meeting, etc,
|
docs [
|
||||||
/// the duration property indicates the object's approximate duration.
|
"When the object describes a time-bound resource, such as an audio or video, a meeting, etc,",
|
||||||
///
|
"the duration property indicates the object's approximate duration.",
|
||||||
/// The value MUST be expressed as an xsd:duration as defined by
|
"",
|
||||||
/// [[xmlschema11-2](https://www.w3.org/TR/xmlschema11-2/)], section
|
"The value MUST be expressed as an xsd:duration as defined by",
|
||||||
/// 3.3.6 (e.g. a period of 5 seconds is represented as "PT5S").
|
"[[xmlschema11-2](https://www.w3.org/TR/xmlschema11-2/)], section",
|
||||||
///
|
"3.3.6 (e.g. a period of 5 seconds is represented as \"PT5S\").",
|
||||||
/// - Range: `xsd:duration`
|
"",
|
||||||
/// - Functional: true
|
"- Range: `xsd:duration`",
|
||||||
|
"- Functional: true",
|
||||||
|
],
|
||||||
types [
|
types [
|
||||||
XsdDuration,
|
XsdDuration,
|
||||||
],
|
],
|
||||||
|
@ -443,16 +496,18 @@ properties! {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Define all the properties of the Location type as described by the Activity Streams vocabulary.
|
|
||||||
properties! {
|
properties! {
|
||||||
Place {
|
Place {
|
||||||
|
docs [ "Define all the properties of the Location type as described by the Activity Streams vocabulary." ],
|
||||||
accuracy {
|
accuracy {
|
||||||
/// Indicates the accuracy of position coordinates on a `Place` objects.
|
docs [
|
||||||
///
|
"Indicates the accuracy of position coordinates on a `Place` objects.",
|
||||||
/// Expressed in properties of percentage. e.g. "94.0" means "94.0% accurate".
|
"",
|
||||||
///
|
"Expressed in properties of percentage. e.g. \"94.0\"means \"94.0% accurate\".",
|
||||||
/// - Range: `xsd:float` [>= 0.0f, <= 100.0f]
|
"",
|
||||||
/// - Functional: true
|
"- Range: `xsd:float` [>= 0.0f, <= 100.0f]",
|
||||||
|
"- Functional: true",
|
||||||
|
],
|
||||||
types [
|
types [
|
||||||
XsdFloat,
|
XsdFloat,
|
||||||
],
|
],
|
||||||
|
@ -460,13 +515,15 @@ properties! {
|
||||||
},
|
},
|
||||||
|
|
||||||
altitude {
|
altitude {
|
||||||
/// Indicates the altitude of a place. The measurement units is indicated using the units
|
docs [
|
||||||
/// property.
|
"Indicates the altitude of a place. The measurement units is indicated using the units",
|
||||||
///
|
"property.",
|
||||||
/// If units is not specified, the default is assumed to be "m" indicating meters.
|
"",
|
||||||
///
|
"If units is not specified, the default is assumed to be \"m\" indicating meters.",
|
||||||
/// - Range: `xsd:float`
|
"",
|
||||||
/// - Functional: true
|
"- Range: `xsd:float`",
|
||||||
|
"- Functional: true",
|
||||||
|
],
|
||||||
types [
|
types [
|
||||||
XsdFloat,
|
XsdFloat,
|
||||||
],
|
],
|
||||||
|
@ -474,21 +531,25 @@ properties! {
|
||||||
},
|
},
|
||||||
|
|
||||||
latitude {
|
latitude {
|
||||||
/// The latitude of a place.
|
docs [
|
||||||
///
|
"The latitude of a place.",
|
||||||
/// - Range: `xsd:float`
|
"",
|
||||||
/// - Functional: true
|
"- Range: `xsd:float`",
|
||||||
|
"- Functional: true",
|
||||||
|
],
|
||||||
types [
|
types [
|
||||||
XsdFloat,
|
XsdFloat,
|
||||||
],
|
],
|
||||||
functional,
|
functional,
|
||||||
}
|
},
|
||||||
|
|
||||||
logitude {
|
longitude {
|
||||||
/// The longitude of a place.
|
docs [
|
||||||
///
|
"The longitude of a place.",
|
||||||
/// - Range: `xsd:float`
|
"",
|
||||||
/// - Functional: true
|
"- Range: `xsd:float`",
|
||||||
|
"- Functional: true",
|
||||||
|
],
|
||||||
types [
|
types [
|
||||||
XsdFloat,
|
XsdFloat,
|
||||||
],
|
],
|
||||||
|
@ -496,13 +557,15 @@ properties! {
|
||||||
},
|
},
|
||||||
|
|
||||||
radius {
|
radius {
|
||||||
/// The radius from the given latitude and longitude for a Place.
|
docs [
|
||||||
///
|
"The radius from the given latitude and longitude for a Place.",
|
||||||
/// The units is expressed by the units property. If units is not specified, the default is
|
"",
|
||||||
/// assumed to be "m" indicating "meters".
|
"The units is expressed by the units property. If units is not specified, the default is",
|
||||||
///
|
"assumed to be \"m\" indicating meters.",
|
||||||
/// - Range: `xsd:float`
|
"",
|
||||||
/// - Functional: true
|
"- Range: `xsd:float`",
|
||||||
|
"- Functional: true",
|
||||||
|
],
|
||||||
types [
|
types [
|
||||||
XsdFloat,
|
XsdFloat,
|
||||||
],
|
],
|
||||||
|
@ -510,13 +573,15 @@ properties! {
|
||||||
},
|
},
|
||||||
|
|
||||||
units {
|
units {
|
||||||
/// Specifies the measurement units for the radius and altitude properties on a `Place` object.
|
docs [
|
||||||
///
|
"Specifies the measurement units for the radius and altitude properties on a `Place` object.",
|
||||||
/// If not specified, the default is assumed to be "m" for "meters".
|
"",
|
||||||
///
|
"If not specified, the default is assumed to be \"m\" for meters.",
|
||||||
/// TODO: encode rage as any of `"cm"` | `"feet"` | `"inches"` | `"km"` | `"m"` | `xsd:anyUri`
|
"",
|
||||||
/// - Range: `xsd:anyUri` | `xsd:string`
|
"TODO: encode rage as any of `\"cm\"` | `\"feet\"` | `\"inches\"` | `\"km\"` | `\"m\"` | `xsd:anyUri`",
|
||||||
/// - Functional: true
|
"- Range: `xsd:anyUri` | `xsd:string`",
|
||||||
|
"- Functional: true",
|
||||||
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
XsdString,
|
XsdString,
|
||||||
|
@ -526,15 +591,17 @@ properties! {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Define all the properties of the Profile type as described by the Activity Streams vocabulary.
|
|
||||||
properties! {
|
properties! {
|
||||||
Profile {
|
Profile {
|
||||||
|
docs [ "Define all the properties of the Profile type as described by the Activity Streams vocabulary." ],
|
||||||
describes {
|
describes {
|
||||||
/// On a `Profile` object, the describes property identifies the object described by the
|
docs [
|
||||||
/// `Profile`.
|
"On a `Profile` object, the describes property identifies the object described by the",
|
||||||
///
|
"`Profile`.",
|
||||||
/// - Range: `Object`
|
"",
|
||||||
/// - Functional: true
|
"- Range: `Object`",
|
||||||
|
"- Functional: true",
|
||||||
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
ObjectBox,
|
ObjectBox,
|
||||||
|
@ -544,19 +611,23 @@ properties! {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Define all the properties of the Relationship type as described by the Activity Streams
|
|
||||||
/// vocabulary.
|
|
||||||
properties! {
|
properties! {
|
||||||
Relationship {
|
Relationship {
|
||||||
|
docs [
|
||||||
|
"Define all the properties of the Relationship type as described by the Activity Streams",
|
||||||
|
"vocabulary.",
|
||||||
|
],
|
||||||
subject {
|
subject {
|
||||||
/// On a `Relationship` object, the subject property identifies one of the connected
|
docs [
|
||||||
/// individuals.
|
"On a `Relationship` object, the subject property identifies one of the connected",
|
||||||
///
|
"individuals.",
|
||||||
/// For instance, for a `Relationship` object describing "John is related to Sally", subject
|
"",
|
||||||
/// would refer to John.
|
"For instance, for a `Relationship` object describing \"John is related to Sally\", subject",
|
||||||
///
|
"would refer to John.",
|
||||||
/// - Range: `Object` | `Link`
|
"",
|
||||||
/// - Functional: true
|
"- Range: `Object` | `Link`",
|
||||||
|
"- Functional: true",
|
||||||
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
ObjectBox,
|
ObjectBox,
|
||||||
|
@ -566,10 +637,12 @@ properties! {
|
||||||
},
|
},
|
||||||
|
|
||||||
object {
|
object {
|
||||||
/// When used within a `Relationship` describes the entity to which the subject is related.
|
docs [
|
||||||
///
|
"When used within a `Relationship` describes the entity to which the subject is related.",
|
||||||
/// - Range: `Object` | `Link`
|
"",
|
||||||
/// - Functional: false
|
"- Range: `Object` | `Link`",
|
||||||
|
"- Functional: false",
|
||||||
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
ObjectBox,
|
ObjectBox,
|
||||||
|
@ -578,11 +651,13 @@ properties! {
|
||||||
},
|
},
|
||||||
|
|
||||||
relationship {
|
relationship {
|
||||||
/// On a `Relationship` object, the relationship property identifies the kind of relationship
|
docs [
|
||||||
/// that exists between subject and object.
|
"On a `Relationship` object, the relationship property identifies the kind of relationship",
|
||||||
///
|
"that exists between subject and object.",
|
||||||
/// - Range: `Object`
|
"",
|
||||||
/// - Functional: false
|
"- Range: `Object`",
|
||||||
|
"- Functional: false",
|
||||||
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
ObjectBox,
|
ObjectBox,
|
||||||
|
@ -591,15 +666,17 @@ properties! {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Define all the properties of the Tombstone type as described by the Activity Streams vocabulary.
|
|
||||||
properties! {
|
properties! {
|
||||||
Tombstone {
|
Tombstone {
|
||||||
|
docs [ "Define all the properties of the Tombstone type as described by the Activity Streams vocabulary." ],
|
||||||
former_type {
|
former_type {
|
||||||
/// On a `Tombstone` object, the formerType property identifies the type of the object that was
|
docs [
|
||||||
/// deleted.
|
"On a `Tombstone` object, the formerType property identifies the type of the object that was",
|
||||||
///
|
"deleted.",
|
||||||
/// - Range: `Object`
|
"",
|
||||||
/// - Functional: false
|
"- Range: `Object`",
|
||||||
|
"- Functional: false",
|
||||||
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
ObjectBox,
|
ObjectBox,
|
||||||
|
@ -607,11 +684,13 @@ properties! {
|
||||||
},
|
},
|
||||||
|
|
||||||
deleted {
|
deleted {
|
||||||
/// On a `Tombstone` object, the deleted property is a timestamp for when the object was
|
docs [
|
||||||
/// deleted.
|
"On a `Tombstone` object, the deleted property is a timestamp for when the object was",
|
||||||
///
|
"deleted.",
|
||||||
/// - Range: `xsd:dateTime`
|
"",
|
||||||
/// - Functional: true
|
"- Range: `xsd:dateTime`",
|
||||||
|
"- Functional: true",
|
||||||
|
],
|
||||||
types [
|
types [
|
||||||
XsdDateTime,
|
XsdDateTime,
|
||||||
],
|
],
|
||||||
|
|
|
@ -10,8 +10,8 @@ mod xsd_string;
|
||||||
|
|
||||||
pub use self::{
|
pub use self::{
|
||||||
mime_media_type::{MimeMediaType, MimeMediaTypeError},
|
mime_media_type::{MimeMediaType, MimeMediaTypeError},
|
||||||
rdf_lang_string::RDFLangString,
|
rdf_lang_string::RdfLangString,
|
||||||
xsd_any_uri::{XsdAnyURI, XsdAnyURIError},
|
xsd_any_uri::{XsdAnyUri, XsdAnyUriError},
|
||||||
xsd_datetime::{XsdDateTime, XsdDateTimeError},
|
xsd_datetime::{XsdDateTime, XsdDateTimeError},
|
||||||
xsd_duration::{XsdDuration, XsdDurationError},
|
xsd_duration::{XsdDuration, XsdDurationError},
|
||||||
xsd_float::{XsdFloat, XsdFloatError},
|
xsd_float::{XsdFloat, XsdFloatError},
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#[derive(Clone, Debug, serde_derive::Deserialize, serde_derive::Serialize)]
|
#[derive(Clone, Debug, Default, serde::Deserialize, serde::Serialize)]
|
||||||
pub struct RDFLangString {
|
pub struct RdfLangString {
|
||||||
#[serde(rename = "@value")]
|
#[serde(rename = "@value")]
|
||||||
pub value: String,
|
pub value: String,
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@ pub struct RDFLangString {
|
||||||
pub language: String,
|
pub language: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl std::fmt::Display for RDFLangString {
|
impl std::fmt::Display for RdfLangString {
|
||||||
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
|
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
|
||||||
write!(f, "{}:{}", self.language, self.value)
|
write!(f, "{}:{}", self.language, self.value)
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,44 +1,44 @@
|
||||||
#[derive(Clone, Debug, serde_derive::Deserialize, serde_derive::Serialize)]
|
#[derive(Clone, Debug, Default, serde::Deserialize, serde::Serialize)]
|
||||||
#[serde(transparent)]
|
#[serde(transparent)]
|
||||||
pub struct XsdAnyURI(String);
|
pub struct XsdAnyUri(String);
|
||||||
|
|
||||||
#[derive(Clone, Debug, thiserror::Error)]
|
#[derive(Clone, Debug, thiserror::Error)]
|
||||||
#[error("Could not parse XsdAnyURI")]
|
#[error("Could not parse XsdAnyUri")]
|
||||||
pub struct XsdAnyURIError;
|
pub struct XsdAnyUriError;
|
||||||
|
|
||||||
impl std::convert::TryFrom<String> for XsdAnyURI {
|
impl std::convert::TryFrom<String> for XsdAnyUri {
|
||||||
type Error = XsdAnyURIError;
|
type Error = XsdAnyUriError;
|
||||||
|
|
||||||
fn try_from(s: String) -> Result<Self, Self::Error> {
|
fn try_from(s: String) -> Result<Self, Self::Error> {
|
||||||
Ok(XsdAnyURI(s))
|
Ok(XsdAnyUri(s))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl std::convert::TryFrom<&str> for XsdAnyURI {
|
impl std::convert::TryFrom<&str> for XsdAnyUri {
|
||||||
type Error = XsdAnyURIError;
|
type Error = XsdAnyUriError;
|
||||||
|
|
||||||
fn try_from(s: &str) -> Result<Self, Self::Error> {
|
fn try_from(s: &str) -> Result<Self, Self::Error> {
|
||||||
Ok(XsdAnyURI(s.to_owned()))
|
Ok(XsdAnyUri(s.to_owned()))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl std::convert::TryFrom<&mut str> for XsdAnyURI {
|
impl std::convert::TryFrom<&mut str> for XsdAnyUri {
|
||||||
type Error = XsdAnyURIError;
|
type Error = XsdAnyUriError;
|
||||||
|
|
||||||
fn try_from(s: &mut str) -> Result<Self, Self::Error> {
|
fn try_from(s: &mut str) -> Result<Self, Self::Error> {
|
||||||
Ok(XsdAnyURI(s.to_owned()))
|
Ok(XsdAnyUri(s.to_owned()))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl std::str::FromStr for XsdAnyURI {
|
impl std::str::FromStr for XsdAnyUri {
|
||||||
type Err = XsdAnyURIError;
|
type Err = XsdAnyUriError;
|
||||||
|
|
||||||
fn from_str(s: &str) -> Result<Self, Self::Err> {
|
fn from_str(s: &str) -> Result<Self, Self::Err> {
|
||||||
Ok(XsdAnyURI(s.to_owned()))
|
Ok(XsdAnyUri(s.to_owned()))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl std::fmt::Display for XsdAnyURI {
|
impl std::fmt::Display for XsdAnyUri {
|
||||||
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
|
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
|
||||||
std::fmt::Display::fmt(&self.0, f)
|
std::fmt::Display::fmt(&self.0, f)
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#[derive(Clone, Debug, serde_derive::Deserialize, serde_derive::Serialize)]
|
#[derive(Clone, Debug, Default, serde::Deserialize, serde::Serialize)]
|
||||||
#[serde(transparent)]
|
#[serde(transparent)]
|
||||||
pub struct XsdFloat(f64);
|
pub struct XsdFloat(f64);
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#[derive(Clone, Debug, serde_derive::Deserialize, serde_derive::Serialize)]
|
#[derive(Clone, Debug, Default, serde::Deserialize, serde::Serialize)]
|
||||||
#[serde(transparent)]
|
#[serde(transparent)]
|
||||||
pub struct XsdNonNegativeFloat(f64);
|
pub struct XsdNonNegativeFloat(f64);
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#[derive(Clone, Debug, serde_derive::Deserialize, serde_derive::Serialize)]
|
#[derive(Clone, Debug, Default, serde::Deserialize, serde::Serialize)]
|
||||||
#[serde(transparent)]
|
#[serde(transparent)]
|
||||||
pub struct XsdNonNegativeInteger(u64);
|
pub struct XsdNonNegativeInteger(u64);
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#[derive(Clone, Debug, serde_derive::Deserialize, serde_derive::Serialize)]
|
#[derive(Clone, Debug, Default, serde::Deserialize, serde::Serialize)]
|
||||||
#[serde(transparent)]
|
#[serde(transparent)]
|
||||||
pub struct XsdString(String);
|
pub struct XsdString(String);
|
||||||
|
|
||||||
|
|
22
src/error.rs
22
src/error.rs
|
@ -1,22 +0,0 @@
|
||||||
/*
|
|
||||||
* This file is part of ActivityStreams.
|
|
||||||
*
|
|
||||||
* Copyright © 2018 Riley Trautman
|
|
||||||
*
|
|
||||||
* ActivityStreams is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* ActivityStreams is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with ActivityStreams. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
//! Error traits and types
|
|
||||||
|
|
||||||
pub use activitystreams_traits::{Error, Result};
|
|
|
@ -125,15 +125,12 @@
|
||||||
pub mod activity;
|
pub mod activity;
|
||||||
pub mod actor;
|
pub mod actor;
|
||||||
pub mod collection;
|
pub mod collection;
|
||||||
mod error;
|
|
||||||
pub mod link;
|
pub mod link;
|
||||||
pub mod object;
|
pub mod object;
|
||||||
|
|
||||||
pub use self::activity::{Activity, ActivityExt, IntransitiveActivity};
|
pub use self::activity::{Activity, ActivityExt, IntransitiveActivity};
|
||||||
pub use self::actor::Actor;
|
pub use self::actor::Actor;
|
||||||
pub use self::collection::{Collection, CollectionExt, CollectionPage, CollectionPageExt};
|
pub use self::collection::{Collection, CollectionExt, CollectionPage, CollectionPageExt};
|
||||||
pub use self::error::{Error, Result};
|
|
||||||
pub use self::link::{Link, LinkExt};
|
pub use self::link::{Link, LinkExt};
|
||||||
pub use self::object::{Object, ObjectExt};
|
pub use self::object::{Object, ObjectExt};
|
||||||
pub use activitystreams_traits::properties;
|
|
||||||
pub use activitystreams_types::context;
|
pub use activitystreams_types::context;
|
||||||
|
|
Loading…
Reference in a new issue