summaryrefslogtreecommitdiffstats
path: root/server/src/routes/federation.rs
blob: ebab139a7951d2ba607a4758fe11b12dfd2bf6fd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
use crate::apub::{
  comment::get_apub_comment,
  community::*,
  community_inbox::community_inbox,
  post::get_apub_post,
  shared_inbox::shared_inbox,
  user::*,
  user_inbox::user_inbox,
  APUB_JSON_CONTENT_TYPE,
};
use actix_web::*;
use lemmy_utils::settings::Settings;

pub fn config(cfg: &mut web::ServiceConfig) {
  if Settings::get().federation.enabled {
    println!("federation enabled, host is {}", Settings::get().hostname);
    cfg
      .service(
        web::scope("/")
          .guard(guard::Header("Accept", APUB_JSON_CONTENT_TYPE))
          .route(
            "/c/{community_name}",
            web::get().to(get_apub_community_http),
          )
          .route(
            "/c/{community_name}/followers",
            web::get().to(get_apub_community_followers),
          )
          // TODO This is only useful for history which we aren't doing right now
          // .route(
          //   "/c/{community_name}/outbox",
          //   web::get().to(get_apub_community_outbox),
          // )
          .route("/u/{user_name}", web::get().to(get_apub_user_http))
          .route("/post/{post_id}", web::get().to(get_apub_post))
          .route("/comment/{comment_id}", web::get().to(get_apub_comment)),
      )
      // Inboxes dont work with the header guard for some reason.
      .route("/c/{community_name}/inbox", web::post().to(community_inbox))
      .route("/u/{user_name}/inbox", web::post().to(user_inbox))
      .route("/inbox", web::post().to(shared_inbox));
  }
}