summaryrefslogtreecommitdiffstats
path: root/server/src/routes/federation.rs
diff options
context:
space:
mode:
authorFelix Ableitner <me@nutomic.com>2020-01-02 19:22:23 +0100
committerFelix Ableitner <me@nutomic.com>2020-01-02 19:22:23 +0100
commite09a035373db224a17631146af1a7c9a357d2056 (patch)
tree3420095c0b0d368abc8628f76f4ce911c1f82446 /server/src/routes/federation.rs
parent581f36d6eff4e79139afd5049b4efb8b0ccc6e99 (diff)
parent576980bf64fcde5ec66e0260c81ef3225dd264bd (diff)
Merge branch 'master' into federation
Diffstat (limited to 'server/src/routes/federation.rs')
-rw-r--r--server/src/routes/federation.rs38
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())
+ }),
+ );
+ }
+}