2 activity_lists::SiteInboxActivities,
3 http::create_apub_response,
4 objects::{instance::ApubSite, person::ApubPerson},
5 protocol::collections::empty_outbox::EmptyOutbox,
7 use activitypub_federation::{
8 actix_web::inbox::receive_activity,
10 protocol::context::WithContext,
13 use actix_web::{web::Bytes, HttpRequest, HttpResponse};
14 use lemmy_api_common::context::LemmyContext;
15 use lemmy_db_views::structs::SiteView;
16 use lemmy_utils::error::LemmyError;
19 pub(crate) async fn get_apub_site_http(
20 context: Data<LemmyContext>,
21 ) -> Result<HttpResponse, LemmyError> {
22 let site: ApubSite = SiteView::read_local(&mut context.pool()).await?.site.into();
24 let apub = site.into_json(&context).await?;
25 create_apub_response(&apub)
28 #[tracing::instrument(skip_all)]
29 pub(crate) async fn get_apub_site_outbox(
30 context: Data<LemmyContext>,
31 ) -> Result<HttpResponse, LemmyError> {
32 let outbox_id = format!(
34 context.settings().get_protocol_and_hostname()
36 let outbox = EmptyOutbox::new(Url::parse(&outbox_id)?)?;
37 create_apub_response(&outbox)
40 #[tracing::instrument(skip_all)]
41 pub async fn get_apub_site_inbox(
44 data: Data<LemmyContext>,
45 ) -> Result<HttpResponse, LemmyError> {
46 receive_activity::<WithContext<SiteInboxActivities>, ApubPerson, LemmyContext>(