summaryrefslogtreecommitdiffstats
path: root/server/src/apub
diff options
context:
space:
mode:
Diffstat (limited to 'server/src/apub')
-rw-r--r--server/src/apub/community.rs12
-rw-r--r--server/src/apub/community_inbox.rs4
-rw-r--r--server/src/apub/mod.rs11
-rw-r--r--server/src/apub/user.rs12
4 files changed, 23 insertions, 16 deletions
diff --git a/server/src/apub/community.rs b/server/src/apub/community.rs
index 05e004ee..e74a5fd1 100644
--- a/server/src/apub/community.rs
+++ b/server/src/apub/community.rs
@@ -38,13 +38,7 @@ impl ToApub for Community {
.set_outbox(self.get_outbox_url())?
.set_followers(self.get_followers_url())?;
- let public_key = PublicKey {
- id: format!("{}#main-key", self.actor_id),
- owner: self.actor_id.to_owned(),
- public_key_pem: self.public_key.to_owned().unwrap(),
- };
-
- Ok(group.extend(actor_props).extend(public_key.to_ext()))
+ Ok(group.extend(actor_props).extend(self.get_public_key_ext()))
}
}
@@ -52,6 +46,10 @@ impl ActorType for Community {
fn actor_id(&self) -> String {
self.actor_id.to_owned()
}
+
+ fn public_key(&self) -> String {
+ self.public_key.to_owned().unwrap()
+ }
}
impl FromApub for CommunityForm {
diff --git a/server/src/apub/community_inbox.rs b/server/src/apub/community_inbox.rs
index af6d39e1..6931cdf1 100644
--- a/server/src/apub/community_inbox.rs
+++ b/server/src/apub/community_inbox.rs
@@ -60,8 +60,8 @@ fn handle_follow(
user_id: user.id,
};
- // This will fail if they're already a follower
- CommunityFollower::follow(&conn, &community_follower_form)?;
+ // This will fail if they're already a follower, but ignore the error.
+ CommunityFollower::follow(&conn, &community_follower_form).ok();
accept_follow(&follow, &conn)?;
Ok(HttpResponse::Ok().finish())
diff --git a/server/src/apub/mod.rs b/server/src/apub/mod.rs
index 05792968..9c02d107 100644
--- a/server/src/apub/mod.rs
+++ b/server/src/apub/mod.rs
@@ -141,6 +141,8 @@ pub trait FromApub {
pub trait ActorType {
fn actor_id(&self) -> String;
+ fn public_key(&self) -> String;
+
fn get_inbox_url(&self) -> String {
format!("{}/inbox", &self.actor_id())
}
@@ -157,4 +159,13 @@ pub trait ActorType {
fn get_liked_url(&self) -> String {
format!("{}/liked", &self.actor_id())
}
+
+ fn get_public_key_ext(&self) -> PublicKeyExtension {
+ PublicKey {
+ id: format!("{}#main-key", self.actor_id()),
+ owner: self.actor_id(),
+ public_key_pem: self.public_key(),
+ }
+ .to_ext()
+ }
}
diff --git a/server/src/apub/user.rs b/server/src/apub/user.rs
index 274c70a9..88238b5d 100644
--- a/server/src/apub/user.rs
+++ b/server/src/apub/user.rs
@@ -36,13 +36,7 @@ impl ToApub for User_ {
.set_following(self.get_following_url())?
.set_liked(self.get_liked_url())?;
- let public_key = PublicKey {
- id: format!("{}#main-key", self.actor_id),
- owner: self.actor_id.to_owned(),
- public_key_pem: self.public_key.to_owned().unwrap(),
- };
-
- Ok(person.extend(actor_props).extend(public_key.to_ext()))
+ Ok(person.extend(actor_props).extend(self.get_public_key_ext()))
}
}
@@ -50,6 +44,10 @@ impl ActorType for User_ {
fn actor_id(&self) -> String {
self.actor_id.to_owned()
}
+
+ fn public_key(&self) -> String {
+ self.public_key.to_owned().unwrap()
+ }
}
impl FromApub for UserForm {