use activitypub_federation::{traits::Object, FEDERATION_CONTENT_TYPE}; use actix_web::{get, web, HttpResponse}; use sea_orm::{ColumnTrait, EntityTrait, QueryFilter}; use crate::{ database::State, entities::{ post::{self, Entity}, prelude, }, error, Response, DB, FEDERATION_CONFIG, }; #[get("/apbridge/object/{post}")] async fn fetch_post( path: web::Path, state: web::Data, ) -> actix_web::Result { let db = DB.get().unwrap(); let post = prelude::Post::find() .filter(post::Column::Id.eq(path.as_str())) .one(db) .await?; let post = match post { Some(post) => post, None => return Ok(HttpResponse::NotFound().finish()), }; Ok(HttpResponse::Ok() .content_type(FEDERATION_CONTENT_TYPE) .json( post.into_json(&FEDERATION_CONFIG.get().unwrap().to_request_data()) .await?, )) }