Browse Source

Add /activities endpoint (ref #1220)

activity-checks
Felix Ableitner 1 month ago
parent
commit
99abc49040
5 changed files with 38 additions and 4 deletions
  1. +1
    -1
      lemmy_apub/src/activities/send/mod.rs
  2. +32
    -2
      lemmy_apub/src/http/mod.rs
  3. +1
    -0
      migrations/2020-10-23-115011_activity_ap_id_column/down.sql
  4. +1
    -0
      migrations/2020-10-23-115011_activity_ap_id_column/up.sql
  5. +3
    -1
      src/routes/federation.rs

+ 1
- 1
lemmy_apub/src/activities/send/mod.rs View File

@@ -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()


+ 32
- 2
lemmy_apub/src/http/mod.rs View File

@@ -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))
}

+ 1
- 0
migrations/2020-10-23-115011_activity_ap_id_column/down.sql View File

@@ -0,0 +1 @@
ALTER TABLE activity DROP COLUMN ap_id;

+ 1
- 0
migrations/2020-10-23-115011_activity_ap_id_column/up.sql View File

@@ -0,0 +1 @@
ALTER TABLE activity ADD COLUMN ap_id TEXT;

+ 3
- 1
src/routes/federation.rs View File

@@ -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…
Cancel
Save