summaryrefslogtreecommitdiffstats
path: root/src/server/activities/follow.rs
diff options
context:
space:
mode:
authorrtkay123 <dev@kanjala.com>2025-07-17 14:00:40 +0200
committerrtkay123 <dev@kanjala.com>2025-07-17 14:00:40 +0200
commit69fe55ad54468948c13af520a498ed4aeac194ed (patch)
treec7db25aa7cf615480e9b386064f232d2bec6ccc3 /src/server/activities/follow.rs
parent5fdb24b6a2cef7964a049e789ed90f883221d657 (diff)
downloadsellershut-69fe55ad54468948c13af520a498ed4aeac194ed.tar.bz2
sellershut-69fe55ad54468948c13af520a498ed4aeac194ed.zip
chore: convert to workspace
Diffstat (limited to 'src/server/activities/follow.rs')
-rw-r--r--src/server/activities/follow.rs91
1 files changed, 0 insertions, 91 deletions
diff --git a/src/server/activities/follow.rs b/src/server/activities/follow.rs
deleted file mode 100644
index 466edb7..0000000
--- a/src/server/activities/follow.rs
+++ /dev/null
@@ -1,91 +0,0 @@
-use activitypub_federation::{
- config::Data,
- fetch::object_id::ObjectId,
- kinds::activity::FollowType,
- traits::{Activity, Actor},
-};
-use async_trait::async_trait;
-use serde::{Deserialize, Serialize};
-use url::Url;
-use uuid::Uuid;
-
-use crate::{
- entity::user::User,
- error::AppError,
- server::{activities::accept::Accept, generate_object_id},
- state::AppHandle,
-};
-
-#[derive(Deserialize, Serialize, Clone, Debug)]
-#[serde(rename_all = "camelCase")]
-pub struct Follow {
- pub actor: ObjectId<User>,
- pub object: ObjectId<User>,
- #[serde(rename = "type")]
- kind: FollowType,
- id: Url,
-}
-
-impl Follow {
- pub fn new(actor: ObjectId<User>, object: ObjectId<User>, id: Url) -> Follow {
- Follow {
- actor,
- object,
- kind: Default::default(),
- id,
- }
- }
-}
-
-#[async_trait]
-impl Activity for Follow {
- #[doc = " App data type passed to handlers. Must be identical to"]
- #[doc = " [crate::config::FederationConfigBuilder::app_data] type."]
- type DataType = AppHandle;
-
- #[doc = " Error type returned by handler methods"]
- type Error = AppError;
-
- #[doc = " `id` field of the activity"]
- fn id(&self) -> &Url {
- &self.id
- }
-
- #[doc = " `actor` field of activity"]
- fn actor(&self) -> &Url {
- self.actor.inner()
- }
-
- #[doc = " Verifies that the received activity is valid."]
- #[doc = ""]
- #[doc = " This needs to be a separate method, because it might be used for activities"]
- #[doc = " like `Undo/Follow`, which shouldn\'t perform any database write for the inner `Follow`."]
- async fn verify(&self, _data: &Data<Self::DataType>) -> Result<(), Self::Error> {
- Ok(())
- }
-
- #[doc = " Called when an activity is received."]
- #[doc = ""]
- #[doc = " Should perform validation and possibly write action to the database. In case the activity"]
- #[doc = " has a nested `object` field, must call `object.from_json` handler."]
- async fn receive(self, data: &Data<Self::DataType>) -> Result<(), Self::Error> {
- let id = Uuid::now_v7();
-
- sqlx::query!("insert into following (id, follower, followee) values ($1, $2, $3) on conflict (follower, followee) do nothing"
- ,id,
- self.actor.inner().as_str(),
- self.object.inner().as_str(),
- ).execute(&data.services.postgres).await?;
-
- let follower = self.actor.dereference(data).await?;
- let id = generate_object_id(data.domain(), data.environment)?;
-
- let local_user = self.object.dereference(data).await?;
- let accept = Accept::new(self.object.clone(), self, id.clone());
-
- local_user
- .send(accept, vec![follower.shared_inbox_or_inbox()], false, data)
- .await?;
- Ok(())
- }
-}