]> Untitled Git - lemmy.git/commitdiff
Add to/cc (and a bunch of todo)
authorFelix <me@nutomic.com>
Fri, 10 Apr 2020 11:26:06 +0000 (13:26 +0200)
committerFelix <me@nutomic.com>
Fri, 10 Apr 2020 11:26:06 +0000 (13:26 +0200)
server/src/apub/activities.rs
server/src/routes/federation.rs

index 3968a8b006bdf35261a29fd349609a5e50e59f36..ff0a4fc16bfb0c20188ada9b73a8aa014f83c0af 100644 (file)
@@ -1,6 +1,8 @@
 use crate::apub::{get_apub_protocol_string, get_following_instances};
+use crate::db::community::Community;
 use crate::db::post::Post;
 use crate::db::user::User_;
+use crate::db::Crud;
 use activitystreams::activity::Create;
 use activitystreams::context;
 use diesel::PgConnection;
@@ -9,18 +11,24 @@ use isahc::prelude::*;
 
 pub fn post_create(post: &Post, creator: &User_, conn: &PgConnection) -> Result<(), Error> {
   let page = post.as_page(conn)?;
+  let community = Community::read(conn, post.community_id)?;
   let mut create = Create::new();
   create.object_props.set_context_xsd_any_uri(context())?;
-  // TODO: seems like the create activity needs its own id (and be fetchable there)
   create
     .object_props
-    .set_id(page.object_props.get_id().unwrap().to_string())?;
+    // TODO: seems like the create activity needs its own id (and be fetchable there)
+    .set_id(page.object_props.get_id().unwrap().to_string())?
+    // TODO: should to/cc go on the Create, or on the Post? or on both?
+    // TODO: handle privacy on the receiving side (at least ignore anything thats not public)
+    .set_to_xsd_any_uri("https://www.w3.org/ns/activitystreams#Public")?
+    .set_cc_xsd_any_uri(format!("{}/followers", community.actor_id))?;
   create
     .create_props
     .set_actor_xsd_any_uri(creator.actor_id.to_owned())?;
   create.create_props.set_object_base_box(page)?;
   let json = serde_json::to_string(&create)?;
   for i in get_following_instances() {
+    // TODO: need to send this to the inbox of following users
     let inbox = format!(
       "{}://{}/federation/inbox",
       get_apub_protocol_string(),
index c85d9d4969f8dc196f456d71d643f85b3cdc7f57..f4fffdad4ba2da13088925b4b2ded7b586c3acee 100644 (file)
@@ -10,6 +10,7 @@ pub fn config(cfg: &mut web::ServiceConfig) {
         "/federation/communities",
         web::get().to(apub::community::get_apub_community_list),
       )
+      // TODO: this needs to be moved to the actors (eg /federation/u/{}/inbox)
       .route(
         "/federation/inbox",
         web::post().to(apub::inbox::create_inbox),