Add /activities endpoint (ref #1220)
This commit is contained in:
parent
6d17d5ead2
commit
99abc49040
5 changed files with 38 additions and 4 deletions
|
@ -15,7 +15,7 @@ where
|
|||
T: ToString,
|
||||
{
|
||||
let id = format!(
|
||||
"{}/receive/{}/{}",
|
||||
"{}/activities/{}/{}",
|
||||
Settings::get().get_protocol_and_hostname(),
|
||||
kind.to_string().to_lowercase(),
|
||||
Uuid::new_v4()
|
||||
|
|
|
@ -1,6 +1,10 @@
|
|||
use crate::APUB_JSON_CONTENT_TYPE;
|
||||
use actix_web::{body::Body, HttpResponse};
|
||||
use serde::Serialize;
|
||||
use actix_web::{body::Body, web, HttpResponse};
|
||||
use lemmy_db::activity::Activity;
|
||||
use lemmy_structs::blocking;
|
||||
use lemmy_utils::{settings::Settings, LemmyError};
|
||||
use lemmy_websocket::LemmyContext;
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
pub mod comment;
|
||||
pub mod community;
|
||||
|
@ -26,3 +30,29 @@ where
|
|||
.content_type(APUB_JSON_CONTENT_TYPE)
|
||||
.json(data)
|
||||
}
|
||||
|
||||
#[derive(Deserialize)]
|
||||
pub struct CommunityQuery {
|
||||
type_: String,
|
||||
id: String,
|
||||
}
|
||||
|
||||
/// Return the ActivityPub json representation of a local community over HTTP.
|
||||
pub async fn get_activity(
|
||||
info: web::Path<CommunityQuery>,
|
||||
context: web::Data<LemmyContext>,
|
||||
) -> Result<HttpResponse<Body>, LemmyError> {
|
||||
let settings = Settings::get();
|
||||
let activity_id = format!(
|
||||
"{}/activities/{}/{}",
|
||||
settings.get_protocol_and_hostname(),
|
||||
info.type_,
|
||||
info.id
|
||||
);
|
||||
let activity = blocking(context.pool(), move |conn| {
|
||||
Activity::read_from_apub_id(&conn, &activity_id)
|
||||
})
|
||||
.await??;
|
||||
|
||||
Ok(create_apub_response(&activity.data))
|
||||
}
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
ALTER TABLE activity DROP COLUMN ap_id;
|
|
@ -0,0 +1 @@
|
|||
ALTER TABLE activity ADD COLUMN ap_id TEXT;
|
|
@ -4,6 +4,7 @@ use lemmy_apub::{
|
|||
http::{
|
||||
comment::get_apub_comment,
|
||||
community::{get_apub_community_followers, get_apub_community_http, get_apub_community_outbox},
|
||||
get_activity,
|
||||
post::get_apub_post,
|
||||
user::get_apub_user_http,
|
||||
},
|
||||
|
@ -36,7 +37,8 @@ pub fn config(cfg: &mut web::ServiceConfig) {
|
|||
)
|
||||
.route("/u/{user_name}", web::get().to(get_apub_user_http))
|
||||
.route("/post/{post_id}", web::get().to(get_apub_post))
|
||||
.route("/comment/{comment_id}", web::get().to(get_apub_comment)),
|
||||
.route("/comment/{comment_id}", web::get().to(get_apub_comment))
|
||||
.route("/activities/{type_}/{id}", web::get().to(get_activity)),
|
||||
)
|
||||
// Inboxes dont work with the header guard for some reason.
|
||||
.service(
|
||||
|
|
Loading…
Reference in a new issue