Skip to content

Commit

Permalink
Merge pull request 'Create empty outbox for user (ref #1220)' (#135) …
Browse files Browse the repository at this point in the history
…from user-outbox into main

Reviewed-on: https://yerbamate.ml/LemmyNet/lemmy/pulls/135
  • Loading branch information
dessalines committed Nov 18, 2020
2 parents f0e3303 + 48f5062 commit c038ace
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 7 deletions.
24 changes: 23 additions & 1 deletion lemmy_apub/src/http/user.rs
Original file line number Diff line number Diff line change
@@ -1,10 +1,15 @@
use crate::{http::create_apub_response, ToApub};
use crate::{http::create_apub_response, ActorType, ToApub};
use activitystreams::{
base::BaseExt,
collection::{CollectionExt, OrderedCollection},
};
use actix_web::{body::Body, web, HttpResponse};
use lemmy_db::user::User_;
use lemmy_structs::blocking;
use lemmy_utils::LemmyError;
use lemmy_websocket::LemmyContext;
use serde::Deserialize;
use url::Url;

#[derive(Deserialize)]
pub struct UserQuery {
Expand All @@ -24,3 +29,20 @@ pub async fn get_apub_user_http(
let u = user.to_apub(context.pool()).await?;
Ok(create_apub_response(&u))
}

pub async fn get_apub_user_outbox(
info: web::Path<UserQuery>,
context: web::Data<LemmyContext>,
) -> Result<HttpResponse<Body>, LemmyError> {
let user = blocking(context.pool(), move |conn| {
User_::read_from_name(&conn, &info.user_name)
})
.await??;
let mut collection = OrderedCollection::new();
collection
.set_many_items(Vec::<Url>::new())
.set_context(activitystreams::context())
.set_id(user.get_outbox_url()?)
.set_total_items(0_u64);
Ok(create_apub_response(&collection))
}
12 changes: 7 additions & 5 deletions lemmy_apub/src/objects/user.rs
Original file line number Diff line number Diff line change
Expand Up @@ -55,11 +55,13 @@ impl ToApub for User_ {
}

let mut ap_actor = ApActor::new(self.get_inbox_url()?, person);
ap_actor.set_preferred_username(self.name.to_owned());
ap_actor.set_endpoints(Endpoints {
shared_inbox: Some(self.get_shared_inbox_url()?),
..Default::default()
});
ap_actor
.set_preferred_username(self.name.to_owned())
.set_outbox(self.get_outbox_url()?)
.set_endpoints(Endpoints {
shared_inbox: Some(self.get_shared_inbox_url()?),
..Default::default()
});

Ok(Ext1::new(ap_actor, self.get_public_key_ext()?))
}
Expand Down
3 changes: 2 additions & 1 deletion src/routes/federation.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ use lemmy_apub::{
community::{get_apub_community_followers, get_apub_community_http, get_apub_community_outbox},
get_activity,
post::get_apub_post,
user::get_apub_user_http,
user::{get_apub_user_http, get_apub_user_outbox},
},
inbox::{community_inbox::community_inbox, shared_inbox::shared_inbox, user_inbox::user_inbox},
APUB_JSON_CONTENT_TYPE,
Expand Down Expand Up @@ -42,6 +42,7 @@ pub fn config(cfg: &mut web::ServiceConfig) {
web::get().to(get_apub_community_outbox),
)
.route("/u/{user_name}", web::get().to(get_apub_user_http))
.route("/u/{user_name}/outbox", web::get().to(get_apub_user_outbox))
.route("/post/{post_id}", web::get().to(get_apub_post))
.route("/comment/{comment_id}", web::get().to(get_apub_comment))
.route("/activities/{type_}/{id}", web::get().to(get_activity)),
Expand Down

0 comments on commit c038ace

Please sign in to comment.