diff options
Diffstat (limited to 'src/server/activities/accept.rs')
-rw-r--r-- | src/server/activities/accept.rs | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/src/server/activities/accept.rs b/src/server/activities/accept.rs new file mode 100644 index 0000000..44f26f6 --- /dev/null +++ b/src/server/activities/accept.rs @@ -0,0 +1,52 @@ +use crate::{ + entity::user::User, error::AppError, server::activities::follow::Follow, state::AppHandle, +}; +use activitypub_federation::{ + config::Data, fetch::object_id::ObjectId, kinds::activity::AcceptType, traits::Activity, +}; +use async_trait::async_trait; +use serde::{Deserialize, Serialize}; +use url::Url; + +#[derive(Deserialize, Serialize, Debug)] +#[serde(rename_all = "camelCase")] +pub struct Accept { + actor: ObjectId<User>, + object: Follow, + #[serde(rename = "type")] + kind: AcceptType, + id: Url, +} + +impl Accept { + pub fn new(actor: ObjectId<User>, object: Follow, id: Url) -> Accept { + Accept { + actor, + object, + kind: Default::default(), + id, + } + } +} + +#[async_trait] +impl Activity for Accept { + type DataType = AppHandle; + type Error = AppError; + + fn id(&self) -> &Url { + &self.id + } + + fn actor(&self) -> &Url { + self.actor.inner() + } + + async fn verify(&self, _data: &Data<Self::DataType>) -> Result<(), Self::Error> { + Ok(()) + } + + async fn receive(self, _data: &Data<Self::DataType>) -> Result<(), Self::Error> { + Ok(()) + } +} |