X-Git-Url: http://these/git/?a=blobdiff_plain;f=src%2Fapi_routes_http.rs;h=bc4340e3cccf5baf61d8fc18fc506ca12791436a;hb=5d23ef960e3361d1cc38c1aff1d907d8da58b90f;hp=375630a9243fc529c7227740e600746d3e7c2d39;hpb=2aef6a5a338c9a6b5764fbc1ae42fa3edf096deb;p=lemmy.git diff --git a/src/api_routes_http.rs b/src/api_routes_http.rs index 375630a9..bc4340e3 100644 --- a/src/api_routes_http.rs +++ b/src/api_routes_http.rs @@ -9,7 +9,6 @@ use lemmy_api_common::{ DistinguishComment, EditComment, GetComment, - GetComments, ListCommentReports, RemoveComment, ResolveCommentReport, @@ -23,7 +22,6 @@ use lemmy_api_common::{ DeleteCommunity, EditCommunity, FollowCommunity, - GetCommunity, HideCommunity, ListCommunities, RemoveCommunity, @@ -39,7 +37,6 @@ use lemmy_api_common::{ DeleteAccount, GetBannedPersons, GetCaptcha, - GetPersonDetails, GetPersonMentions, GetReplies, GetReportCount, @@ -55,14 +52,12 @@ use lemmy_api_common::{ VerifyEmail, }, post::{ - CreatePost, CreatePostLike, CreatePostReport, DeletePost, EditPost, FeaturePost, GetPost, - GetPosts, GetSiteMetadata, ListPostReports, LockPost, @@ -95,13 +90,21 @@ use lemmy_api_common::{ PurgeCommunity, PurgePerson, PurgePost, - ResolveObject, - Search, }, }; -use lemmy_api_crud::PerformCrud; -use lemmy_apub::{api::PerformApub, SendActivity}; -use lemmy_utils::rate_limit::RateLimitCell; +use lemmy_api_crud::{post::create::create_post, PerformCrud}; +use lemmy_apub::{ + api::{ + list_comments::list_comments, + list_posts::list_posts, + read_community::read_community, + read_person::read_person, + resolve_object::resolve_object, + search::search, + }, + SendActivity, +}; +use lemmy_utils::{rate_limit::RateLimitCell, spawn_try_task, SYNCHRONOUS_FEDERATION}; use serde::Deserialize; pub fn config(cfg: &mut web::ServiceConfig, rate_limit: &RateLimitCell) { @@ -124,12 +127,12 @@ pub fn config(cfg: &mut web::ServiceConfig, rate_limit: &RateLimitCell) { .service( web::resource("/search") .wrap(rate_limit.search()) - .route(web::get().to(route_get_apub::)), + .route(web::get().to(search)), ) .service( web::resource("/resolve_object") .wrap(rate_limit.message()) - .route(web::get().to(route_get_apub::)), + .route(web::get().to(resolve_object)), ) // Community .service( @@ -141,7 +144,7 @@ pub fn config(cfg: &mut web::ServiceConfig, rate_limit: &RateLimitCell) { .service( web::scope("/community") .wrap(rate_limit.message()) - .route("", web::get().to(route_get_apub::)) + .route("", web::get().to(read_community)) .route("", web::put().to(route_post_crud::)) .route("/hide", web::put().to(route_post::)) .route("/list", web::get().to(route_get_crud::)) @@ -171,7 +174,7 @@ pub fn config(cfg: &mut web::ServiceConfig, rate_limit: &RateLimitCell) { web::resource("/post") .guard(guard::Post()) .wrap(rate_limit.post()) - .route(web::post().to(route_post_crud::)), + .route(web::post().to(create_post)), ) .service( web::scope("/post") @@ -186,7 +189,7 @@ pub fn config(cfg: &mut web::ServiceConfig, rate_limit: &RateLimitCell) { ) .route("/lock", web::post().to(route_post::)) .route("/feature", web::post().to(route_post::)) - .route("/list", web::get().to(route_get_apub::)) + .route("/list", web::get().to(list_posts)) .route("/like", web::post().to(route_post::)) .route("/save", web::put().to(route_post::)) .route("/report", web::post().to(route_post::)) @@ -225,7 +228,7 @@ pub fn config(cfg: &mut web::ServiceConfig, rate_limit: &RateLimitCell) { ) .route("/like", web::post().to(route_post::)) .route("/save", web::put().to(route_post::)) - .route("/list", web::get().to(route_get_apub::)) + .route("/list", web::get().to(list_comments)) .route("/report", web::post().to(route_post::)) .route( "/report/resolve", @@ -283,7 +286,7 @@ pub fn config(cfg: &mut web::ServiceConfig, rate_limit: &RateLimitCell) { .service( web::scope("/user") .wrap(rate_limit.message()) - .route("", web::get().to(route_get_apub::)) + .route("", web::get().to(read_person)) .route("/mention", web::get().to(route_get::)) .route( "/mention/mark_as_read", @@ -378,8 +381,14 @@ where + 'static, { let res = data.perform(&context).await?; - SendActivity::send_activity(&data, &res, &apub_data).await?; - Ok(HttpResponse::Ok().json(res)) + let res_clone = res.clone(); + let fed_task = async move { SendActivity::send_activity(&data, &res_clone, &apub_data).await }; + if *SYNCHRONOUS_FEDERATION { + fed_task.await?; + } else { + spawn_try_task(fed_task); + } + Ok(HttpResponse::Ok().json(&res)) } async fn route_get<'a, Data>( @@ -398,23 +407,6 @@ where perform::(data.0, context, apub_data).await } -async fn route_get_apub<'a, Data>( - data: web::Query, - context: activitypub_federation::config::Data, -) -> Result -where - Data: PerformApub - + SendActivity::Response> - + Clone - + Deserialize<'a> - + Send - + 'static, -{ - let res = data.perform(&context).await?; - SendActivity::send_activity(&data.0, &res, &context).await?; - Ok(HttpResponse::Ok().json(res)) -} - async fn route_post<'a, Data>( data: web::Json, context: web::Data, @@ -445,8 +437,14 @@ where + 'static, { let res = data.perform(&context).await?; - SendActivity::send_activity(&data, &res, &apub_data).await?; - Ok(HttpResponse::Ok().json(res)) + let res_clone = res.clone(); + let fed_task = async move { SendActivity::send_activity(&data, &res_clone, &apub_data).await }; + if *SYNCHRONOUS_FEDERATION { + fed_task.await?; + } else { + spawn_try_task(fed_task); + } + Ok(HttpResponse::Ok().json(&res)) } async fn route_get_crud<'a, Data>(