From 122bb3857a0d1c60fe8c9fbf80c2191b864c356d Mon Sep 17 00:00:00 2001 From: Dessalines Date: Fri, 24 Apr 2020 22:34:51 -0400 Subject: [PATCH] Adding get_public_key_ext() to ActorType trait. --- server/src/apub/community.rs | 12 +++++------- server/src/apub/community_inbox.rs | 4 ++-- server/src/apub/mod.rs | 11 +++++++++++ server/src/apub/user.rs | 12 +++++------- 4 files changed, 23 insertions(+), 16 deletions(-) diff --git a/server/src/apub/community.rs b/server/src/apub/community.rs index 05e004eee..e74a5fd14 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 af6d39e12..6931cdf1a 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 057929688..9c02d1071 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 274c70a94..88238b5d4 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 {