-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 {
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))
+}
}
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()?))
}
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,
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)),