Start documenting object fields
This commit is contained in:
parent
ca04dc05d7
commit
f4a111b5e2
2 changed files with 171 additions and 1 deletions
|
@ -319,7 +319,6 @@ pub mod prelude {
|
|||
//! .set_url("https://localhost:8080/preview.png".parse::<XsdAnyUri>()?)
|
||||
//! .set_media_type("image/png".parse()?)
|
||||
//! .set_id("https://localhostst:8080/preview.png".parse()?);
|
||||
//!
|
||||
//!
|
||||
//! let mut video = ApObject::<Video>::default();
|
||||
//!
|
||||
|
|
171
src/object.rs
171
src/object.rs
|
@ -1339,90 +1339,223 @@ pub type Note = Object<NoteType>;
|
|||
pub type Page = Object<PageType>;
|
||||
pub type Video = Object<VideoType>;
|
||||
|
||||
/// Define all the properties of the Object base type as described by the Activity Streams
|
||||
/// vocabulary.
|
||||
#[derive(Clone, Debug, Default, serde::Deserialize, serde::Serialize, TypedBuilder)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
#[builder(doc)]
|
||||
pub struct Object<Kind> {
|
||||
/// Identifies a resource attached or related to an object that potentially requires special
|
||||
/// handling.
|
||||
///
|
||||
/// The intent is to provide a model that is at least semantically similar to attachments in
|
||||
/// email.
|
||||
///
|
||||
/// - Range: Object | Link
|
||||
/// - Functional: false
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
#[builder(default, setter(strip_option, into))]
|
||||
pub attachment: Option<OneOrMany<AnyBase>>,
|
||||
|
||||
/// Identifies one or more entities to which this object is attributed.
|
||||
///
|
||||
/// The attributed entities might not be Actors. For instance, an object might be attributed to
|
||||
/// the completion of another activity.
|
||||
///
|
||||
/// - Range: Object | Link
|
||||
/// - Functional: false
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
#[builder(default, setter(strip_option, into))]
|
||||
pub attributed_to: Option<OneOrMany<AnyBase>>,
|
||||
|
||||
/// Identifies one or more entities that represent the total population of entities for which
|
||||
/// the object can considered to be relevant.
|
||||
///
|
||||
/// - Range: Object | Link
|
||||
/// - Functional: false
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
#[builder(default, setter(strip_option, into))]
|
||||
pub audience: Option<OneOrMany<AnyBase>>,
|
||||
|
||||
/// The content or textual representation of the Object encoded as a JSON string.
|
||||
///
|
||||
/// By default, the value of content is HTML. The mediaType property can be used in the object
|
||||
/// to indicate a different content type.
|
||||
///
|
||||
/// The content MAY be expressed using multiple language-tagged values.
|
||||
///
|
||||
/// - Range: xsd:string | rdf:langString
|
||||
/// - Functional: false
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
#[builder(default, setter(strip_option, into))]
|
||||
pub content: Option<OneOrMany<AnyString>>,
|
||||
|
||||
/// A natural language summarization of the object encoded as HTML.
|
||||
///
|
||||
/// Multiple language tagged summaries MAY be provided.
|
||||
///
|
||||
/// - Range: xsd:string | rdf:langString
|
||||
/// - Functional: false
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
#[builder(default, setter(strip_option, into))]
|
||||
pub summary: Option<OneOrMany<AnyString>>,
|
||||
|
||||
/// Identifies one or more links to representations of the object.
|
||||
///
|
||||
/// - Range: xsd:anyUri | Link
|
||||
/// - Functional: false
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
#[builder(default, setter(strip_option, into))]
|
||||
pub url: Option<OneOrMany<AnyBase>>,
|
||||
|
||||
/// Identifies the entity (e.g. an application) that generated the object.
|
||||
///
|
||||
/// - Range: Object | Link
|
||||
/// - Functional: false
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
#[builder(default, setter(strip_option, into))]
|
||||
pub generator: Option<OneOrMany<AnyBase>>,
|
||||
|
||||
/// Indicates an entity that describes an icon for this object.
|
||||
///
|
||||
/// The image should have an aspect ratio of one (horizontal) to one (vertical) and should be
|
||||
/// suitable for presentation at a small size.
|
||||
///
|
||||
/// - Range: Image | Link
|
||||
/// - Functional: false
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
#[builder(default, setter(strip_option, into))]
|
||||
pub icon: Option<OneOrMany<AnyBase>>,
|
||||
|
||||
/// Indicates an entity that describes an image for this object.
|
||||
///
|
||||
/// Unlike the icon property, there are no aspect ratio or display size limitations assumed.
|
||||
///
|
||||
/// - Range: Image | Link
|
||||
/// - Functional: false
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
#[builder(default, setter(strip_option, into))]
|
||||
pub image: Option<OneOrMany<AnyBase>>,
|
||||
|
||||
/// Indicates one or more physical or logical locations associated with the object.
|
||||
///
|
||||
/// - Range: Object | Link
|
||||
/// - Functional: false
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
#[builder(default, setter(strip_option, into))]
|
||||
pub location: Option<OneOrMany<AnyBase>>,
|
||||
|
||||
/// One or more "tags" that have been associated with an objects. A tag can be any kind of Object.
|
||||
///
|
||||
/// The key difference between attachment and tag is that the former implies association by
|
||||
/// inclusion, while the latter implies associated by reference.
|
||||
///
|
||||
/// - Range: Object | Link
|
||||
/// - Functional: false
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
#[builder(default, setter(strip_option, into))]
|
||||
pub tag: Option<OneOrMany<AnyBase>>,
|
||||
|
||||
/// The date and time describing the actual or expected starting time of the object.
|
||||
///
|
||||
/// When used with an Activity object, for instance, the start_time property specifies the
|
||||
/// moment the activity began or is scheduled to begin.
|
||||
///
|
||||
/// - Range: xsd:DateTime
|
||||
/// - Functional: true
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
#[builder(default, setter(strip_option, into))]
|
||||
pub start_time: Option<XsdDateTime>,
|
||||
|
||||
/// The date and time describing the actual or expected ending time of the object.
|
||||
///
|
||||
/// When used with an Activity object, for instance, the endTime property specifies the moment
|
||||
/// the activity concluded or is expected to conclude.
|
||||
///
|
||||
/// - Range: xsd:dateTime
|
||||
/// - Functional: true
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
#[builder(default, setter(strip_option, into))]
|
||||
pub end_time: Option<XsdDateTime>,
|
||||
|
||||
/// When the object describes a time-bound resource, such as an audio or video, a meeting, etc,
|
||||
/// the duration property indicates the object's approximate duration.
|
||||
///
|
||||
/// The value MUST be expressed as an xsd:duration as defined by
|
||||
/// [xmlschema11-2](https://www.w3.org/TR/xmlschema11-2/), section 3.3.6 (e.g. a period of 5
|
||||
/// seconds is represented as "PT5S").
|
||||
///
|
||||
/// - Range: xsd:duration
|
||||
/// - Functional: true
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
#[builder(default, setter(strip_option))]
|
||||
pub duration: Option<XsdDuration>,
|
||||
|
||||
/// The date and time at which the object was published.
|
||||
///
|
||||
/// - Range: xsd:dateTime
|
||||
/// - Functional: true
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
#[builder(default, setter(strip_option, into))]
|
||||
pub published: Option<XsdDateTime>,
|
||||
|
||||
/// The date and time at which the object was updated,
|
||||
///
|
||||
/// - Range: xsd:dateTime
|
||||
/// - Functional: true
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
#[builder(default, setter(strip_option, into))]
|
||||
pub updated: Option<XsdDateTime>,
|
||||
|
||||
/// Indicates one or more entities for which this object is considered a response.
|
||||
///
|
||||
/// - Range: Object | Link
|
||||
/// - Functional: false
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
#[builder(default, setter(strip_option, into))]
|
||||
pub in_reply_to: Option<OneOrMany<AnyBase>>,
|
||||
|
||||
/// Identifies a Collection containing objects considered to be responses to this object.
|
||||
///
|
||||
/// - Range: Object | Link
|
||||
/// - Functional: false
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
#[builder(default, setter(strip_option, into))]
|
||||
pub replies: Option<OneOrMany<AnyBase>>,
|
||||
|
||||
/// Identifies an entity considered to be part of the public primary audience of an Object.
|
||||
///
|
||||
/// - Range: Object | Link
|
||||
/// - Functional: false
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
#[builder(default, setter(strip_option, into))]
|
||||
pub to: Option<OneOrMany<AnyBase>>,
|
||||
|
||||
/// Identifies an Object that is part of the private primary audience of this Object.
|
||||
///
|
||||
/// Range: Object | Link
|
||||
/// Functional: false
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
#[builder(default, setter(strip_option, into))]
|
||||
pub bto: Option<OneOrMany<AnyBase>>,
|
||||
|
||||
/// Identifies an Object that is part of the public secondary audience of this Object.
|
||||
///
|
||||
/// - Range: Object | Link
|
||||
/// - Functional: false
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
#[builder(default, setter(strip_option, into))]
|
||||
pub cc: Option<OneOrMany<AnyBase>>,
|
||||
|
||||
/// Identifies one or more Objects that are part of the private secondary audience of this Object.
|
||||
///
|
||||
/// - Range: Object | Link
|
||||
/// - Functional: false
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
#[builder(default, setter(strip_option, into))]
|
||||
pub bcc: Option<OneOrMany<AnyBase>>,
|
||||
|
||||
/// Base fields and unparsed json ends up here
|
||||
#[serde(flatten)]
|
||||
pub inner: Base<Kind>,
|
||||
}
|
||||
|
@ -1431,22 +1564,60 @@ pub struct Object<Kind> {
|
|||
#[serde(rename_all = "camelCase")]
|
||||
#[builder(doc)]
|
||||
pub struct ApObject<Inner> {
|
||||
/// This is a list of all Announce activities with this object as the object property, added as
|
||||
/// a side effect.
|
||||
///
|
||||
/// The shares collection MUST be either an OrderedCollection or a Collection and MAY be
|
||||
/// filtered on privileges of an authenticated user or as appropriate when no authentication is
|
||||
/// given.
|
||||
///
|
||||
/// - Range: anyUri
|
||||
/// - Functional: true
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
#[builder(default, setter(strip_option))]
|
||||
pub shares: Option<XsdAnyUri>,
|
||||
|
||||
/// This is a list of all Like activities with this object as the object property, added as a
|
||||
/// side effect.
|
||||
///
|
||||
/// The likes collection MUST be either an OrderedCollection or a Collection and MAY be
|
||||
/// filtered on privileges of an authenticated user or as appropriate when no authentication is
|
||||
/// given.
|
||||
///
|
||||
/// - Range: anyUri
|
||||
/// - Functional: true
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
#[builder(default, setter(strip_option))]
|
||||
pub likes: Option<XsdAnyUri>,
|
||||
|
||||
/// The source property is intended to convey some sort of source from which the content markup
|
||||
/// was derived, as a form of provenance, or to support future editing by clients.
|
||||
///
|
||||
/// In general, clients do the conversion from source to content, not the other way around.
|
||||
///
|
||||
/// The value of source is itself an object which uses its own content and mediaType fields to
|
||||
/// supply source information.
|
||||
///
|
||||
/// - Range: Object
|
||||
/// - Functional: true
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
#[builder(default, setter(strip_option, into))]
|
||||
pub source: Option<AnyBase>,
|
||||
|
||||
/// Servers MAY support uploading document types to be referenced in activites, such as images,
|
||||
/// video or other binary data, but the precise mechanism is out of scope for this version of
|
||||
/// ActivityPub.
|
||||
///
|
||||
/// The Social Web Community Group is refining the protocol in the
|
||||
/// [ActivityPub Media Upload report](https://www.w3.org/wiki/SocialCG/ActivityPub/MediaUpload).
|
||||
///
|
||||
/// - Range: anyUri
|
||||
/// - Functional: false
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
#[builder(default, setter(strip_option, into))]
|
||||
pub upload_media: Option<OneOrMany<XsdAnyUri>>,
|
||||
|
||||
/// The ActivityStreams object being extended
|
||||
#[serde(flatten)]
|
||||
pub inner: Inner,
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue