diff options
author | Felix Ableitner <me@nutomic.com> | 2020-01-02 19:22:23 +0100 |
---|---|---|
committer | Felix Ableitner <me@nutomic.com> | 2020-01-02 19:22:23 +0100 |
commit | e09a035373db224a17631146af1a7c9a357d2056 (patch) | |
tree | 3420095c0b0d368abc8628f76f4ce911c1f82446 /server/src/routes/federation.rs | |
parent | 581f36d6eff4e79139afd5049b4efb8b0ccc6e99 (diff) | |
parent | 576980bf64fcde5ec66e0260c81ef3225dd264bd (diff) |
Merge branch 'master' into federation
Diffstat (limited to 'server/src/routes/federation.rs')
-rw-r--r-- | server/src/routes/federation.rs | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/server/src/routes/federation.rs b/server/src/routes/federation.rs new file mode 100644 index 00000000..019a9a71 --- /dev/null +++ b/server/src/routes/federation.rs @@ -0,0 +1,38 @@ +use crate::api::community::ListCommunities; +use crate::api::Perform; +use crate::api::{Oper, UserOperation}; +use crate::apub; +use crate::settings::Settings; +use actix_web::web::Query; +use actix_web::{web, HttpResponse}; + +pub fn config(cfg: &mut web::ServiceConfig) { + if Settings::get().federation_enabled { + println!("federation enabled, host is {}", Settings::get().hostname); + cfg + .route( + "/federation/c/{community_name}", + web::get().to(apub::community::get_apub_community), + ) + .route( + "/federation/c/{community_name}/followers", + web::get().to(apub::community::get_apub_community_followers), + ) + .route( + "/federation/u/{user_name}", + web::get().to(apub::user::get_apub_user), + ) + // TODO: this is a very quick and dirty implementation for http api calls + .route( + "/api/v1/communities/list", + web::get().to(|query: Query<ListCommunities>| { + let res = Oper::new(UserOperation::ListCommunities, query.into_inner()) + .perform() + .unwrap(); + HttpResponse::Ok() + .content_type("application/json") + .body(serde_json::to_string(&res).unwrap()) + }), + ); + } +} |