From c53c13a82c1048220fbf7acaa8129580d7d5b0ed Mon Sep 17 00:00:00 2001 From: Till Wegmueller Date: Tue, 25 Jul 2023 20:43:19 +0200 Subject: [PATCH] Small fixup to accept activities Signed-off-by: Till Wegmueller --- crates/activitypub/src/activities.rs | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/crates/activitypub/src/activities.rs b/crates/activitypub/src/activities.rs index 4db423a..b166bf6 100644 --- a/crates/activitypub/src/activities.rs +++ b/crates/activitypub/src/activities.rs @@ -4,17 +4,23 @@ use serde_json::Value; use std::collections::HashMap; #[derive(Debug, Serialize, Deserialize)] -#[serde(tag = "type")] +#[serde(untagged)] pub enum Activity { Create(Create), Follow(Follow), Accept(Accept), } +#[derive(Debug, Serialize, Deserialize, Clone)] +pub enum CreateType { + Create, +} #[derive(Debug, Serialize, Deserialize, Clone)] pub struct Create { pub context: Context, pub id: Url, + #[serde(rename = "type")] + pub kind: CreateType, pub actor: Url, pub published: chrono::NaiveDateTime, pub to: Vec, @@ -22,20 +28,32 @@ pub struct Create { pub object: HashMap, } +#[derive(Debug, Serialize, Deserialize, Clone)] +pub enum FollowType { + Follow, +} #[derive(Debug, Serialize, Deserialize, Clone)] pub struct Follow { pub context: Context, pub id: Url, + #[serde(rename = "type")] + pub kind: FollowType, pub actor: Url, #[serde(deserialize_with = "deserialize_skip_error", default)] pub to: Option<[Url; 1]>, pub object: Url, } +#[derive(Debug, Serialize, Deserialize, Clone)] +pub enum AcceptType { + Accept, +} #[derive(Debug, Serialize, Deserialize, Clone)] pub struct Accept { pub context: Context, pub id: Url, + #[serde(rename = "type")] + pub kind: AcceptType, pub actor: Url, #[serde(deserialize_with = "deserialize_skip_error", default)] pub to: Option<[Url; 1]>,