]> Untitled Git - lemmy.git/blobdiff - crates/apub/src/fetcher/user_or_community.rs
Implement federated user following (fixes #752) (#2577)
[lemmy.git] / crates / apub / src / fetcher / user_or_community.rs
index da23ad59a180a85395d27aa9f325e12fa8f4b014..156f5e83a6eb6f4969a69ef1576c8340d64e24cc 100644 (file)
@@ -1,6 +1,7 @@
 use crate::{
   objects::{community::ApubCommunity, person::ApubPerson},
   protocol::objects::{group::Group, person::Person},
+  ActorType,
 };
 use activitypub_federation::traits::{Actor, ApubObject};
 use chrono::NaiveDateTime;
@@ -114,3 +115,19 @@ impl Actor for UserOrCommunity {
     unimplemented!()
   }
 }
+
+impl ActorType for UserOrCommunity {
+  fn actor_id(&self) -> Url {
+    match self {
+      UserOrCommunity::User(u) => u.actor_id(),
+      UserOrCommunity::Community(c) => c.actor_id(),
+    }
+  }
+
+  fn private_key(&self) -> Option<String> {
+    match self {
+      UserOrCommunity::User(u) => u.private_key(),
+      UserOrCommunity::Community(c) => c.private_key(),
+    }
+  }
+}