mirror of
https://github.com/versia-pub/activitypub.git
synced 2026-03-13 10:59:17 +01:00
feat: meow meow akkoma?
This commit is contained in:
parent
cd6ff024e4
commit
dc4afd8411
13 changed files with 163 additions and 11 deletions
|
|
@ -229,6 +229,7 @@ pub async fn receive_lysand_note(
|
|||
reply_id: Set(reply_uuid),
|
||||
quoting_id: Set(quote_uuid),
|
||||
spoiler_text: Set(note.subject),
|
||||
ap_json: Set(Some(serde_json::to_string(&ap_note).unwrap())),
|
||||
..Default::default()
|
||||
};
|
||||
let res = post.insert(DB.get().unwrap()).await?;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,7 @@
|
|||
use activitypub_federation::{traits::Object, FEDERATION_CONTENT_TYPE};
|
||||
use activitypub_federation::{
|
||||
protocol::context::WithContext, traits::Object, FEDERATION_CONTENT_TYPE,
|
||||
};
|
||||
use activitystreams_kinds::{activity::CreateType, object};
|
||||
use actix_web::{get, web, HttpResponse};
|
||||
use sea_orm::{ColumnTrait, EntityTrait, QueryFilter};
|
||||
|
||||
|
|
@ -8,7 +11,9 @@ use crate::{
|
|||
post::{self, Entity},
|
||||
prelude,
|
||||
},
|
||||
error, Response, DB, FEDERATION_CONFIG,
|
||||
error, objects,
|
||||
utils::{base_url_decode, generate_create_id},
|
||||
Response, DB, FEDERATION_CONFIG,
|
||||
};
|
||||
|
||||
#[get("/apbridge/object/{post}")]
|
||||
|
|
@ -35,3 +40,40 @@ async fn fetch_post(
|
|||
.await?,
|
||||
))
|
||||
}
|
||||
|
||||
#[get("/apbridge/create/{id}/{base64url}")]
|
||||
async fn create_activity(
|
||||
path: web::Path<(String, String)>,
|
||||
state: web::Data<State>,
|
||||
) -> actix_web::Result<HttpResponse, error::Error> {
|
||||
let db = DB.get().unwrap();
|
||||
|
||||
let url = base_url_decode(path.1.as_str());
|
||||
|
||||
let post = prelude::Post::find()
|
||||
.filter(post::Column::Id.eq(path.0.as_str()))
|
||||
.one(db)
|
||||
.await?;
|
||||
|
||||
let post = match post {
|
||||
Some(post) => post,
|
||||
None => return Ok(HttpResponse::NotFound().finish()),
|
||||
};
|
||||
|
||||
let ap_post = crate::objects::post::Note::from_db(&post);
|
||||
|
||||
let data = FEDERATION_CONFIG.get().unwrap();
|
||||
|
||||
let create = crate::activities::create_post::CreatePost {
|
||||
actor: ap_post.attributed_to.clone(),
|
||||
to: ap_post.to.clone(),
|
||||
object: ap_post,
|
||||
kind: CreateType::Create,
|
||||
id: generate_create_id(&data.to_request_data().domain(), &path.0, &path.1)?,
|
||||
};
|
||||
let create_with_context = WithContext::new_default(create);
|
||||
|
||||
Ok(HttpResponse::Ok()
|
||||
.content_type(FEDERATION_CONTENT_TYPE)
|
||||
.json(create_with_context))
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue