example-types: Add generic activity type

This commit is contained in:
Aode (lion) 2021-11-19 17:17:42 -06:00
parent 8f40415cb5
commit fe7e417e40

View file

@ -8,6 +8,39 @@ use std::{
};
use url::Url;
#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)]
pub enum ActivityType {
Create,
Update,
Delete,
Undo,
Follow,
Accept,
Reject,
}
#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)]
pub struct AcceptedActivity {
id: ObjectId<ActivityType>,
#[serde(rename = "type")]
kind: ActivityType,
}
impl AcceptedActivity {
pub fn id(&self) -> &ObjectId<ActivityType> {
&self.id
}
}
impl Dereference for ObjectId<ActivityType> {
type Output = AcceptedActivity;
fn url(&self) -> &Url {
&self.0
}
}
#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct ObjectId<Kind>(apub_core::object_id::ObjectId<Kind>);