Add to/cc (and a bunch of todo)
This commit is contained in:
parent
d9657b24a7
commit
c648cc8cf3
2 changed files with 11 additions and 2 deletions
|
@ -1,6 +1,8 @@
|
||||||
use crate::apub::{get_apub_protocol_string, get_following_instances};
|
use crate::apub::{get_apub_protocol_string, get_following_instances};
|
||||||
|
use crate::db::community::Community;
|
||||||
use crate::db::post::Post;
|
use crate::db::post::Post;
|
||||||
use crate::db::user::User_;
|
use crate::db::user::User_;
|
||||||
|
use crate::db::Crud;
|
||||||
use activitystreams::activity::Create;
|
use activitystreams::activity::Create;
|
||||||
use activitystreams::context;
|
use activitystreams::context;
|
||||||
use diesel::PgConnection;
|
use diesel::PgConnection;
|
||||||
|
@ -9,18 +11,24 @@ use isahc::prelude::*;
|
||||||
|
|
||||||
pub fn post_create(post: &Post, creator: &User_, conn: &PgConnection) -> Result<(), Error> {
|
pub fn post_create(post: &Post, creator: &User_, conn: &PgConnection) -> Result<(), Error> {
|
||||||
let page = post.as_page(conn)?;
|
let page = post.as_page(conn)?;
|
||||||
|
let community = Community::read(conn, post.community_id)?;
|
||||||
let mut create = Create::new();
|
let mut create = Create::new();
|
||||||
create.object_props.set_context_xsd_any_uri(context())?;
|
create.object_props.set_context_xsd_any_uri(context())?;
|
||||||
// TODO: seems like the create activity needs its own id (and be fetchable there)
|
|
||||||
create
|
create
|
||||||
.object_props
|
.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
|
||||||
.create_props
|
.create_props
|
||||||
.set_actor_xsd_any_uri(creator.actor_id.to_owned())?;
|
.set_actor_xsd_any_uri(creator.actor_id.to_owned())?;
|
||||||
create.create_props.set_object_base_box(page)?;
|
create.create_props.set_object_base_box(page)?;
|
||||||
let json = serde_json::to_string(&create)?;
|
let json = serde_json::to_string(&create)?;
|
||||||
for i in get_following_instances() {
|
for i in get_following_instances() {
|
||||||
|
// TODO: need to send this to the inbox of following users
|
||||||
let inbox = format!(
|
let inbox = format!(
|
||||||
"{}://{}/federation/inbox",
|
"{}://{}/federation/inbox",
|
||||||
get_apub_protocol_string(),
|
get_apub_protocol_string(),
|
||||||
|
|
|
@ -10,6 +10,7 @@ pub fn config(cfg: &mut web::ServiceConfig) {
|
||||||
"/federation/communities",
|
"/federation/communities",
|
||||||
web::get().to(apub::community::get_apub_community_list),
|
web::get().to(apub::community::get_apub_community_list),
|
||||||
)
|
)
|
||||||
|
// TODO: this needs to be moved to the actors (eg /federation/u/{}/inbox)
|
||||||
.route(
|
.route(
|
||||||
"/federation/inbox",
|
"/federation/inbox",
|
||||||
web::post().to(apub::inbox::create_inbox),
|
web::post().to(apub::inbox::create_inbox),
|
||||||
|
|
Loading…
Reference in a new issue