mirror of
https://git.asonix.dog/asonix/activitystreams.git
synced 2025-06-07 22:38:53 +00:00
Try extension method
This commit is contained in:
parent
843233811d
commit
7dda503c65
25 changed files with 523 additions and 1575 deletions
|
@ -1,7 +1,7 @@
|
||||||
[package]
|
[package]
|
||||||
name = "activitystreams"
|
name = "activitystreams"
|
||||||
description = "Activity Streams in Rust"
|
description = "Activity Streams in Rust"
|
||||||
version = "0.5.0-alpha.8"
|
version = "0.5.0-alpha.9"
|
||||||
license = "GPL-3.0"
|
license = "GPL-3.0"
|
||||||
authors = ["asonix <asonix@asonix.dog>"]
|
authors = ["asonix <asonix@asonix.dog>"]
|
||||||
repository = "https://git.asonix.dog/Aardwolf/activitystreams"
|
repository = "https://git.asonix.dog/Aardwolf/activitystreams"
|
||||||
|
@ -11,13 +11,13 @@ edition = "2018"
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
default = ["types"]
|
default = ["types"]
|
||||||
derive = ["activitystreams-derive"]
|
derive = ["activitystreams-derive", "serde", "serde_json"]
|
||||||
kinds = ["derive", "serde"]
|
kinds = ["derive", "serde"]
|
||||||
primitives = ["chrono", "mime", "serde", "thiserror", "url"]
|
primitives = ["chrono", "mime", "serde", "thiserror", "url"]
|
||||||
types = ["derive", "kinds", "primitives", "serde", "serde_json"]
|
types = ["derive", "kinds", "primitives"]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
activitystreams-derive = { version = "0.5.0-alpha.3", path = "activitystreams-derive", optional = true}
|
activitystreams-derive = { version = "0.5.0-alpha.4", path = "activitystreams-derive", optional = true}
|
||||||
chrono = { version = "0.4", optional = true }
|
chrono = { version = "0.4", optional = true }
|
||||||
mime = { version = "0.3", optional = true }
|
mime = { version = "0.3", optional = true }
|
||||||
serde = { version = "1.0", features = ["derive"], optional = true }
|
serde = { version = "1.0", features = ["derive"], optional = true }
|
||||||
|
|
|
@ -9,7 +9,7 @@ __A set of Traits and Types that make up the ActivityStreams and ActivityPub spe
|
||||||
|
|
||||||
First, add ActivityStreams to your dependencies
|
First, add ActivityStreams to your dependencies
|
||||||
```toml
|
```toml
|
||||||
activitystreams = "0.5.0-alpha.8"
|
activitystreams = "0.5.0-alpha.9"
|
||||||
```
|
```
|
||||||
|
|
||||||
### Types
|
### Types
|
||||||
|
@ -177,7 +177,7 @@ There are a number of features that can be disabled in this crate. By default, e
|
||||||
enabled.
|
enabled.
|
||||||
|
|
||||||
```toml
|
```toml
|
||||||
activitystreams = { version = "0.5.0-alpha.8", default-features = "false", features = ["derive"] }
|
activitystreams = { version = "0.5.0-alpha.9", default-features = "false", features = ["derive"] }
|
||||||
```
|
```
|
||||||
|
|
||||||
| feature | what you get |
|
| feature | what you get |
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
[package]
|
[package]
|
||||||
name = "activitystreams-derive"
|
name = "activitystreams-derive"
|
||||||
description = "Derive macros for activitystreams"
|
description = "Derive macros for activitystreams"
|
||||||
version = "0.5.0-alpha.3"
|
version = "0.5.0-alpha.4"
|
||||||
license = "GPL-3.0"
|
license = "GPL-3.0"
|
||||||
authors = ["asonix <asonix.dev@gmail.com>"]
|
authors = ["asonix <asonix.dev@gmail.com>"]
|
||||||
repository = "https://git.asonix.dog/Aardwolf/activitystreams"
|
repository = "https://git.asonix.dog/Aardwolf/activitystreams"
|
||||||
|
|
|
@ -23,8 +23,8 @@
|
||||||
//!
|
//!
|
||||||
//! First, add `serde` and `activitystreams-derive` to your Cargo.toml
|
//! First, add `serde` and `activitystreams-derive` to your Cargo.toml
|
||||||
//! ```toml
|
//! ```toml
|
||||||
//! activitystreams-derive = "0.5.0-alpha.3"
|
//! activitystreams-derive = "0.5.0-alpha.4"
|
||||||
//! # or activitystreams = "0.5.0-alpha.4"
|
//! # or activitystreams = "0.5.0-alpha.9"
|
||||||
//! serde = { version = "1.0", features = ["derive"] }
|
//! serde = { version = "1.0", features = ["derive"] }
|
||||||
//! ```
|
//! ```
|
||||||
//!
|
//!
|
||||||
|
@ -103,6 +103,66 @@ use syn::{
|
||||||
token, Attribute, Data, DeriveInput, Fields, Ident, LitStr, Result, Token, Type,
|
token, Attribute, Data, DeriveInput, Fields, Ident, LitStr, Result, Token, Type,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/// Generate a type with default extensions
|
||||||
|
///
|
||||||
|
/// This derive
|
||||||
|
/// ```ignore
|
||||||
|
/// use activitystreams::{extensions::Ext, Extensible};
|
||||||
|
///
|
||||||
|
/// #[derive(Clone, Debug, Default, Extensible)]
|
||||||
|
/// #[extension(MyExtension)]
|
||||||
|
/// #[extension(MyOtherExtension)]
|
||||||
|
/// pub struct MyType;
|
||||||
|
/// ```
|
||||||
|
///
|
||||||
|
/// Produces this code
|
||||||
|
/// ```ignore
|
||||||
|
/// impl MyType {
|
||||||
|
/// pub fn full() -> Ext<Ext<MyType, MyExtension>, OtherExtension> {
|
||||||
|
/// Default::default()
|
||||||
|
/// }
|
||||||
|
/// }
|
||||||
|
/// ```
|
||||||
|
#[proc_macro_derive(Extensible, attributes(extension))]
|
||||||
|
pub fn extensible(input: TokenStream) -> TokenStream {
|
||||||
|
let input: DeriveInput = syn::parse(input).unwrap();
|
||||||
|
|
||||||
|
let name = input.ident;
|
||||||
|
|
||||||
|
let kind: proc_macro2::TokenStream = input
|
||||||
|
.attrs
|
||||||
|
.iter()
|
||||||
|
.filter_map(move |attr| {
|
||||||
|
if attr
|
||||||
|
.path
|
||||||
|
.segments
|
||||||
|
.last()
|
||||||
|
.map(|segment| segment.ident == "extension")
|
||||||
|
.unwrap_or(false)
|
||||||
|
{
|
||||||
|
Some(from_value(attr.clone()))
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.fold(quote! {#name}, |acc, ident| {
|
||||||
|
quote! { Ext<#acc, #ident> }
|
||||||
|
});
|
||||||
|
|
||||||
|
let tokens = quote! {
|
||||||
|
impl #name {
|
||||||
|
/// Generate a fully extended type
|
||||||
|
///
|
||||||
|
/// This effect can be achieved with `Self::new().extend(SomeExtension::default())`
|
||||||
|
pub fn full() -> #kind {
|
||||||
|
Default::default()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
tokens.into()
|
||||||
|
}
|
||||||
|
|
||||||
/// Derive implementations for activitystreams objects
|
/// Derive implementations for activitystreams objects
|
||||||
///
|
///
|
||||||
/// ```ignore
|
/// ```ignore
|
||||||
|
@ -135,7 +195,18 @@ pub fn ref_derive(input: TokenStream) -> TokenStream {
|
||||||
};
|
};
|
||||||
|
|
||||||
let name2 = name.clone();
|
let name2 = name.clone();
|
||||||
let base_impls: proc_macro2::TokenStream = input
|
let name3 = name.clone();
|
||||||
|
let base_impl = quote! {
|
||||||
|
impl Base for #name3 {}
|
||||||
|
|
||||||
|
impl #name3 {
|
||||||
|
/// Create from default
|
||||||
|
pub fn new() -> Self {
|
||||||
|
Default::default()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
let trait_impls: proc_macro2::TokenStream = input
|
||||||
.attrs
|
.attrs
|
||||||
.iter()
|
.iter()
|
||||||
.filter_map(move |attr| {
|
.filter_map(move |attr| {
|
||||||
|
@ -191,17 +262,56 @@ pub fn ref_derive(input: TokenStream) -> TokenStream {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl<U> AsRef<#ty> for Ext<#name, U>
|
||||||
|
where
|
||||||
|
U: std::fmt::Debug,
|
||||||
|
{
|
||||||
|
fn as_ref(&self) -> &#ty {
|
||||||
|
self.base.as_ref()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<U, V> AsRef<#ty> for Ext<Ext<#name, U>, V>
|
||||||
|
where
|
||||||
|
U: std::fmt::Debug,
|
||||||
|
V: std::fmt::Debug,
|
||||||
|
{
|
||||||
|
fn as_ref(&self) -> &#ty {
|
||||||
|
self.base.as_ref()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl AsMut<#ty> for #name {
|
impl AsMut<#ty> for #name {
|
||||||
fn as_mut(&mut self) -> &mut #ty {
|
fn as_mut(&mut self) -> &mut #ty {
|
||||||
&mut self.#ident
|
&mut self.#ident
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl<U> AsMut<#ty> for Ext<#name, U>
|
||||||
|
where
|
||||||
|
U: std::fmt::Debug,
|
||||||
|
{
|
||||||
|
fn as_mut(&mut self) -> &mut #ty {
|
||||||
|
self.base.as_mut()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<U, V> AsMut<#ty> for Ext<Ext<#name, U>, V>
|
||||||
|
where
|
||||||
|
U: std::fmt::Debug,
|
||||||
|
V: std::fmt::Debug,
|
||||||
|
{
|
||||||
|
fn as_mut(&mut self) -> &mut #ty {
|
||||||
|
self.base.as_mut()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
let full = quote! {
|
let full = quote! {
|
||||||
#base_impls
|
#base_impl
|
||||||
|
#trait_impls
|
||||||
#tokens
|
#tokens
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1,827 +0,0 @@
|
||||||
/*
|
|
||||||
* This file is part of ActivityStreams.
|
|
||||||
*
|
|
||||||
* Copyright © 2020 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/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
//! Activity traits and types
|
|
||||||
|
|
||||||
use crate::{
|
|
||||||
activity::{
|
|
||||||
kind::*, properties::*, Activity, ActivityBox, IntransitiveActivity,
|
|
||||||
IntransitiveActivityBox,
|
|
||||||
},
|
|
||||||
object::{
|
|
||||||
properties::{ApObjectProperties, ObjectProperties},
|
|
||||||
Object, ObjectBox,
|
|
||||||
},
|
|
||||||
PropRefs,
|
|
||||||
};
|
|
||||||
use serde::{Deserialize, Serialize};
|
|
||||||
|
|
||||||
/// Indicates that the actor accepts the object.
|
|
||||||
///
|
|
||||||
/// The target property can be used in certain circumstances to indicate the context into which the
|
|
||||||
/// object has been accepted.
|
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
#[prop_refs(Object)]
|
|
||||||
#[prop_refs(Activity)]
|
|
||||||
pub struct Accept {
|
|
||||||
#[serde(rename = "type")]
|
|
||||||
kind: AcceptType,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub accept_props: AcceptProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub object_props: ObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub ap_object_props: ApObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub activity_props: ActivityProperties,
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Indicates that the actor has added the object to the target.
|
|
||||||
///
|
|
||||||
/// 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
|
|
||||||
/// originated.
|
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
#[prop_refs(Object)]
|
|
||||||
#[prop_refs(Activity)]
|
|
||||||
pub struct Add {
|
|
||||||
#[serde(rename = "type")]
|
|
||||||
kind: AddType,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub add_props: AddProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub object_props: ObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub ap_object_props: ApObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub activity_props: ActivityProperties,
|
|
||||||
}
|
|
||||||
|
|
||||||
/// 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.
|
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
#[prop_refs(Object)]
|
|
||||||
#[prop_refs(Activity)]
|
|
||||||
pub struct AMove {
|
|
||||||
#[serde(rename = "type")]
|
|
||||||
kind: MoveType,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub move_props: MoveProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub object_props: ObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub ap_object_props: ApObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub activity_props: ActivityProperties,
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Indicates that the actor is calling the target's attention the object.
|
|
||||||
///
|
|
||||||
/// The origin typically has no defined meaning.
|
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
#[prop_refs(Object)]
|
|
||||||
#[prop_refs(Activity)]
|
|
||||||
pub struct Announce {
|
|
||||||
#[serde(rename = "type")]
|
|
||||||
kind: AnnounceType,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub announce_props: AnnounceProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub object_props: ObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub ap_object_props: ApObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub activity_props: ActivityProperties,
|
|
||||||
}
|
|
||||||
|
|
||||||
/// An IntransitiveActivity that indicates that the actor has arrived at the location.
|
|
||||||
///
|
|
||||||
/// The origin can be used to identify the context from which the actor originated. The target
|
|
||||||
/// typically has no defined meaning.
|
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
#[prop_refs(Object)]
|
|
||||||
#[prop_refs(Activity)]
|
|
||||||
#[prop_refs(IntransitiveActivity)]
|
|
||||||
pub struct Arrive {
|
|
||||||
#[serde(rename = "type")]
|
|
||||||
kind: ArriveType,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub arrive_props: ArriveProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub object_props: ObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub ap_object_props: ApObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub activity_props: ActivityProperties,
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Indicates that the actor is blocking the object.
|
|
||||||
///
|
|
||||||
/// 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
|
|
||||||
/// defined meaning.
|
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
#[prop_refs(Object)]
|
|
||||||
#[prop_refs(Activity)]
|
|
||||||
pub struct Block {
|
|
||||||
#[serde(rename = "type")]
|
|
||||||
kind: BlockType,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub block_props: BlockProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub object_props: ObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub ap_object_props: ApObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub activity_props: ActivityProperties,
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Indicates that the actor has created the object.
|
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
#[prop_refs(Object)]
|
|
||||||
#[prop_refs(Activity)]
|
|
||||||
pub struct Create {
|
|
||||||
#[serde(rename = "type")]
|
|
||||||
kind: CreateType,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub create_props: CreateProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub object_props: ObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub ap_object_props: ApObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub activity_props: ActivityProperties,
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Indicates that the actor has deleted the object.
|
|
||||||
///
|
|
||||||
/// If specified, the origin indicates the context from which the object was deleted.
|
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
#[prop_refs(Object)]
|
|
||||||
#[prop_refs(Activity)]
|
|
||||||
pub struct Delete {
|
|
||||||
#[serde(rename = "type")]
|
|
||||||
kind: DeleteType,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub delete_props: DeleteProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub object_props: ObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub ap_object_props: ApObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub activity_props: ActivityProperties,
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Indicates that the actor dislikes the object.
|
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
#[prop_refs(Object)]
|
|
||||||
#[prop_refs(Activity)]
|
|
||||||
pub struct Dislike {
|
|
||||||
#[serde(rename = "type")]
|
|
||||||
kind: DislikeType,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub dislike_props: DislikeProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub object_props: ObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub ap_object_props: ApObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub activity_props: ActivityProperties,
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Indicates that the actor is "flagging" the object.
|
|
||||||
///
|
|
||||||
/// Flagging is defined in the sense common to many social platforms as reporting content as being
|
|
||||||
/// inappropriate for any number of reasons.
|
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
#[prop_refs(Object)]
|
|
||||||
#[prop_refs(Activity)]
|
|
||||||
pub struct Flag {
|
|
||||||
#[serde(rename = "type")]
|
|
||||||
kind: FlagType,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub flag_props: FlagProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub object_props: ObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub ap_object_props: ApObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub activity_props: ActivityProperties,
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Indicates that the actor is "following" the object.
|
|
||||||
///
|
|
||||||
/// 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
|
|
||||||
/// no defined meaning.
|
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
#[prop_refs(Object)]
|
|
||||||
#[prop_refs(Activity)]
|
|
||||||
pub struct Follow {
|
|
||||||
#[serde(rename = "type")]
|
|
||||||
kind: FollowType,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub follow_props: FollowProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub object_props: ObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub ap_object_props: ApObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub activity_props: ActivityProperties,
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Indicates that the actor is ignoring the object.
|
|
||||||
///
|
|
||||||
/// The target and origin typically have no defined meaning.
|
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
#[prop_refs(Object)]
|
|
||||||
#[prop_refs(Activity)]
|
|
||||||
pub struct Ignore {
|
|
||||||
#[serde(rename = "type")]
|
|
||||||
kind: IgnoreType,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub ignore_props: IgnoreProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub object_props: ObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub ap_object_props: ApObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub activity_props: ActivityProperties,
|
|
||||||
}
|
|
||||||
|
|
||||||
/// A specialization of Offer in which the actor is extending an invitation for the object to the
|
|
||||||
/// target.
|
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
#[prop_refs(Object)]
|
|
||||||
#[prop_refs(Activity)]
|
|
||||||
pub struct Invite {
|
|
||||||
#[serde(rename = "type")]
|
|
||||||
kind: InviteType,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub invite_props: InviteProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub object_props: ObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub ap_object_props: ApObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub activity_props: ActivityProperties,
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Indicates that the actor has joined the object.
|
|
||||||
///
|
|
||||||
/// The target and origin typically have no defined meaning
|
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
#[prop_refs(Object)]
|
|
||||||
#[prop_refs(Activity)]
|
|
||||||
pub struct Join {
|
|
||||||
#[serde(rename = "type")]
|
|
||||||
kind: JoinType,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub join_props: JoinProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub object_props: ObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub ap_object_props: ApObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub activity_props: ActivityProperties,
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Indicates that the actor has left the object.
|
|
||||||
///
|
|
||||||
/// The target and origin typically have no meaning.
|
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
#[prop_refs(Object)]
|
|
||||||
#[prop_refs(Activity)]
|
|
||||||
pub struct Leave {
|
|
||||||
#[serde(rename = "type")]
|
|
||||||
kind: LeaveType,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub leave_props: LeaveProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub object_props: ObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub ap_object_props: ApObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub activity_props: ActivityProperties,
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Indicates that the actor likes, recommends or endorses the object.
|
|
||||||
///
|
|
||||||
/// The target and origin typically have no defined meaning.
|
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
#[prop_refs(Object)]
|
|
||||||
#[prop_refs(Activity)]
|
|
||||||
pub struct Like {
|
|
||||||
#[serde(rename = "type")]
|
|
||||||
kind: LikeType,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub like_props: LikeProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub object_props: ObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub ap_object_props: ApObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub activity_props: ActivityProperties,
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Indicates that the actor has listened to the object.
|
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
#[prop_refs(Object)]
|
|
||||||
#[prop_refs(Activity)]
|
|
||||||
pub struct Listen {
|
|
||||||
#[serde(rename = "type")]
|
|
||||||
kind: ListenType,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub listen_props: ListenProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub object_props: ObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub ap_object_props: ApObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub activity_props: ActivityProperties,
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Indicates that the actor is offering the object.
|
|
||||||
///
|
|
||||||
/// If specified, the target indicates the entity to which the object is being offered.
|
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
#[prop_refs(Object)]
|
|
||||||
#[prop_refs(Activity)]
|
|
||||||
pub struct Offer {
|
|
||||||
#[serde(rename = "type")]
|
|
||||||
kind: OfferType,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub offer_props: OfferProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub object_props: ObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub ap_object_props: ApObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub activity_props: ActivityProperties,
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Represents a question being asked.
|
|
||||||
///
|
|
||||||
/// Question objects are an extension of IntransitiveActivity. That is, the Question object is an
|
|
||||||
/// Activity, but the direct object is the question itself and therefore it would not contain an
|
|
||||||
/// object property.
|
|
||||||
///
|
|
||||||
/// Either of the anyOf and oneOf properties MAY be used to express possible answers, but a
|
|
||||||
/// Question object MUST NOT have both properties.
|
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
#[prop_refs(Object)]
|
|
||||||
#[prop_refs(Activity)]
|
|
||||||
#[prop_refs(IntransitiveActivity)]
|
|
||||||
pub struct Question {
|
|
||||||
#[serde(rename = "type")]
|
|
||||||
kind: QuestionType,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub question_props: QuestionProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub object_props: ObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub ap_object_props: ApObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub activity_props: ActivityProperties,
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Indicates that the actor has read the object.
|
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
#[prop_refs(Object)]
|
|
||||||
#[prop_refs(Activity)]
|
|
||||||
pub struct Read {
|
|
||||||
#[serde(rename = "type")]
|
|
||||||
kind: ReadType,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub read_props: ReadProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub object_props: ObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub ap_object_props: ApObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub activity_props: ActivityProperties,
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Indicates that the actor is rejecting the object.
|
|
||||||
///
|
|
||||||
/// The target and origin typically have no defined meaning.
|
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
#[prop_refs(Object)]
|
|
||||||
#[prop_refs(Activity)]
|
|
||||||
pub struct Reject {
|
|
||||||
#[serde(rename = "type")]
|
|
||||||
kind: RejectType,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub reject_props: RejectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub object_props: ObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub ap_object_props: ApObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub activity_props: ActivityProperties,
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Indicates that the actor is removing the object.
|
|
||||||
///
|
|
||||||
/// If specified, the origin indicates the context from which the object is being removed.
|
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
#[prop_refs(Object)]
|
|
||||||
#[prop_refs(Activity)]
|
|
||||||
pub struct Remove {
|
|
||||||
#[serde(rename = "type")]
|
|
||||||
kind: RemoveType,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub remove_props: RemoveProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub object_props: ObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub ap_object_props: ApObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub activity_props: ActivityProperties,
|
|
||||||
}
|
|
||||||
|
|
||||||
/// A specialization of Accept indicating that the acceptance is tentative.
|
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
#[prop_refs(Object)]
|
|
||||||
#[prop_refs(Activity)]
|
|
||||||
pub struct TentativeAccept {
|
|
||||||
#[serde(rename = "type")]
|
|
||||||
kind: TentativeAcceptType,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub tentative_accept_props: TentativeAcceptProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub object_props: ObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub ap_object_props: ApObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub activity_props: ActivityProperties,
|
|
||||||
}
|
|
||||||
|
|
||||||
/// A specialization of Reject in which the rejection is considered tentative.
|
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
#[prop_refs(Object)]
|
|
||||||
#[prop_refs(Activity)]
|
|
||||||
pub struct TentativeReject {
|
|
||||||
#[serde(rename = "type")]
|
|
||||||
kind: TentativeRejectType,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub tentative_reject_props: TentativeRejectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub object_props: ObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub ap_object_props: ApObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub activity_props: ActivityProperties,
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Indicates that the actor is traveling to target from origin.
|
|
||||||
///
|
|
||||||
/// Travel is an IntransitiveObject whose actor specifies the direct object. If the target or
|
|
||||||
/// origin are not specified, either can be determined by context.
|
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
#[prop_refs(Object)]
|
|
||||||
#[prop_refs(Activity)]
|
|
||||||
#[prop_refs(IntransitiveActivity)]
|
|
||||||
pub struct Travel {
|
|
||||||
#[serde(rename = "type")]
|
|
||||||
kind: TravelType,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub travel_props: TravelProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub object_props: ObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub ap_object_props: ApObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub activity_props: ActivityProperties,
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Indicates that the actor is undoing the object.
|
|
||||||
///
|
|
||||||
/// In most cases, the object will be an Activity describing some previously performed action (for
|
|
||||||
/// instance, a person may have previously "liked" an article but, for whatever reason, might
|
|
||||||
/// choose to undo that like at some later point in time).
|
|
||||||
///
|
|
||||||
/// The target and origin typically have no defined meaning.
|
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
#[prop_refs(Object)]
|
|
||||||
#[prop_refs(Activity)]
|
|
||||||
pub struct Undo {
|
|
||||||
#[serde(rename = "type")]
|
|
||||||
kind: UndoType,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub undo_props: UndoProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub object_props: ObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub ap_object_props: ApObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub activity_props: ActivityProperties,
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Indicates that the actor has updated the object.
|
|
||||||
///
|
|
||||||
/// Note, however, that this vocabulary does not define a mechanism for describing the actual set
|
|
||||||
/// of modifications made to object.
|
|
||||||
///
|
|
||||||
/// The target and origin typically have no defined meaning.
|
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
#[prop_refs(Object)]
|
|
||||||
#[prop_refs(Activity)]
|
|
||||||
pub struct Update {
|
|
||||||
#[serde(rename = "type")]
|
|
||||||
kind: UpdateType,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub update_props: UpdateProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub object_props: ObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub ap_object_props: ApObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub activity_props: ActivityProperties,
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Indicates that the actor has viewed the object.
|
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
#[prop_refs(Object)]
|
|
||||||
#[prop_refs(Activity)]
|
|
||||||
pub struct View {
|
|
||||||
#[serde(rename = "type")]
|
|
||||||
kind: ViewType,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub view_props: ViewProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub object_props: ObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub ap_object_props: ApObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub activity_props: ActivityProperties,
|
|
||||||
}
|
|
|
@ -17,17 +17,19 @@
|
||||||
* along with ActivityStreams. If not, see <http://www.gnu.org/licenses/>.
|
* along with ActivityStreams. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#[cfg(feature = "types")]
|
|
||||||
pub mod apub;
|
|
||||||
#[cfg(feature = "kinds")]
|
#[cfg(feature = "kinds")]
|
||||||
pub mod kind;
|
pub mod kind;
|
||||||
#[cfg(feature = "types")]
|
#[cfg(feature = "types")]
|
||||||
pub mod properties;
|
pub mod properties;
|
||||||
#[cfg(feature = "types")]
|
#[cfg(feature = "types")]
|
||||||
pub mod streams;
|
mod types;
|
||||||
|
|
||||||
#[cfg(feature = "types")]
|
#[cfg(feature = "types")]
|
||||||
use crate::wrapper_type;
|
pub use self::types::{
|
||||||
|
AMove, Accept, Add, Announce, Arrive, Block, Create, Delete, Dislike, Flag, Follow, Ignore,
|
||||||
|
Invite, Join, Leave, Like, Listen, Offer, Question, Read, Reject, Remove, TentativeAccept,
|
||||||
|
TentativeReject, Travel, Undo, Update, View,
|
||||||
|
};
|
||||||
|
|
||||||
use crate::object::Object;
|
use crate::object::Object;
|
||||||
|
|
||||||
|
@ -37,12 +39,12 @@ use crate::object::Object;
|
||||||
/// The `Activity` type itself serves as an abstract base type for all types of activities. It is
|
/// The `Activity` type itself serves as an abstract base type for all types of activities. It is
|
||||||
/// important to note that the `Activity` type itself does not carry any specific semantics about
|
/// important to note that the `Activity` type itself does not carry any specific semantics about
|
||||||
/// the kind of action being taken.
|
/// the kind of action being taken.
|
||||||
#[cfg_attr(feature = "types", wrapper_type)]
|
#[cfg_attr(feature = "derive", crate::wrapper_type)]
|
||||||
pub trait Activity: Object {}
|
pub trait Activity: Object {}
|
||||||
|
|
||||||
/// Instances of `IntransitiveActivity` are a subtype of `Activity` representing intransitive
|
/// Instances of `IntransitiveActivity` are a subtype of `Activity` representing intransitive
|
||||||
/// actions.
|
/// actions.
|
||||||
///
|
///
|
||||||
/// The `object` property is therefore inappropriate for these activities.
|
/// The `object` property is therefore inappropriate for these activities.
|
||||||
#[cfg_attr(feature = "types", wrapper_type)]
|
#[cfg_attr(feature = "derive", crate::wrapper_type)]
|
||||||
pub trait IntransitiveActivity: Activity {}
|
pub trait IntransitiveActivity: Activity {}
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
//! properties::ObjectProperties,
|
//! properties::ObjectProperties,
|
||||||
//! Object, ObjectBox,
|
//! Object, ObjectBox,
|
||||||
//! },
|
//! },
|
||||||
//! PropRefs,
|
//! Base, BaseBox, PropRefs,
|
||||||
//! };
|
//! };
|
||||||
//! use serde::{Deserialize, Serialize};
|
//! use serde::{Deserialize, Serialize};
|
||||||
//!
|
//!
|
||||||
|
@ -59,7 +59,7 @@
|
||||||
//! # fn main() {}
|
//! # fn main() {}
|
||||||
//! ```
|
//! ```
|
||||||
|
|
||||||
use crate::{link::LinkBox, object::ObjectBox, primitives::*, properties};
|
use crate::{primitives::*, properties, BaseBox};
|
||||||
|
|
||||||
properties! {
|
properties! {
|
||||||
Activity {
|
Activity {
|
||||||
|
@ -81,8 +81,7 @@ properties! {
|
||||||
],
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
ObjectBox,
|
BaseBox
|
||||||
LinkBox,
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -95,8 +94,7 @@ properties! {
|
||||||
],
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
ObjectBox,
|
BaseBox,
|
||||||
LinkBox,
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -119,8 +117,7 @@ properties! {
|
||||||
],
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
ObjectBox,
|
BaseBox,
|
||||||
LinkBox,
|
|
||||||
],
|
],
|
||||||
required
|
required
|
||||||
},
|
},
|
||||||
|
@ -138,8 +135,7 @@ properties! {
|
||||||
],
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
ObjectBox,
|
BaseBox,
|
||||||
LinkBox,
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -157,8 +153,7 @@ properties! {
|
||||||
],
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
ObjectBox,
|
BaseBox,
|
||||||
LinkBox,
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -181,8 +176,7 @@ properties! {
|
||||||
],
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
ObjectBox,
|
BaseBox,
|
||||||
LinkBox,
|
|
||||||
],
|
],
|
||||||
required,
|
required,
|
||||||
},
|
},
|
||||||
|
@ -199,8 +193,7 @@ properties! {
|
||||||
],
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
ObjectBox,
|
BaseBox,
|
||||||
LinkBox,
|
|
||||||
],
|
],
|
||||||
required,
|
required,
|
||||||
},
|
},
|
||||||
|
@ -224,8 +217,7 @@ properties! {
|
||||||
],
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
ObjectBox,
|
BaseBox,
|
||||||
LinkBox,
|
|
||||||
],
|
],
|
||||||
required,
|
required,
|
||||||
},
|
},
|
||||||
|
@ -242,8 +234,7 @@ properties! {
|
||||||
],
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
ObjectBox,
|
BaseBox,
|
||||||
LinkBox,
|
|
||||||
],
|
],
|
||||||
required,
|
required,
|
||||||
},
|
},
|
||||||
|
@ -262,8 +253,7 @@ properties! {
|
||||||
],
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
ObjectBox,
|
BaseBox,
|
||||||
LinkBox,
|
|
||||||
],
|
],
|
||||||
required,
|
required,
|
||||||
},
|
},
|
||||||
|
@ -287,8 +277,7 @@ properties! {
|
||||||
],
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
ObjectBox,
|
BaseBox,
|
||||||
LinkBox,
|
|
||||||
],
|
],
|
||||||
required,
|
required,
|
||||||
},
|
},
|
||||||
|
@ -305,8 +294,7 @@ properties! {
|
||||||
],
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
ObjectBox,
|
BaseBox,
|
||||||
LinkBox,
|
|
||||||
],
|
],
|
||||||
required,
|
required,
|
||||||
},
|
},
|
||||||
|
@ -325,8 +313,7 @@ properties! {
|
||||||
],
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
ObjectBox,
|
BaseBox,
|
||||||
LinkBox,
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -349,8 +336,7 @@ properties! {
|
||||||
],
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
ObjectBox,
|
BaseBox,
|
||||||
LinkBox,
|
|
||||||
],
|
],
|
||||||
required,
|
required,
|
||||||
},
|
},
|
||||||
|
@ -367,8 +353,7 @@ properties! {
|
||||||
],
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
ObjectBox,
|
BaseBox,
|
||||||
LinkBox,
|
|
||||||
],
|
],
|
||||||
required,
|
required,
|
||||||
},
|
},
|
||||||
|
@ -386,8 +371,7 @@ properties! {
|
||||||
],
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
ObjectBox,
|
BaseBox,
|
||||||
LinkBox,
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -410,8 +394,7 @@ properties! {
|
||||||
],
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
ObjectBox,
|
BaseBox,
|
||||||
LinkBox,
|
|
||||||
],
|
],
|
||||||
required,
|
required,
|
||||||
},
|
},
|
||||||
|
@ -428,8 +411,7 @@ properties! {
|
||||||
],
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
ObjectBox,
|
BaseBox,
|
||||||
LinkBox,
|
|
||||||
],
|
],
|
||||||
required,
|
required,
|
||||||
},
|
},
|
||||||
|
@ -447,8 +429,7 @@ properties! {
|
||||||
],
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
ObjectBox,
|
BaseBox,
|
||||||
LinkBox,
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -466,8 +447,7 @@ properties! {
|
||||||
],
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
ObjectBox,
|
BaseBox,
|
||||||
LinkBox,
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -490,8 +470,7 @@ properties! {
|
||||||
],
|
],
|
||||||
types [
|
types [
|
||||||
XsdString,
|
XsdString,
|
||||||
ObjectBox,
|
BaseBox,
|
||||||
LinkBox,
|
|
||||||
],
|
],
|
||||||
required,
|
required,
|
||||||
},
|
},
|
||||||
|
@ -509,8 +488,7 @@ properties! {
|
||||||
],
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
ObjectBox,
|
BaseBox,
|
||||||
LinkBox,
|
|
||||||
],
|
],
|
||||||
required,
|
required,
|
||||||
},
|
},
|
||||||
|
@ -587,8 +565,7 @@ properties! {
|
||||||
],
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
ObjectBox,
|
BaseBox,
|
||||||
LinkBox,
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -604,8 +581,7 @@ properties! {
|
||||||
],
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
ObjectBox,
|
BaseBox,
|
||||||
LinkBox,
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,19 +22,23 @@ use crate::{
|
||||||
kind::*, properties::*, Activity, ActivityBox, IntransitiveActivity,
|
kind::*, properties::*, Activity, ActivityBox, IntransitiveActivity,
|
||||||
IntransitiveActivityBox,
|
IntransitiveActivityBox,
|
||||||
},
|
},
|
||||||
object::{properties::ObjectProperties, Object, ObjectBox},
|
ext::Ext,
|
||||||
PropRefs,
|
object::{
|
||||||
|
properties::{ApObjectProperties, ObjectProperties},
|
||||||
|
Object, ObjectBox,
|
||||||
|
},
|
||||||
|
Base, Extensible, PropRefs,
|
||||||
};
|
};
|
||||||
use serde::{Deserialize, Serialize};
|
|
||||||
|
|
||||||
/// Indicates that the actor accepts the object.
|
/// Indicates that the actor accepts the object.
|
||||||
///
|
///
|
||||||
/// 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, PropRefs, Serialize)]
|
#[derive(Clone, Debug, Default, Extensible, PropRefs, serde::Deserialize, serde::Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
#[prop_refs(Object)]
|
#[prop_refs(Object)]
|
||||||
#[prop_refs(Activity)]
|
#[prop_refs(Activity)]
|
||||||
|
#[extension(ApObjectProperties)]
|
||||||
pub struct Accept {
|
pub struct Accept {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
#[serde(alias = "objectType")]
|
#[serde(alias = "objectType")]
|
||||||
|
@ -62,10 +66,11 @@ pub struct Accept {
|
||||||
/// 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, PropRefs)]
|
#[derive(Clone, Debug, Default, Extensible, PropRefs, serde::Deserialize, serde::Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
#[prop_refs(Object)]
|
#[prop_refs(Object)]
|
||||||
#[prop_refs(Activity)]
|
#[prop_refs(Activity)]
|
||||||
|
#[extension(ApObjectProperties)]
|
||||||
pub struct Add {
|
pub struct Add {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
#[serde(alias = "objectType")]
|
#[serde(alias = "objectType")]
|
||||||
|
@ -91,10 +96,11 @@ pub struct Add {
|
||||||
/// 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, PropRefs)]
|
#[derive(Clone, Debug, Default, Extensible, PropRefs, serde::Deserialize, serde::Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
#[prop_refs(Object)]
|
#[prop_refs(Object)]
|
||||||
#[prop_refs(Activity)]
|
#[prop_refs(Activity)]
|
||||||
|
#[extension(ApObjectProperties)]
|
||||||
pub struct AMove {
|
pub struct AMove {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
#[serde(alias = "objectType")]
|
#[serde(alias = "objectType")]
|
||||||
|
@ -120,10 +126,11 @@ pub struct AMove {
|
||||||
/// 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, PropRefs)]
|
#[derive(Clone, Debug, Default, Extensible, PropRefs, serde::Deserialize, serde::Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
#[prop_refs(Object)]
|
#[prop_refs(Object)]
|
||||||
#[prop_refs(Activity)]
|
#[prop_refs(Activity)]
|
||||||
|
#[extension(ApObjectProperties)]
|
||||||
pub struct Announce {
|
pub struct Announce {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
#[serde(alias = "objectType")]
|
#[serde(alias = "objectType")]
|
||||||
|
@ -150,10 +157,11 @@ pub struct Announce {
|
||||||
///
|
///
|
||||||
/// 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, PropRefs)]
|
#[derive(Clone, Debug, Default, Extensible, PropRefs, serde::Deserialize, serde::Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
#[prop_refs(Object)]
|
#[prop_refs(Object)]
|
||||||
#[prop_refs(Activity)]
|
#[prop_refs(Activity)]
|
||||||
|
#[extension(ApObjectProperties)]
|
||||||
#[prop_refs(IntransitiveActivity)]
|
#[prop_refs(IntransitiveActivity)]
|
||||||
pub struct Arrive {
|
pub struct Arrive {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
|
@ -182,10 +190,11 @@ pub struct Arrive {
|
||||||
/// 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, PropRefs)]
|
#[derive(Clone, Debug, Default, Extensible, PropRefs, serde::Deserialize, serde::Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
#[prop_refs(Object)]
|
#[prop_refs(Object)]
|
||||||
#[prop_refs(Activity)]
|
#[prop_refs(Activity)]
|
||||||
|
#[extension(ApObjectProperties)]
|
||||||
pub struct Block {
|
pub struct Block {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
#[serde(alias = "objectType")]
|
#[serde(alias = "objectType")]
|
||||||
|
@ -209,10 +218,11 @@ pub struct Block {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Indicates that the actor has created the object.
|
/// Indicates that the actor has created the object.
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
#[derive(Clone, Debug, Default, Extensible, PropRefs, serde::Deserialize, serde::Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
#[prop_refs(Object)]
|
#[prop_refs(Object)]
|
||||||
#[prop_refs(Activity)]
|
#[prop_refs(Activity)]
|
||||||
|
#[extension(ApObjectProperties)]
|
||||||
pub struct Create {
|
pub struct Create {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
#[serde(alias = "objectType")]
|
#[serde(alias = "objectType")]
|
||||||
|
@ -238,10 +248,11 @@ pub struct Create {
|
||||||
/// 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, PropRefs)]
|
#[derive(Clone, Debug, Default, Extensible, PropRefs, serde::Deserialize, serde::Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
#[prop_refs(Object)]
|
#[prop_refs(Object)]
|
||||||
#[prop_refs(Activity)]
|
#[prop_refs(Activity)]
|
||||||
|
#[extension(ApObjectProperties)]
|
||||||
pub struct Delete {
|
pub struct Delete {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
#[serde(alias = "objectType")]
|
#[serde(alias = "objectType")]
|
||||||
|
@ -265,10 +276,11 @@ pub struct Delete {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Indicates that the actor dislikes the object.
|
/// Indicates that the actor dislikes the object.
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
#[derive(Clone, Debug, Default, Extensible, PropRefs, serde::Deserialize, serde::Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
#[prop_refs(Object)]
|
#[prop_refs(Object)]
|
||||||
#[prop_refs(Activity)]
|
#[prop_refs(Activity)]
|
||||||
|
#[extension(ApObjectProperties)]
|
||||||
pub struct Dislike {
|
pub struct Dislike {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
#[serde(alias = "objectType")]
|
#[serde(alias = "objectType")]
|
||||||
|
@ -295,10 +307,11 @@ pub struct Dislike {
|
||||||
///
|
///
|
||||||
/// 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, PropRefs)]
|
#[derive(Clone, Debug, Default, Extensible, PropRefs, serde::Deserialize, serde::Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
#[prop_refs(Object)]
|
#[prop_refs(Object)]
|
||||||
#[prop_refs(Activity)]
|
#[prop_refs(Activity)]
|
||||||
|
#[extension(ApObjectProperties)]
|
||||||
pub struct Flag {
|
pub struct Flag {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
#[serde(alias = "objectType")]
|
#[serde(alias = "objectType")]
|
||||||
|
@ -326,10 +339,11 @@ pub struct Flag {
|
||||||
/// 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, PropRefs)]
|
#[derive(Clone, Debug, Default, Extensible, PropRefs, serde::Deserialize, serde::Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
#[prop_refs(Object)]
|
#[prop_refs(Object)]
|
||||||
#[prop_refs(Activity)]
|
#[prop_refs(Activity)]
|
||||||
|
#[extension(ApObjectProperties)]
|
||||||
pub struct Follow {
|
pub struct Follow {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
#[serde(alias = "objectType")]
|
#[serde(alias = "objectType")]
|
||||||
|
@ -355,10 +369,11 @@ pub struct Follow {
|
||||||
/// 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, PropRefs)]
|
#[derive(Clone, Debug, Default, Extensible, PropRefs, serde::Deserialize, serde::Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
#[prop_refs(Object)]
|
#[prop_refs(Object)]
|
||||||
#[prop_refs(Activity)]
|
#[prop_refs(Activity)]
|
||||||
|
#[extension(ApObjectProperties)]
|
||||||
pub struct Ignore {
|
pub struct Ignore {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
#[serde(alias = "objectType")]
|
#[serde(alias = "objectType")]
|
||||||
|
@ -383,10 +398,11 @@ pub struct Ignore {
|
||||||
|
|
||||||
/// 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, PropRefs)]
|
#[derive(Clone, Debug, Default, Extensible, PropRefs, serde::Deserialize, serde::Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
#[prop_refs(Object)]
|
#[prop_refs(Object)]
|
||||||
#[prop_refs(Activity)]
|
#[prop_refs(Activity)]
|
||||||
|
#[extension(ApObjectProperties)]
|
||||||
pub struct Invite {
|
pub struct Invite {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
#[serde(alias = "objectType")]
|
#[serde(alias = "objectType")]
|
||||||
|
@ -412,10 +428,11 @@ pub struct Invite {
|
||||||
/// 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, PropRefs)]
|
#[derive(Clone, Debug, Default, Extensible, PropRefs, serde::Deserialize, serde::Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
#[prop_refs(Object)]
|
#[prop_refs(Object)]
|
||||||
#[prop_refs(Activity)]
|
#[prop_refs(Activity)]
|
||||||
|
#[extension(ApObjectProperties)]
|
||||||
pub struct Join {
|
pub struct Join {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
#[serde(alias = "objectType")]
|
#[serde(alias = "objectType")]
|
||||||
|
@ -441,10 +458,11 @@ pub struct Join {
|
||||||
/// 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, PropRefs)]
|
#[derive(Clone, Debug, Default, Extensible, PropRefs, serde::Deserialize, serde::Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
#[prop_refs(Object)]
|
#[prop_refs(Object)]
|
||||||
#[prop_refs(Activity)]
|
#[prop_refs(Activity)]
|
||||||
|
#[extension(ApObjectProperties)]
|
||||||
pub struct Leave {
|
pub struct Leave {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
#[serde(alias = "objectType")]
|
#[serde(alias = "objectType")]
|
||||||
|
@ -470,10 +488,11 @@ pub struct Leave {
|
||||||
/// 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, PropRefs)]
|
#[derive(Clone, Debug, Default, Extensible, PropRefs, serde::Deserialize, serde::Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
#[prop_refs(Object)]
|
#[prop_refs(Object)]
|
||||||
#[prop_refs(Activity)]
|
#[prop_refs(Activity)]
|
||||||
|
#[extension(ApObjectProperties)]
|
||||||
pub struct Like {
|
pub struct Like {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
#[serde(alias = "objectType")]
|
#[serde(alias = "objectType")]
|
||||||
|
@ -497,10 +516,11 @@ pub struct Like {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Indicates that the actor has listened to the object.
|
/// Indicates that the actor has listened to the object.
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
#[derive(Clone, Debug, Default, Extensible, PropRefs, serde::Deserialize, serde::Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
#[prop_refs(Object)]
|
#[prop_refs(Object)]
|
||||||
#[prop_refs(Activity)]
|
#[prop_refs(Activity)]
|
||||||
|
#[extension(ApObjectProperties)]
|
||||||
pub struct Listen {
|
pub struct Listen {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
#[serde(alias = "objectType")]
|
#[serde(alias = "objectType")]
|
||||||
|
@ -526,10 +546,11 @@ pub struct Listen {
|
||||||
/// 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, PropRefs)]
|
#[derive(Clone, Debug, Default, Extensible, PropRefs, serde::Deserialize, serde::Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
#[prop_refs(Object)]
|
#[prop_refs(Object)]
|
||||||
#[prop_refs(Activity)]
|
#[prop_refs(Activity)]
|
||||||
|
#[extension(ApObjectProperties)]
|
||||||
pub struct Offer {
|
pub struct Offer {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
#[serde(alias = "objectType")]
|
#[serde(alias = "objectType")]
|
||||||
|
@ -560,10 +581,11 @@ pub struct Offer {
|
||||||
///
|
///
|
||||||
/// 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, PropRefs)]
|
#[derive(Clone, Debug, Default, Extensible, PropRefs, serde::Deserialize, serde::Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
#[prop_refs(Object)]
|
#[prop_refs(Object)]
|
||||||
#[prop_refs(Activity)]
|
#[prop_refs(Activity)]
|
||||||
|
#[extension(ApObjectProperties)]
|
||||||
#[prop_refs(IntransitiveActivity)]
|
#[prop_refs(IntransitiveActivity)]
|
||||||
pub struct Question {
|
pub struct Question {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
|
@ -588,10 +610,11 @@ pub struct Question {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Indicates that the actor has read the object.
|
/// Indicates that the actor has read the object.
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
#[derive(Clone, Debug, Default, Extensible, PropRefs, serde::Deserialize, serde::Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
#[prop_refs(Object)]
|
#[prop_refs(Object)]
|
||||||
#[prop_refs(Activity)]
|
#[prop_refs(Activity)]
|
||||||
|
#[extension(ApObjectProperties)]
|
||||||
pub struct Read {
|
pub struct Read {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
#[serde(alias = "objectType")]
|
#[serde(alias = "objectType")]
|
||||||
|
@ -617,10 +640,11 @@ pub struct Read {
|
||||||
/// 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, PropRefs)]
|
#[derive(Clone, Debug, Default, Extensible, PropRefs, serde::Deserialize, serde::Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
#[prop_refs(Object)]
|
#[prop_refs(Object)]
|
||||||
#[prop_refs(Activity)]
|
#[prop_refs(Activity)]
|
||||||
|
#[extension(ApObjectProperties)]
|
||||||
pub struct Reject {
|
pub struct Reject {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
#[serde(alias = "objectType")]
|
#[serde(alias = "objectType")]
|
||||||
|
@ -646,10 +670,11 @@ pub struct Reject {
|
||||||
/// 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, PropRefs)]
|
#[derive(Clone, Debug, Default, Extensible, PropRefs, serde::Deserialize, serde::Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
#[prop_refs(Object)]
|
#[prop_refs(Object)]
|
||||||
#[prop_refs(Activity)]
|
#[prop_refs(Activity)]
|
||||||
|
#[extension(ApObjectProperties)]
|
||||||
pub struct Remove {
|
pub struct Remove {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
#[serde(alias = "objectType")]
|
#[serde(alias = "objectType")]
|
||||||
|
@ -673,10 +698,11 @@ pub struct Remove {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// 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, PropRefs)]
|
#[derive(Clone, Debug, Default, Extensible, PropRefs, serde::Deserialize, serde::Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
#[prop_refs(Object)]
|
#[prop_refs(Object)]
|
||||||
#[prop_refs(Activity)]
|
#[prop_refs(Activity)]
|
||||||
|
#[extension(ApObjectProperties)]
|
||||||
pub struct TentativeAccept {
|
pub struct TentativeAccept {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
#[serde(alias = "objectType")]
|
#[serde(alias = "objectType")]
|
||||||
|
@ -700,10 +726,11 @@ pub struct TentativeAccept {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// 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, PropRefs)]
|
#[derive(Clone, Debug, Default, Extensible, PropRefs, serde::Deserialize, serde::Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
#[prop_refs(Object)]
|
#[prop_refs(Object)]
|
||||||
#[prop_refs(Activity)]
|
#[prop_refs(Activity)]
|
||||||
|
#[extension(ApObjectProperties)]
|
||||||
pub struct TentativeReject {
|
pub struct TentativeReject {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
#[serde(alias = "objectType")]
|
#[serde(alias = "objectType")]
|
||||||
|
@ -730,10 +757,11 @@ pub struct TentativeReject {
|
||||||
///
|
///
|
||||||
/// 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, PropRefs)]
|
#[derive(Clone, Debug, Default, Extensible, PropRefs, serde::Deserialize, serde::Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
#[prop_refs(Object)]
|
#[prop_refs(Object)]
|
||||||
#[prop_refs(Activity)]
|
#[prop_refs(Activity)]
|
||||||
|
#[extension(ApObjectProperties)]
|
||||||
#[prop_refs(IntransitiveActivity)]
|
#[prop_refs(IntransitiveActivity)]
|
||||||
pub struct Travel {
|
pub struct Travel {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
|
@ -764,10 +792,11 @@ pub struct Travel {
|
||||||
/// 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, PropRefs)]
|
#[derive(Clone, Debug, Default, Extensible, PropRefs, serde::Deserialize, serde::Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
#[prop_refs(Object)]
|
#[prop_refs(Object)]
|
||||||
#[prop_refs(Activity)]
|
#[prop_refs(Activity)]
|
||||||
|
#[extension(ApObjectProperties)]
|
||||||
pub struct Undo {
|
pub struct Undo {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
#[serde(alias = "objectType")]
|
#[serde(alias = "objectType")]
|
||||||
|
@ -796,10 +825,11 @@ pub struct Undo {
|
||||||
/// 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, PropRefs)]
|
#[derive(Clone, Debug, Default, Extensible, PropRefs, serde::Deserialize, serde::Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
#[prop_refs(Object)]
|
#[prop_refs(Object)]
|
||||||
#[prop_refs(Activity)]
|
#[prop_refs(Activity)]
|
||||||
|
#[extension(ApObjectProperties)]
|
||||||
pub struct Update {
|
pub struct Update {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
#[serde(alias = "objectType")]
|
#[serde(alias = "objectType")]
|
||||||
|
@ -823,10 +853,11 @@ pub struct Update {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Indicates that the actor has viewed the object.
|
/// Indicates that the actor has viewed the object.
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
#[derive(Clone, Debug, Default, Extensible, PropRefs, serde::Deserialize, serde::Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
#[prop_refs(Object)]
|
#[prop_refs(Object)]
|
||||||
#[prop_refs(Activity)]
|
#[prop_refs(Activity)]
|
||||||
|
#[extension(ApObjectProperties)]
|
||||||
pub struct View {
|
pub struct View {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
#[serde(alias = "objectType")]
|
#[serde(alias = "objectType")]
|
|
@ -1,153 +0,0 @@
|
||||||
/*
|
|
||||||
* This file is part of ActivityStreams.
|
|
||||||
*
|
|
||||||
* Copyright © 2020 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/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
use crate::{
|
|
||||||
actor::{kind::*, properties::*, Actor, ActorBox},
|
|
||||||
object::{
|
|
||||||
properties::{ApObjectProperties, ObjectProperties},
|
|
||||||
Object, ObjectBox,
|
|
||||||
},
|
|
||||||
PropRefs,
|
|
||||||
};
|
|
||||||
use serde::{Deserialize, Serialize};
|
|
||||||
|
|
||||||
/// Describes a software application.
|
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
#[prop_refs(Object)]
|
|
||||||
#[prop_refs(Actor)]
|
|
||||||
pub struct Application {
|
|
||||||
#[serde(rename = "type")]
|
|
||||||
kind: ApplicationType,
|
|
||||||
|
|
||||||
/// Adds all valid object properties to this struct
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub object_props: ObjectProperties,
|
|
||||||
|
|
||||||
/// Adds all valid activitypub object properties to this struct
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub ap_object_props: ApObjectProperties,
|
|
||||||
|
|
||||||
/// Adds all valid activitypub actor properties to this struct
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub ap_actor_props: ApActorProperties,
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Represents a formal or informal collective of Actors.
|
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
#[prop_refs(Object)]
|
|
||||||
#[prop_refs(Actor)]
|
|
||||||
pub struct Group {
|
|
||||||
#[serde(rename = "type")]
|
|
||||||
kind: GroupType,
|
|
||||||
|
|
||||||
/// Adds all valid object properties to this struct
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub object_props: ObjectProperties,
|
|
||||||
|
|
||||||
/// Adds all valid activitypub object properties to this struct
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub ap_object_props: ApObjectProperties,
|
|
||||||
|
|
||||||
/// Adds all valid activitypub actor properties to this struct
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub ap_actor_props: ApActorProperties,
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Represents an organization.
|
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
#[prop_refs(Object)]
|
|
||||||
#[prop_refs(Actor)]
|
|
||||||
pub struct Organization {
|
|
||||||
#[serde(rename = "type")]
|
|
||||||
kind: OrganizationType,
|
|
||||||
|
|
||||||
/// Adds all valid object properties to this struct
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub object_props: ObjectProperties,
|
|
||||||
|
|
||||||
/// Adds all valid activitypub object properties to this struct
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub ap_object_props: ApObjectProperties,
|
|
||||||
|
|
||||||
/// Adds all valid activitypub actor properties to this struct
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub ap_actor_props: ApActorProperties,
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Represents an individual person.
|
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
#[prop_refs(Object)]
|
|
||||||
#[prop_refs(Actor)]
|
|
||||||
pub struct Person {
|
|
||||||
#[serde(rename = "type")]
|
|
||||||
kind: PersonType,
|
|
||||||
|
|
||||||
/// Adds all valid object properties to this struct
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub object_props: ObjectProperties,
|
|
||||||
|
|
||||||
/// Adds all valid activitypub object properties to this struct
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub ap_object_props: ApObjectProperties,
|
|
||||||
|
|
||||||
/// Adds all valid activitypub actor properties to this struct
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub ap_actor_props: ApActorProperties,
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Represents a service of any kind.
|
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
#[prop_refs(Object)]
|
|
||||||
#[prop_refs(Actor)]
|
|
||||||
pub struct Service {
|
|
||||||
#[serde(rename = "type")]
|
|
||||||
kind: ServiceType,
|
|
||||||
|
|
||||||
/// Adds all valid object properties to this struct
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub object_props: ObjectProperties,
|
|
||||||
|
|
||||||
/// Adds all valid activitypub object properties to this struct
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub ap_object_props: ApObjectProperties,
|
|
||||||
|
|
||||||
/// Adds all valid activitypub actor properties to this struct
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub ap_actor_props: ApActorProperties,
|
|
||||||
}
|
|
|
@ -19,19 +19,17 @@
|
||||||
|
|
||||||
//! Namespace for Actor types
|
//! Namespace for Actor types
|
||||||
|
|
||||||
#[cfg(feature = "types")]
|
|
||||||
pub mod apub;
|
|
||||||
#[cfg(feature = "kinds")]
|
#[cfg(feature = "kinds")]
|
||||||
pub mod kind;
|
pub mod kind;
|
||||||
#[cfg(feature = "types")]
|
#[cfg(feature = "types")]
|
||||||
pub mod properties;
|
pub mod properties;
|
||||||
#[cfg(feature = "types")]
|
#[cfg(feature = "types")]
|
||||||
pub mod streams;
|
mod types;
|
||||||
|
|
||||||
use crate::object::Object;
|
|
||||||
|
|
||||||
#[cfg(feature = "types")]
|
#[cfg(feature = "types")]
|
||||||
use crate::wrapper_type;
|
pub use self::types::{Application, Group, Organization, Person, Service};
|
||||||
|
|
||||||
|
use crate::object::Object;
|
||||||
|
|
||||||
/// `Actor` types are `Object` types that are capable of performing activities.
|
/// `Actor` types are `Object` types that are capable of performing activities.
|
||||||
///
|
///
|
||||||
|
@ -52,5 +50,5 @@ use crate::wrapper_type;
|
||||||
/// (e.g. VCard) define their own types for describing people. An implementation that wishes, for
|
/// (e.g. VCard) define their own types for describing people. An implementation that wishes, for
|
||||||
/// example, to use a `vcard:Individual` as an `Actor` MUST also identify that `Actor` as a
|
/// example, to use a `vcard:Individual` as an `Actor` MUST also identify that `Actor` as a
|
||||||
/// `Person`.
|
/// `Person`.
|
||||||
#[cfg_attr(feature = "types", wrapper_type)]
|
#[cfg_attr(feature = "derive", crate::wrapper_type)]
|
||||||
pub trait Actor: Object {}
|
pub trait Actor: Object {}
|
||||||
|
|
|
@ -63,11 +63,15 @@
|
||||||
//! ```
|
//! ```
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
|
actor::Actor,
|
||||||
endpoint::EndpointProperties,
|
endpoint::EndpointProperties,
|
||||||
|
ext::Extension,
|
||||||
primitives::{XsdAnyUri, XsdString},
|
primitives::{XsdAnyUri, XsdString},
|
||||||
properties,
|
properties,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
impl<T> Extension<T> for ApActorProperties where T: Actor {}
|
||||||
|
|
||||||
properties! {
|
properties! {
|
||||||
ApActor {
|
ApActor {
|
||||||
docs [
|
docs [
|
||||||
|
|
|
@ -18,17 +18,22 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
actor::{kind::*, Actor, ActorBox},
|
actor::{kind::*, properties::ApActorProperties, Actor, ActorBox},
|
||||||
object::{properties::ObjectProperties, Object, ObjectBox},
|
ext::Ext,
|
||||||
PropRefs,
|
object::{
|
||||||
|
properties::{ApObjectProperties, ObjectProperties},
|
||||||
|
Object, ObjectBox,
|
||||||
|
},
|
||||||
|
Base, Extensible, PropRefs,
|
||||||
};
|
};
|
||||||
use serde::{Deserialize, Serialize};
|
|
||||||
|
|
||||||
/// Describes a software application.
|
/// Describes a software application.
|
||||||
#[derive(Clone, Debug, Default, Deserialize, PropRefs, Serialize)]
|
#[derive(Clone, Debug, Default, Extensible, PropRefs, serde::Deserialize, serde::Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
#[prop_refs(Object)]
|
#[prop_refs(Object)]
|
||||||
#[prop_refs(Actor)]
|
#[prop_refs(Actor)]
|
||||||
|
#[extension(ApObjectProperties)]
|
||||||
|
#[extension(ApActorProperties)]
|
||||||
pub struct Application {
|
pub struct Application {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
#[serde(alias = "objectType")]
|
#[serde(alias = "objectType")]
|
||||||
|
@ -42,10 +47,12 @@ pub struct Application {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Represents a formal or informal collective of Actors.
|
/// Represents a formal or informal collective of Actors.
|
||||||
#[derive(Clone, Debug, Default, Deserialize, PropRefs, Serialize)]
|
#[derive(Clone, Debug, Default, Extensible, PropRefs, serde::Deserialize, serde::Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
#[prop_refs(Object)]
|
#[prop_refs(Object)]
|
||||||
#[prop_refs(Actor)]
|
#[prop_refs(Actor)]
|
||||||
|
#[extension(ApObjectProperties)]
|
||||||
|
#[extension(ApActorProperties)]
|
||||||
pub struct Group {
|
pub struct Group {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
#[serde(alias = "objectType")]
|
#[serde(alias = "objectType")]
|
||||||
|
@ -59,7 +66,7 @@ pub struct Group {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Represents an organization.
|
/// Represents an organization.
|
||||||
#[derive(Clone, Debug, Default, Deserialize, PropRefs, Serialize)]
|
#[derive(Clone, Debug, Default, Extensible, PropRefs, serde::Deserialize, serde::Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub struct Organization {
|
pub struct Organization {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
|
@ -74,10 +81,12 @@ pub struct Organization {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Represents an individual person.
|
/// Represents an individual person.
|
||||||
#[derive(Clone, Debug, Default, Deserialize, PropRefs, Serialize)]
|
#[derive(Clone, Debug, Default, Extensible, PropRefs, serde::Deserialize, serde::Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
#[prop_refs(Object)]
|
#[prop_refs(Object)]
|
||||||
#[prop_refs(Actor)]
|
#[prop_refs(Actor)]
|
||||||
|
#[extension(ApObjectProperties)]
|
||||||
|
#[extension(ApActorProperties)]
|
||||||
pub struct Person {
|
pub struct Person {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
#[serde(alias = "objectType")]
|
#[serde(alias = "objectType")]
|
||||||
|
@ -91,10 +100,12 @@ pub struct Person {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Represents a service of any kind.
|
/// Represents a service of any kind.
|
||||||
#[derive(Clone, Debug, Default, Deserialize, PropRefs, Serialize)]
|
#[derive(Clone, Debug, Default, Extensible, PropRefs, serde::Deserialize, serde::Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
#[prop_refs(Object)]
|
#[prop_refs(Object)]
|
||||||
#[prop_refs(Actor)]
|
#[prop_refs(Actor)]
|
||||||
|
#[extension(ApObjectProperties)]
|
||||||
|
#[extension(ApActorProperties)]
|
||||||
pub struct Service {
|
pub struct Service {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
#[serde(alias = "objectType")]
|
#[serde(alias = "objectType")]
|
|
@ -1,150 +0,0 @@
|
||||||
/*
|
|
||||||
* This file is part of ActivityStreams.
|
|
||||||
*
|
|
||||||
* Copyright © 2020 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/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
//! Collection traits and types
|
|
||||||
|
|
||||||
use crate::{
|
|
||||||
collection::{
|
|
||||||
kind::*, properties::*, Collection, CollectionBox, CollectionPage, CollectionPageBox,
|
|
||||||
},
|
|
||||||
object::{
|
|
||||||
properties::{ApObjectProperties, ObjectProperties},
|
|
||||||
Object, ObjectBox,
|
|
||||||
},
|
|
||||||
PropRefs,
|
|
||||||
};
|
|
||||||
use serde::{Deserialize, Serialize};
|
|
||||||
|
|
||||||
/// The default `Collection` type.
|
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
#[prop_refs(Object)]
|
|
||||||
#[prop_refs(Collection)]
|
|
||||||
pub struct UnorderedCollection {
|
|
||||||
#[serde(rename = "type")]
|
|
||||||
kind: CollectionType,
|
|
||||||
|
|
||||||
/// Adds all valid object properties to this struct
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub object_props: ObjectProperties,
|
|
||||||
|
|
||||||
/// Adds all valid ap object properties to this struct
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub ap_object_props: ApObjectProperties,
|
|
||||||
|
|
||||||
/// Adds all valid collection properties to this struct
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub collection_props: CollectionProperties,
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Used to represent distinct subsets of items from a `Collection`.
|
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
#[prop_refs(Object)]
|
|
||||||
#[prop_refs(Collection)]
|
|
||||||
#[prop_refs(CollectionPage)]
|
|
||||||
pub struct UnorderedCollectionPage {
|
|
||||||
#[serde(rename = "type")]
|
|
||||||
kind: CollectionPageType,
|
|
||||||
|
|
||||||
/// Adds all valid object properties to this struct
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub object_props: ObjectProperties,
|
|
||||||
|
|
||||||
/// Adds all valid ap object properties to this struct
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub ap_object_props: ApObjectProperties,
|
|
||||||
|
|
||||||
/// Adds all valid collection properties to this struct
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub collection_props: CollectionProperties,
|
|
||||||
|
|
||||||
/// Adds all valid collection page properties to this struct
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub collection_page_props: CollectionPageProperties,
|
|
||||||
}
|
|
||||||
|
|
||||||
/// A subtype of `Collection` in which members of the logical collection are assumed to always be
|
|
||||||
/// strictly ordered.
|
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
#[prop_refs(Object)]
|
|
||||||
#[prop_refs(Collection)]
|
|
||||||
pub struct OrderedCollection {
|
|
||||||
#[serde(rename = "type")]
|
|
||||||
kind: OrderedCollectionType,
|
|
||||||
|
|
||||||
/// Adds all valid object properties to this struct
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub object_props: ObjectProperties,
|
|
||||||
|
|
||||||
/// Adds all valid ap object properties to this struct
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub ap_object_props: ApObjectProperties,
|
|
||||||
|
|
||||||
/// Adds all valid collection properties to this struct
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub collection_props: CollectionProperties,
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Used to represent ordered subsets of items from an `OrderedCollection`.
|
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
#[prop_refs(Object)]
|
|
||||||
#[prop_refs(Collection)]
|
|
||||||
#[prop_refs(CollectionPage)]
|
|
||||||
pub struct OrderedCollectionPage {
|
|
||||||
#[serde(rename = "type")]
|
|
||||||
kind: OrderedCollectionPageType,
|
|
||||||
|
|
||||||
/// Adds all valid object properties to this struct
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub object_props: ObjectProperties,
|
|
||||||
|
|
||||||
/// Adds all valid ap object properties to this struct
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub ap_object_props: ApObjectProperties,
|
|
||||||
|
|
||||||
/// Adds all valid collection properties to this struct
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub collection_props: CollectionProperties,
|
|
||||||
|
|
||||||
/// Adds all valid collection page properties to this struct
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub collection_page_props: CollectionPageProperties,
|
|
||||||
|
|
||||||
/// Adds all valid ordered collection page properties to this struct
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub ordered_collection_page_props: OrderedCollectionPageProperties,
|
|
||||||
}
|
|
|
@ -19,20 +19,20 @@
|
||||||
|
|
||||||
//! Namespace for Collection types
|
//! Namespace for Collection types
|
||||||
|
|
||||||
#[cfg(feature = "types")]
|
|
||||||
pub mod apub;
|
|
||||||
#[cfg(feature = "kinds")]
|
#[cfg(feature = "kinds")]
|
||||||
pub mod kind;
|
pub mod kind;
|
||||||
#[cfg(feature = "types")]
|
#[cfg(feature = "types")]
|
||||||
pub mod properties;
|
pub mod properties;
|
||||||
#[cfg(feature = "types")]
|
#[cfg(feature = "types")]
|
||||||
pub mod streams;
|
mod types;
|
||||||
|
|
||||||
|
#[cfg(features = "types")]
|
||||||
|
pub use self::types::{
|
||||||
|
OrderedCollection, OrderedCollectionPage, UnorderedCollection, UnorderedCollectionPage,
|
||||||
|
};
|
||||||
|
|
||||||
use crate::object::Object;
|
use crate::object::Object;
|
||||||
|
|
||||||
#[cfg(feature = "types")]
|
|
||||||
use crate::wrapper_type;
|
|
||||||
|
|
||||||
/// A Collection is a subtype of `Object` that represents ordered or unordered sets of `Object` or
|
/// A Collection is a subtype of `Object` that represents ordered or unordered sets of `Object` or
|
||||||
/// `Link` instances.
|
/// `Link` instances.
|
||||||
///
|
///
|
||||||
|
@ -43,7 +43,7 @@ use crate::wrapper_type;
|
||||||
///
|
///
|
||||||
/// `UnorderedCollection` and `OrderedCollection` types are provided by the `activitystreams-types`
|
/// `UnorderedCollection` and `OrderedCollection` types are provided by the `activitystreams-types`
|
||||||
/// crate.
|
/// crate.
|
||||||
#[cfg_attr(feature = "types", wrapper_type)]
|
#[cfg_attr(feature = "derive", crate::wrapper_type)]
|
||||||
pub trait Collection: Object {}
|
pub trait Collection: Object {}
|
||||||
|
|
||||||
/// Used to represent distinct subsets of items from a Collection.
|
/// Used to represent distinct subsets of items from a Collection.
|
||||||
|
@ -55,5 +55,5 @@ pub trait Collection: Object {}
|
||||||
///
|
///
|
||||||
/// `UnorderedCollectionPage` and `OrderedCollectionPage` types are provied by the
|
/// `UnorderedCollectionPage` and `OrderedCollectionPage` types are provied by the
|
||||||
/// `activitystreams-types` crate.
|
/// `activitystreams-types` crate.
|
||||||
#[cfg_attr(feature = "types", wrapper_type)]
|
#[cfg_attr(feature = "derive", crate::wrapper_type)]
|
||||||
pub trait CollectionPage: Collection {}
|
pub trait CollectionPage: Collection {}
|
||||||
|
|
|
@ -34,7 +34,6 @@
|
||||||
//! PropRefs,
|
//! PropRefs,
|
||||||
//! };
|
//! };
|
||||||
//! use serde::{Deserialize, Serialize};
|
//! use serde::{Deserialize, Serialize};
|
||||||
//! use std::any::Any;
|
|
||||||
//!
|
//!
|
||||||
//! #[derive(Clone, Debug, Serialize, Deserialize, PropRefs)]
|
//! #[derive(Clone, Debug, Serialize, Deserialize, PropRefs)]
|
||||||
//! #[serde(rename_all = "camelCase")]
|
//! #[serde(rename_all = "camelCase")]
|
||||||
|
|
|
@ -23,16 +23,20 @@ use crate::{
|
||||||
collection::{
|
collection::{
|
||||||
kind::*, properties::*, Collection, CollectionBox, CollectionPage, CollectionPageBox,
|
kind::*, properties::*, Collection, CollectionBox, CollectionPage, CollectionPageBox,
|
||||||
},
|
},
|
||||||
object::{properties::ObjectProperties, Object, ObjectBox},
|
ext::Ext,
|
||||||
PropRefs,
|
object::{
|
||||||
|
properties::{ApObjectProperties, ObjectProperties},
|
||||||
|
Object, ObjectBox,
|
||||||
|
},
|
||||||
|
Base, Extensible, PropRefs,
|
||||||
};
|
};
|
||||||
use serde::{Deserialize, Serialize};
|
|
||||||
|
|
||||||
/// The default `Collection` type.
|
/// The default `Collection` type.
|
||||||
#[derive(Clone, Debug, Default, Deserialize, PropRefs, Serialize)]
|
#[derive(Clone, Debug, Default, Extensible, PropRefs, serde::Deserialize, serde::Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
#[prop_refs(Object)]
|
#[prop_refs(Object)]
|
||||||
#[prop_refs(Collection)]
|
#[prop_refs(Collection)]
|
||||||
|
#[extension(ApObjectProperties)]
|
||||||
pub struct UnorderedCollection {
|
pub struct UnorderedCollection {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
#[serde(alias = "objectType")]
|
#[serde(alias = "objectType")]
|
||||||
|
@ -52,10 +56,11 @@ pub struct UnorderedCollection {
|
||||||
|
|
||||||
/// 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, PropRefs, Serialize)]
|
#[derive(Clone, Debug, Default, Extensible, PropRefs, serde::Deserialize, serde::Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
#[prop_refs(Object)]
|
#[prop_refs(Object)]
|
||||||
#[prop_refs(Collection)]
|
#[prop_refs(Collection)]
|
||||||
|
#[extension(ApObjectProperties)]
|
||||||
pub struct OrderedCollection {
|
pub struct OrderedCollection {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
#[serde(alias = "objectType")]
|
#[serde(alias = "objectType")]
|
||||||
|
@ -74,11 +79,12 @@ pub struct OrderedCollection {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// 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, PropRefs, Serialize)]
|
#[derive(Clone, Debug, Default, Extensible, PropRefs, serde::Deserialize, serde::Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
#[prop_refs(Object)]
|
#[prop_refs(Object)]
|
||||||
#[prop_refs(Collection)]
|
#[prop_refs(Collection)]
|
||||||
#[prop_refs(CollectionPage)]
|
#[prop_refs(CollectionPage)]
|
||||||
|
#[extension(ApObjectProperties)]
|
||||||
pub struct UnorderedCollectionPage {
|
pub struct UnorderedCollectionPage {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
#[serde(alias = "objectType")]
|
#[serde(alias = "objectType")]
|
||||||
|
@ -102,11 +108,12 @@ pub struct UnorderedCollectionPage {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// 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, PropRefs, Serialize)]
|
#[derive(Clone, Debug, Default, Extensible, PropRefs, serde::Deserialize, serde::Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
#[prop_refs(Object)]
|
#[prop_refs(Object)]
|
||||||
#[prop_refs(Collection)]
|
#[prop_refs(Collection)]
|
||||||
#[prop_refs(CollectionPage)]
|
#[prop_refs(CollectionPage)]
|
||||||
|
#[extension(ApObjectProperties)]
|
||||||
pub struct OrderedCollectionPage {
|
pub struct OrderedCollectionPage {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
#[serde(alias = "objectType")]
|
#[serde(alias = "objectType")]
|
142
src/ext.rs
Normal file
142
src/ext.rs
Normal file
|
@ -0,0 +1,142 @@
|
||||||
|
//! Defining extensibility in the ActivityStreams spec
|
||||||
|
|
||||||
|
use crate::{
|
||||||
|
activity::{Activity, IntransitiveActivity},
|
||||||
|
actor::Actor,
|
||||||
|
collection::{Collection, CollectionPage},
|
||||||
|
link::Link,
|
||||||
|
object::Object,
|
||||||
|
Base,
|
||||||
|
};
|
||||||
|
use std::fmt::Debug;
|
||||||
|
|
||||||
|
/// Defines an extension to an activitystreams object or link
|
||||||
|
///
|
||||||
|
/// This type provides two fields, the first field, `base`, should always the be base
|
||||||
|
/// ActivityStreams type. As long as `base` implements an ActivityStreams trait, Ext will also.
|
||||||
|
///
|
||||||
|
/// For example, the type `Ext<Video, HashMap<String, String>>` will implement the `Object` trait,
|
||||||
|
/// because `Video` implements that trait.
|
||||||
|
///
|
||||||
|
/// Additionally, some level of AsRef and AsMut have been derived for Ext. If type type
|
||||||
|
/// `Ext<Ext<Follow, SomeTime>, AnotherType>` exists, that will implement
|
||||||
|
/// `AsRef<ActivityProperties>` just like the innermost `Follow`. This only works for types
|
||||||
|
/// two levels deep, however.
|
||||||
|
#[derive(Clone, Debug, Default)]
|
||||||
|
#[cfg_attr(feature = "derive", derive(serde::Deserialize, serde::Serialize))]
|
||||||
|
pub struct Ext<T, U> {
|
||||||
|
/// The ActivityStreams base type, or another extension containing one
|
||||||
|
#[cfg_attr(feature = "derive", serde(flatten))]
|
||||||
|
pub base: T,
|
||||||
|
|
||||||
|
/// The extension being applied to the type
|
||||||
|
#[cfg_attr(feature = "derive", serde(flatten))]
|
||||||
|
pub extension: U,
|
||||||
|
}
|
||||||
|
|
||||||
|
/// A trait implemented by extensions to the ActivityStreams specification
|
||||||
|
///
|
||||||
|
/// This is implemented for a couple types by default, such as
|
||||||
|
/// ApObjectProperties, and ApActorProperties.
|
||||||
|
///
|
||||||
|
/// Extensions are not intended to be used as trait objects
|
||||||
|
pub trait Extension<T>
|
||||||
|
where
|
||||||
|
T: Base,
|
||||||
|
{
|
||||||
|
/// A default implementation that simply returns the Ext type with Self and the base type
|
||||||
|
/// inside of it.
|
||||||
|
fn extends(self, base: T) -> Ext<T, Self>
|
||||||
|
where
|
||||||
|
Self: Sized,
|
||||||
|
{
|
||||||
|
Ext {
|
||||||
|
base,
|
||||||
|
extension: self,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// A trait implemented (automatically) by objects and links in the ActivityStreams specification
|
||||||
|
///
|
||||||
|
/// This is used to easily extend objects.
|
||||||
|
///
|
||||||
|
/// ```rust
|
||||||
|
/// # use activitystreams::object::{Video, properties::ApObjectProperties};
|
||||||
|
/// use activitystreams::ext::Extensible;
|
||||||
|
/// let vid = Video::new();
|
||||||
|
/// let ap_props = ApObjectProperties::default();
|
||||||
|
///
|
||||||
|
/// let extended_vid = vid.extend(ap_props);
|
||||||
|
/// ```
|
||||||
|
pub trait Extensible<U> {
|
||||||
|
fn extend(self, extension: U) -> Ext<Self, U>
|
||||||
|
where
|
||||||
|
Self: Sized;
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<T, U> Extensible<U> for T
|
||||||
|
where
|
||||||
|
T: crate::Base,
|
||||||
|
U: Extension<T>,
|
||||||
|
{
|
||||||
|
fn extend(self, item: U) -> Ext<Self, U> {
|
||||||
|
item.extends(self)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<T, U> Base for Ext<T, U>
|
||||||
|
where
|
||||||
|
T: Base,
|
||||||
|
U: Debug,
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<T, U> Object for Ext<T, U>
|
||||||
|
where
|
||||||
|
T: Object,
|
||||||
|
U: Debug,
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<T, U> Link for Ext<T, U>
|
||||||
|
where
|
||||||
|
T: Link,
|
||||||
|
U: Debug,
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<T, U> Actor for Ext<T, U>
|
||||||
|
where
|
||||||
|
T: Actor,
|
||||||
|
U: Debug,
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<T, U> Collection for Ext<T, U>
|
||||||
|
where
|
||||||
|
T: Collection,
|
||||||
|
U: Debug,
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<T, U> CollectionPage for Ext<T, U>
|
||||||
|
where
|
||||||
|
T: CollectionPage,
|
||||||
|
U: Debug,
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<T, U> Activity for Ext<T, U>
|
||||||
|
where
|
||||||
|
T: Activity,
|
||||||
|
U: Debug,
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<T, U> IntransitiveActivity for Ext<T, U>
|
||||||
|
where
|
||||||
|
T: IntransitiveActivity,
|
||||||
|
U: Debug,
|
||||||
|
{
|
||||||
|
}
|
70
src/lib.rs
70
src/lib.rs
|
@ -25,34 +25,27 @@
|
||||||
//!
|
//!
|
||||||
//! First, add ActivityStreams to your dependencies
|
//! First, add ActivityStreams to your dependencies
|
||||||
//! ```toml
|
//! ```toml
|
||||||
//! activitystreams = "0.5.0-alpha.8"
|
//! activitystreams = "0.5.0-alpha.9"
|
||||||
//! ```
|
//! ```
|
||||||
//!
|
//!
|
||||||
//! ### Types
|
//! ### Types
|
||||||
//!
|
//!
|
||||||
//! The project is laid out by Kind => vocabulary => Type
|
//! The project is laid out by Kind => Type
|
||||||
//!
|
//!
|
||||||
//! So to use an ActivityStreams Video, you'd write
|
//! So to use an ActivityStreams Video, you'd write
|
||||||
//! ```rust
|
//! ```rust
|
||||||
//! use activitystreams::object::streams::Video;
|
//! use activitystreams::object::Video;
|
||||||
//! ```
|
//! ```
|
||||||
//!
|
//!
|
||||||
//! And to use an ActivityPub profile, you'd write
|
//! And to use an ActivityStreams profile, you'd write
|
||||||
//! ```rust
|
//! ```rust
|
||||||
//! use activitystreams::object::apub::Profile;
|
//! use activitystreams::object::Profile;
|
||||||
//! ```
|
|
||||||
//!
|
|
||||||
//! Link is a little different, since there's only one defined link type, called Mention.
|
|
||||||
//! ```rust
|
|
||||||
//! use activitystreams::link::Mention;
|
|
||||||
//! ```
|
//! ```
|
||||||
//!
|
//!
|
||||||
//! ### Properties
|
//! ### Properties
|
||||||
//!
|
//!
|
||||||
//! Each concrete type implements `AsRef<>` for each of their properties fields. A basic
|
//! Each concrete type implements `AsRef<>` for each of their properties fields. A basic
|
||||||
//! ActivityStreams object will implement `AsRef<ObjectProperties>`, while an ActivityPub Actor
|
//! ActivityStreams object will implement `AsRef<ObjectProperties>`.
|
||||||
//! might implement `AsRef<ObjectProperties>`, `AsRef<ApObjectProperties>`, and
|
|
||||||
//! `AsRef<ApActorProperties>`.
|
|
||||||
//!
|
//!
|
||||||
//! The Properties types can be found near the kind they're associated with. `ObjectProperties` and
|
//! The Properties types can be found near the kind they're associated with. `ObjectProperties` and
|
||||||
//! `ApObjectProperties` are located in `activitystreams::object::properties`.
|
//! `ApObjectProperties` are located in `activitystreams::object::properties`.
|
||||||
|
@ -188,12 +181,35 @@
|
||||||
//! ```
|
//! ```
|
||||||
//! And this type would only deserialize for JSON where `"type":"Person"`
|
//! And this type would only deserialize for JSON where `"type":"Person"`
|
||||||
//!
|
//!
|
||||||
|
//! ### Extensions
|
||||||
|
//!
|
||||||
|
//! In some cases, like when dealing with ActivityPub, it is neccessary to extend the
|
||||||
|
//! ActivityStreams specification. For this purpose, two traits and a type have been introduced.
|
||||||
|
//!
|
||||||
|
//! ```ignore
|
||||||
|
//! use activitystreams::ext::{Ext, Extensible, Extension};
|
||||||
|
//! ```
|
||||||
|
//!
|
||||||
|
//! The `Ext` type is a simple record containing first, the ActivityStreams type, and second, the
|
||||||
|
//! extension to that type.
|
||||||
|
//!
|
||||||
|
//! There are two provided extensions in the ActivityStreams library.
|
||||||
|
//! - ApObjectProperties, extra properties for all ActivityStreams objects in the ActivityPub spec
|
||||||
|
//! - ApActorProperties, extra properties specifically for Actors in the ActivityPub spec
|
||||||
|
//!
|
||||||
|
//! To use an object with its default extensions, the object's `full()` associated function may be
|
||||||
|
//! invoked.
|
||||||
|
//! ```rust
|
||||||
|
//! # use activitystreams::object::Video;
|
||||||
|
//! let video_with_extensions = Video::full();
|
||||||
|
//! ```
|
||||||
|
//!
|
||||||
//! ### Features
|
//! ### Features
|
||||||
//! There are a number of features that can be disabled in this crate. By default, everything is
|
//! There are a number of features that can be disabled in this crate. By default, everything is
|
||||||
//! enabled.
|
//! enabled.
|
||||||
//!
|
//!
|
||||||
//! ```toml
|
//! ```toml
|
||||||
//! activitystreams = { version = "0.5.0-alpha.8", default-features = "false", features = ["derive"] }
|
//! activitystreams = { version = "0.5.0-alpha.9", default-features = "false", features = ["derive"] }
|
||||||
//! ```
|
//! ```
|
||||||
//!
|
//!
|
||||||
//! | feature | what you get |
|
//! | feature | what you get |
|
||||||
|
@ -209,7 +225,7 @@
|
||||||
//! ### Basic
|
//! ### Basic
|
||||||
//!
|
//!
|
||||||
//! ```rust
|
//! ```rust
|
||||||
//! use activitystreams::object::{streams::Video, properties::ObjectProperties};
|
//! use activitystreams::object::{Video, properties::ObjectProperties};
|
||||||
//! use anyhow::Error;
|
//! use anyhow::Error;
|
||||||
//!
|
//!
|
||||||
//! // We perform configuration in a dedicated function to specify which Properties type we want to
|
//! // We perform configuration in a dedicated function to specify which Properties type we want to
|
||||||
|
@ -256,7 +272,7 @@
|
||||||
//! ObjectProperties,
|
//! ObjectProperties,
|
||||||
//! ProfileProperties
|
//! ProfileProperties
|
||||||
//! },
|
//! },
|
||||||
//! apub::Profile,
|
//! Profile,
|
||||||
//! Object,
|
//! Object,
|
||||||
//! ObjectBox,
|
//! ObjectBox,
|
||||||
//! },
|
//! },
|
||||||
|
@ -279,7 +295,7 @@
|
||||||
//! }
|
//! }
|
||||||
//!
|
//!
|
||||||
//! fn main() -> Result<(), anyhow::Error> {
|
//! fn main() -> Result<(), anyhow::Error> {
|
||||||
//! let mut profile = Profile::default();
|
//! let mut profile = Profile::full();
|
||||||
//!
|
//!
|
||||||
//! let pprops: &mut ProfileProperties = profile.as_mut();
|
//! let pprops: &mut ProfileProperties = profile.as_mut();
|
||||||
//!
|
//!
|
||||||
|
@ -379,6 +395,7 @@ pub mod actor;
|
||||||
pub mod collection;
|
pub mod collection;
|
||||||
#[cfg(feature = "types")]
|
#[cfg(feature = "types")]
|
||||||
pub mod endpoint;
|
pub mod endpoint;
|
||||||
|
pub mod ext;
|
||||||
pub mod link;
|
pub mod link;
|
||||||
pub mod object;
|
pub mod object;
|
||||||
#[cfg(feature = "primitives")]
|
#[cfg(feature = "primitives")]
|
||||||
|
@ -392,11 +409,28 @@ pub use self::{
|
||||||
object::Object,
|
object::Object,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#[cfg_attr(feature = "types", wrapper_type)]
|
||||||
|
pub trait Base: std::fmt::Debug {}
|
||||||
|
|
||||||
#[cfg(feature = "primitives")]
|
#[cfg(feature = "primitives")]
|
||||||
/// 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() -> crate::primitives::XsdAnyUri {
|
pub fn context() -> crate::primitives::XsdAnyUri {
|
||||||
"https://www.w3.org/ns/activitystreams".parse().unwrap()
|
"https://www.w3.org/ns/activitystreams".parse().unwrap()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(feature = "primitives")]
|
||||||
|
/// The 'security' extension used by some implementations
|
||||||
|
pub fn security() -> crate::primitives::XsdAnyUri {
|
||||||
|
"https://w3id.org/security/v1".parse().unwrap()
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(feature = "primitives")]
|
||||||
|
/// The 'public' actor, doesn't denote a real actor but describes a publicly available object.
|
||||||
|
pub fn public() -> crate::primitives::XsdAnyUri {
|
||||||
|
"https://www.w3.org/ns/activitystreams#Public"
|
||||||
|
.parse()
|
||||||
|
.unwrap()
|
||||||
|
}
|
||||||
|
|
||||||
#[cfg(feature = "derive")]
|
#[cfg(feature = "derive")]
|
||||||
pub use activitystreams_derive::{properties, wrapper_type, PropRefs, UnitString};
|
pub use activitystreams_derive::{properties, wrapper_type, Extensible, PropRefs, UnitString};
|
||||||
|
|
|
@ -29,9 +29,6 @@ mod types;
|
||||||
#[cfg(feature = "types")]
|
#[cfg(feature = "types")]
|
||||||
pub use self::types::Mention;
|
pub use self::types::Mention;
|
||||||
|
|
||||||
#[cfg(feature = "types")]
|
|
||||||
use crate::wrapper_type;
|
|
||||||
|
|
||||||
/// A Link is an indirect, qualified reference to a resource identified by a URL.
|
/// A Link is an indirect, qualified reference to a resource identified by a URL.
|
||||||
///
|
///
|
||||||
/// The fundamental model for links is established by
|
/// The fundamental model for links is established by
|
||||||
|
@ -40,5 +37,5 @@ use crate::wrapper_type;
|
||||||
/// used, it establishes a qualified relation connecting the subject (the containing object) to the
|
/// used, it establishes a qualified relation connecting the subject (the containing object) to the
|
||||||
/// resource identified by the href. Properties of the Link are properties of the reference as
|
/// resource identified by the href. Properties of the Link are properties of the reference as
|
||||||
/// opposed to properties of the resource.
|
/// opposed to properties of the resource.
|
||||||
#[cfg_attr(feature = "types", wrapper_type)]
|
#[cfg_attr(feature = "derive", crate::wrapper_type)]
|
||||||
pub trait Link: std::fmt::Debug {}
|
pub trait Link: crate::Base {}
|
||||||
|
|
|
@ -30,7 +30,6 @@
|
||||||
//! PropRefs,
|
//! PropRefs,
|
||||||
//! };
|
//! };
|
||||||
//! use serde::{Deserialize, Serialize};
|
//! use serde::{Deserialize, Serialize};
|
||||||
//! use std::any::Any;
|
|
||||||
//!
|
//!
|
||||||
//! #[derive(Clone, Debug, Serialize, Deserialize, PropRefs)]
|
//! #[derive(Clone, Debug, Serialize, Deserialize, PropRefs)]
|
||||||
//! #[serde(rename_all = "camelCase")]
|
//! #[serde(rename_all = "camelCase")]
|
||||||
|
|
|
@ -18,14 +18,14 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
|
ext::Ext,
|
||||||
link::{kind::*, properties::*, Link, LinkBox},
|
link::{kind::*, properties::*, Link, LinkBox},
|
||||||
PropRefs,
|
Base, PropRefs,
|
||||||
};
|
};
|
||||||
use serde::{Deserialize, Serialize};
|
|
||||||
|
|
||||||
#[cfg(feature = "types")]
|
#[cfg(feature = "types")]
|
||||||
/// A specialized Link that represents an @mention.
|
/// A specialized Link that represents an @mention.
|
||||||
#[derive(Clone, Debug, Default, Deserialize, PropRefs, Serialize)]
|
#[derive(Clone, Debug, Default, PropRefs, serde::Deserialize, serde::Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
#[prop_refs(Link)]
|
#[prop_refs(Link)]
|
||||||
pub struct Mention {
|
pub struct Mention {
|
||||||
|
|
|
@ -1,232 +0,0 @@
|
||||||
/*
|
|
||||||
* This file is part of ActivityStreams.
|
|
||||||
*
|
|
||||||
* Copyright © 2020 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/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
use crate::{
|
|
||||||
object::{kind::*, properties::*, Object, ObjectBox},
|
|
||||||
PropRefs,
|
|
||||||
};
|
|
||||||
use serde::{Deserialize, Serialize};
|
|
||||||
|
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
#[prop_refs(Object)]
|
|
||||||
pub struct Article {
|
|
||||||
#[serde(rename = "type")]
|
|
||||||
kind: ArticleType,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub object_props: ObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub ap_object_props: ApObjectProperties,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
#[prop_refs(Object)]
|
|
||||||
pub struct Audio {
|
|
||||||
#[serde(rename = "type")]
|
|
||||||
kind: AudioType,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub object_props: ObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub ap_object_props: ApObjectProperties,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
#[prop_refs(Object)]
|
|
||||||
pub struct Document {
|
|
||||||
#[serde(rename = "type")]
|
|
||||||
kind: DocumentType,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub object_props: ObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub ap_object_props: ApObjectProperties,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
#[prop_refs(Object)]
|
|
||||||
pub struct Event {
|
|
||||||
#[serde(rename = "type")]
|
|
||||||
kind: EventType,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub object_props: ObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub ap_object_props: ApObjectProperties,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
#[prop_refs(Object)]
|
|
||||||
pub struct Image {
|
|
||||||
#[serde(rename = "type")]
|
|
||||||
kind: ImageType,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub object_props: ObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub ap_object_props: ApObjectProperties,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
#[prop_refs(Object)]
|
|
||||||
pub struct Note {
|
|
||||||
#[serde(rename = "type")]
|
|
||||||
kind: NoteType,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub object_props: ObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub ap_object_props: ApObjectProperties,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
#[prop_refs(Object)]
|
|
||||||
pub struct Page {
|
|
||||||
#[serde(rename = "type")]
|
|
||||||
kind: PageType,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub object_props: ObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub ap_object_props: ApObjectProperties,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
#[prop_refs(Object)]
|
|
||||||
pub struct Place {
|
|
||||||
#[serde(rename = "type")]
|
|
||||||
kind: PlaceType,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub object_props: ObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub ap_object_props: ApObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub place_props: PlaceProperties,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
#[prop_refs(Object)]
|
|
||||||
pub struct Profile {
|
|
||||||
#[serde(rename = "type")]
|
|
||||||
kind: ProfileType,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub object_props: ObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub ap_object_props: ApObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub profile_props: ProfileProperties,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
#[prop_refs(Object)]
|
|
||||||
pub struct Relationship {
|
|
||||||
#[serde(rename = "type")]
|
|
||||||
kind: RelationshipType,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub object_props: ObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub ap_object_props: ApObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub relationship_props: RelationshipProperties,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
#[prop_refs(Object)]
|
|
||||||
pub struct Tombstone {
|
|
||||||
#[serde(rename = "type")]
|
|
||||||
kind: TombstoneType,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub object_props: ObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub ap_object_props: ApObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub tombstone_props: TombstoneProperties,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Clone, Debug, Default, Deserialize, Serialize, PropRefs)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
#[prop_refs(Object)]
|
|
||||||
pub struct Video {
|
|
||||||
#[serde(rename = "type")]
|
|
||||||
kind: VideoType,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub object_props: ObjectProperties,
|
|
||||||
|
|
||||||
#[serde(flatten)]
|
|
||||||
#[prop_refs]
|
|
||||||
pub ap_object_props: ApObjectProperties,
|
|
||||||
}
|
|
|
@ -19,25 +19,26 @@
|
||||||
|
|
||||||
//! Namespace for Object types
|
//! Namespace for Object types
|
||||||
|
|
||||||
#[cfg(feature = "types")]
|
|
||||||
pub mod apub;
|
|
||||||
#[cfg(feature = "kinds")]
|
#[cfg(feature = "kinds")]
|
||||||
pub mod kind;
|
pub mod kind;
|
||||||
#[cfg(feature = "types")]
|
#[cfg(feature = "types")]
|
||||||
pub mod properties;
|
pub mod properties;
|
||||||
#[cfg(feature = "types")]
|
#[cfg(feature = "types")]
|
||||||
pub mod streams;
|
mod types;
|
||||||
|
|
||||||
#[cfg(feature = "types")]
|
#[cfg(feature = "types")]
|
||||||
use crate::wrapper_type;
|
pub use self::types::{
|
||||||
|
Article, Audio, Document, Event, Image, Note, Page, Place, Profile, Relationship, Tombstone,
|
||||||
|
Video,
|
||||||
|
};
|
||||||
|
|
||||||
/// Describes an object of any kind.
|
/// Describes an object of any kind.
|
||||||
///
|
///
|
||||||
/// The Object type serves as the base type for most of the other kinds of objects defined in the
|
/// The Object type serves as the base type for most of the other kinds of objects defined in the
|
||||||
/// Activity Vocabulary, including other Core types such as `Activity`, `IntransitiveActivity`,
|
/// Activity Vocabulary, including other Core types such as `Activity`, `IntransitiveActivity`,
|
||||||
/// `Collection` and `OrderedCollection`.
|
/// `Collection` and `OrderedCollection`.
|
||||||
#[cfg_attr(feature = "types", wrapper_type)]
|
#[cfg_attr(feature = "derive", crate::wrapper_type)]
|
||||||
pub trait Object: std::fmt::Debug {}
|
pub trait Object: crate::Base {}
|
||||||
|
|
||||||
#[cfg(feature = "types")]
|
#[cfg(feature = "types")]
|
||||||
/// Describes any kind of Image
|
/// Describes any kind of Image
|
||||||
|
@ -47,6 +48,7 @@ pub trait Object: std::fmt::Debug {}
|
||||||
/// deserialized, but allows any adjacent fields through
|
/// deserialized, but allows any adjacent fields through
|
||||||
#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)]
|
#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)]
|
||||||
pub struct AnyImage {
|
pub struct AnyImage {
|
||||||
|
#[serde(rename = "type")]
|
||||||
kind: self::kind::ImageType,
|
kind: self::kind::ImageType,
|
||||||
|
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
|
|
|
@ -27,10 +27,9 @@
|
||||||
//! properties::ObjectProperties,
|
//! properties::ObjectProperties,
|
||||||
//! Object, ObjectBox,
|
//! Object, ObjectBox,
|
||||||
//! },
|
//! },
|
||||||
//! PropRefs,
|
//! Base, BaseBox, PropRefs,
|
||||||
//! };
|
//! };
|
||||||
//! use serde::{Deserialize, Serialize};
|
//! use serde::{Deserialize, Serialize};
|
||||||
//! use std::any::Any;
|
|
||||||
//!
|
//!
|
||||||
//! #[derive(Clone, Debug, Serialize, Deserialize, PropRefs)]
|
//! #[derive(Clone, Debug, Serialize, Deserialize, PropRefs)]
|
||||||
//! #[serde(rename_all = "camelCase")]
|
//! #[serde(rename_all = "camelCase")]
|
||||||
|
@ -51,12 +50,15 @@
|
||||||
//! ```
|
//! ```
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
|
ext::Extension,
|
||||||
link::LinkBox,
|
link::LinkBox,
|
||||||
object::{AnyImage, ObjectBox},
|
object::{AnyImage, Object, ObjectBox},
|
||||||
primitives::*,
|
primitives::*,
|
||||||
properties,
|
properties, BaseBox,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
impl<T> Extension<T> for ApObjectProperties where T: Object {}
|
||||||
|
|
||||||
properties! {
|
properties! {
|
||||||
Object {
|
Object {
|
||||||
docs [
|
docs [
|
||||||
|
@ -103,8 +105,7 @@ properties! {
|
||||||
],
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
ObjectBox,
|
BaseBox,
|
||||||
LinkBox,
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -120,8 +121,7 @@ properties! {
|
||||||
],
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
ObjectBox,
|
BaseBox,
|
||||||
LinkBox,
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -135,8 +135,7 @@ properties! {
|
||||||
],
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
ObjectBox,
|
BaseBox,
|
||||||
LinkBox,
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -171,8 +170,7 @@ properties! {
|
||||||
],
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
ObjectBox,
|
BaseBox,
|
||||||
LinkBox,
|
|
||||||
],
|
],
|
||||||
rename("@context"),
|
rename("@context"),
|
||||||
},
|
},
|
||||||
|
@ -219,8 +217,7 @@ properties! {
|
||||||
],
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
ObjectBox,
|
BaseBox,
|
||||||
LinkBox,
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -266,8 +263,7 @@ properties! {
|
||||||
],
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
ObjectBox,
|
BaseBox,
|
||||||
LinkBox,
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -280,8 +276,7 @@ properties! {
|
||||||
],
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
ObjectBox,
|
BaseBox,
|
||||||
LinkBox,
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -294,8 +289,7 @@ properties! {
|
||||||
],
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
ObjectBox,
|
BaseBox,
|
||||||
LinkBox,
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -321,8 +315,7 @@ properties! {
|
||||||
],
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
ObjectBox,
|
BaseBox,
|
||||||
LinkBox,
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -370,8 +363,7 @@ properties! {
|
||||||
],
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
ObjectBox,
|
BaseBox,
|
||||||
LinkBox,
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -410,8 +402,7 @@ properties! {
|
||||||
],
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
ObjectBox,
|
BaseBox,
|
||||||
LinkBox,
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -424,8 +415,7 @@ properties! {
|
||||||
],
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
ObjectBox,
|
BaseBox,
|
||||||
LinkBox,
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -438,8 +428,7 @@ properties! {
|
||||||
],
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
ObjectBox,
|
BaseBox,
|
||||||
LinkBox,
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -453,8 +442,7 @@ properties! {
|
||||||
],
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
ObjectBox,
|
BaseBox,
|
||||||
LinkBox,
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -627,8 +615,7 @@ properties! {
|
||||||
],
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
ObjectBox,
|
BaseBox,
|
||||||
LinkBox,
|
|
||||||
],
|
],
|
||||||
functional,
|
functional,
|
||||||
},
|
},
|
||||||
|
@ -642,8 +629,7 @@ properties! {
|
||||||
],
|
],
|
||||||
types [
|
types [
|
||||||
XsdAnyUri,
|
XsdAnyUri,
|
||||||
ObjectBox,
|
BaseBox,
|
||||||
LinkBox,
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -18,15 +18,16 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
|
ext::Ext,
|
||||||
object::{kind::*, properties::*, Object, ObjectBox},
|
object::{kind::*, properties::*, Object, ObjectBox},
|
||||||
PropRefs,
|
Base, Extensible, PropRefs,
|
||||||
};
|
};
|
||||||
use serde::{Deserialize, Serialize};
|
|
||||||
|
|
||||||
/// 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, Extensible, PropRefs, serde::Deserialize, serde::Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
#[prop_refs(Object)]
|
#[prop_refs(Object)]
|
||||||
|
#[extension(ApObjectProperties)]
|
||||||
pub struct Article {
|
pub struct Article {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
#[serde(alias = "objectType")]
|
#[serde(alias = "objectType")]
|
||||||
|
@ -40,9 +41,10 @@ pub struct Article {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Represents an audio document of any kind.
|
/// Represents an audio document of any kind.
|
||||||
#[derive(Clone, Debug, Default, Deserialize, PropRefs, Serialize)]
|
#[derive(Clone, Debug, Default, Extensible, PropRefs, serde::Deserialize, serde::Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
#[prop_refs(Object)]
|
#[prop_refs(Object)]
|
||||||
|
#[extension(ApObjectProperties)]
|
||||||
pub struct Audio {
|
pub struct Audio {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
#[serde(alias = "objectType")]
|
#[serde(alias = "objectType")]
|
||||||
|
@ -56,9 +58,10 @@ pub struct Audio {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Represents a document of any kind.
|
/// Represents a document of any kind.
|
||||||
#[derive(Clone, Debug, Default, Deserialize, PropRefs, Serialize)]
|
#[derive(Clone, Debug, Default, Extensible, PropRefs, serde::Deserialize, serde::Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
#[prop_refs(Object)]
|
#[prop_refs(Object)]
|
||||||
|
#[extension(ApObjectProperties)]
|
||||||
pub struct Document {
|
pub struct Document {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
#[serde(alias = "objectType")]
|
#[serde(alias = "objectType")]
|
||||||
|
@ -72,9 +75,10 @@ pub struct Document {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Represents any kind of event.
|
/// Represents any kind of event.
|
||||||
#[derive(Clone, Debug, Default, Deserialize, PropRefs, Serialize)]
|
#[derive(Clone, Debug, Default, Extensible, PropRefs, serde::Deserialize, serde::Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
#[prop_refs(Object)]
|
#[prop_refs(Object)]
|
||||||
|
#[extension(ApObjectProperties)]
|
||||||
pub struct Event {
|
pub struct Event {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
#[serde(alias = "objectType")]
|
#[serde(alias = "objectType")]
|
||||||
|
@ -88,9 +92,10 @@ pub struct Event {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// An image document of any kind
|
/// An image document of any kind
|
||||||
#[derive(Clone, Debug, Default, Deserialize, PropRefs, Serialize)]
|
#[derive(Clone, Debug, Default, Extensible, PropRefs, serde::Deserialize, serde::Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
#[prop_refs(Object)]
|
#[prop_refs(Object)]
|
||||||
|
#[extension(ApObjectProperties)]
|
||||||
pub struct Image {
|
pub struct Image {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
#[serde(alias = "objectType")]
|
#[serde(alias = "objectType")]
|
||||||
|
@ -104,9 +109,10 @@ pub struct Image {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Represents a short written work typically less than a single paragraph in length.
|
/// Represents a short written work typically less than a single paragraph in length.
|
||||||
#[derive(Clone, Debug, Default, Deserialize, PropRefs, Serialize)]
|
#[derive(Clone, Debug, Default, Extensible, PropRefs, serde::Deserialize, serde::Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
#[prop_refs(Object)]
|
#[prop_refs(Object)]
|
||||||
|
#[extension(ApObjectProperties)]
|
||||||
pub struct Note {
|
pub struct Note {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
#[serde(alias = "objectType")]
|
#[serde(alias = "objectType")]
|
||||||
|
@ -120,9 +126,10 @@ pub struct Note {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Represents a Web Page.
|
/// Represents a Web Page.
|
||||||
#[derive(Clone, Debug, Default, Deserialize, PropRefs, Serialize)]
|
#[derive(Clone, Debug, Default, Extensible, PropRefs, serde::Deserialize, serde::Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
#[prop_refs(Object)]
|
#[prop_refs(Object)]
|
||||||
|
#[extension(ApObjectProperties)]
|
||||||
pub struct Page {
|
pub struct Page {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
#[serde(alias = "objectType")]
|
#[serde(alias = "objectType")]
|
||||||
|
@ -153,9 +160,10 @@ pub struct Page {
|
||||||
/// While publishers are not required to use these specific properties and MAY make use of other
|
/// While publishers are not required to use these specific properties and MAY make use of other
|
||||||
/// mechanisms for describing locations, consuming implementations that support the Place object
|
/// mechanisms for describing locations, consuming implementations that support the Place object
|
||||||
/// MUST support the use of these properties.
|
/// MUST support the use of these properties.
|
||||||
#[derive(Clone, Debug, Default, Deserialize, PropRefs, Serialize)]
|
#[derive(Clone, Debug, Default, Extensible, PropRefs, serde::Deserialize, serde::Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
#[prop_refs(Object)]
|
#[prop_refs(Object)]
|
||||||
|
#[extension(ApObjectProperties)]
|
||||||
pub struct Place {
|
pub struct Place {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
#[serde(alias = "objectType")]
|
#[serde(alias = "objectType")]
|
||||||
|
@ -177,9 +185,10 @@ pub struct Place {
|
||||||
/// `Actor` Type objects.
|
/// `Actor` Type objects.
|
||||||
///
|
///
|
||||||
/// The `describes` property is used to reference the object being described by the profile.
|
/// The `describes` property is used to reference the object being described by the profile.
|
||||||
#[derive(Clone, Debug, Default, Deserialize, PropRefs, Serialize)]
|
#[derive(Clone, Debug, Default, Extensible, PropRefs, serde::Deserialize, serde::Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
#[prop_refs(Object)]
|
#[prop_refs(Object)]
|
||||||
|
#[extension(ApObjectProperties)]
|
||||||
pub struct Profile {
|
pub struct Profile {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
#[serde(alias = "objectType")]
|
#[serde(alias = "objectType")]
|
||||||
|
@ -211,9 +220,10 @@ pub struct Profile {
|
||||||
/// individuals that are directly connected within a person's social graph. Suppose we have a user,
|
/// individuals that are directly connected within a person's social graph. Suppose we have a user,
|
||||||
/// Sally, with direct relationships to users Joe and Jane. Sally follows Joe's updates while Sally
|
/// Sally, with direct relationships to users Joe and Jane. Sally follows Joe's updates while Sally
|
||||||
/// and Jane have a mutual relationship.
|
/// and Jane have a mutual relationship.
|
||||||
#[derive(Clone, Debug, Default, Deserialize, PropRefs, Serialize)]
|
#[derive(Clone, Debug, Default, Extensible, PropRefs, serde::Deserialize, serde::Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
#[prop_refs(Object)]
|
#[prop_refs(Object)]
|
||||||
|
#[extension(ApObjectProperties)]
|
||||||
pub struct Relationship {
|
pub struct Relationship {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
#[serde(alias = "objectType")]
|
#[serde(alias = "objectType")]
|
||||||
|
@ -235,9 +245,10 @@ pub struct Relationship {
|
||||||
///
|
///
|
||||||
/// It can be used in Collections to signify that there used to be an object at this position, but
|
/// It can be used in Collections to signify that there used to be an object at this position, but
|
||||||
/// it has been deleted.
|
/// it has been deleted.
|
||||||
#[derive(Clone, Debug, Default, Deserialize, PropRefs, Serialize)]
|
#[derive(Clone, Debug, Default, Extensible, PropRefs, serde::Deserialize, serde::Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
#[prop_refs(Object)]
|
#[prop_refs(Object)]
|
||||||
|
#[extension(ApObjectProperties)]
|
||||||
pub struct Tombstone {
|
pub struct Tombstone {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
#[serde(alias = "objectType")]
|
#[serde(alias = "objectType")]
|
||||||
|
@ -256,9 +267,10 @@ pub struct Tombstone {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Represents a video document of any kind.
|
/// Represents a video document of any kind.
|
||||||
#[derive(Clone, Debug, Default, Deserialize, PropRefs, Serialize)]
|
#[derive(Clone, Debug, Default, Extensible, PropRefs, serde::Deserialize, serde::Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
#[prop_refs(Object)]
|
#[prop_refs(Object)]
|
||||||
|
#[extension(ApObjectProperties)]
|
||||||
pub struct Video {
|
pub struct Video {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
#[serde(alias = "objectType")]
|
#[serde(alias = "objectType")]
|
Loading…
Reference in a new issue