]> Untitled Git - lemmy.git/commitdiff
Change apub IDs to be consistent with html urls
authorFelix <me@nutomic.com>
Tue, 21 Apr 2020 20:45:01 +0000 (22:45 +0200)
committerFelix <me@nutomic.com>
Tue, 21 Apr 2020 20:45:01 +0000 (22:45 +0200)
server/src/apub/fetcher.rs
server/src/apub/mod.rs
server/src/routes/federation.rs

index 71453a2a493954d9b3cb22c24816e0a7ca7439f0..ed98434b453314f31c8f688b82d54b3bd7eec6c9 100644 (file)
@@ -73,7 +73,7 @@ where
   // TODO: this function should return a future
   let timeout = Duration::from_secs(60);
   let text = Request::get(url.as_str())
-    .header("Accept", APUB_JSON_CONTENT_TYPE)
+    .header("Content-Type", APUB_JSON_CONTENT_TYPE)
     .connect_timeout(timeout)
     .timeout(timeout)
     .body(())?
index 8d5df8a8b5c93b64aa6d1340f7cba62a91d8dcbf..846458977e50aa807a220cd15c4975bb7ecab1da 100644 (file)
@@ -18,7 +18,7 @@ use url::Url;
 type GroupExt = Ext<Ext<Group, ApActorProperties>, PublicKeyExtension>;
 type PersonExt = Ext<Ext<Person, ApActorProperties>, PublicKeyExtension>;
 
-static APUB_JSON_CONTENT_TYPE: &str = "application/activity+json";
+pub static APUB_JSON_CONTENT_TYPE: &str = "application/activity+json";
 
 pub enum EndpointType {
   Community,
@@ -47,14 +47,14 @@ pub fn make_apub_endpoint(endpoint_type: EndpointType, name: &str) -> Url {
   let point = match endpoint_type {
     EndpointType::Community => "c",
     EndpointType::User => "u",
-    EndpointType::Post => "p",
+    EndpointType::Post => "post",
     // TODO I have to change this else my update advanced_migrations crashes the
     // server if a comment exists.
     EndpointType::Comment => "comment",
   };
 
   Url::parse(&format!(
-    "{}://{}/federation/{}/{}",
+    "{}://{}/{}/{}",
     get_apub_protocol_string(),
     Settings::get().hostname,
     point,
index bde4a2d0ced2889ed8b11c30fd18270b125f2119..3a14cbc2ea6b2536f31404ef0181f482e5a60540 100644 (file)
@@ -1,38 +1,35 @@
 use super::*;
-use crate::apub;
+use crate::apub::community::*;
+use crate::apub::community_inbox::community_inbox;
+use crate::apub::post::get_apub_post;
+use crate::apub::user::*;
+use crate::apub::user_inbox::user_inbox;
+use crate::apub::APUB_JSON_CONTENT_TYPE;
 
 pub fn config(cfg: &mut web::ServiceConfig) {
   if Settings::get().federation.enabled {
     println!("federation enabled, host is {}", Settings::get().hostname);
     cfg
-      // TODO: check the user/community params for these
-      .route(
-        "/federation/c/{community_name}/inbox",
-        web::post().to(apub::community_inbox::community_inbox),
+      .service(
+        web::scope("/")
+          .guard(guard::Header("Content-Type", 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),
+          )
+          .route(
+            "/c/{community_name}/outbox",
+            web::get().to(get_apub_community_outbox),
+          )
+          .route("/u/{user_name}", web::get().to(get_apub_user))
+          .route("/post/{post_id}", web::get().to(get_apub_post)),
       )
-      .route(
-        "/federation/u/{user_name}/inbox",
-        web::post().to(apub::user_inbox::user_inbox),
-      )
-      .route(
-        "/federation/c/{community_name}",
-        web::get().to(apub::community::get_apub_community_http),
-      )
-      .route(
-        "/federation/c/{community_name}/followers",
-        web::get().to(apub::community::get_apub_community_followers),
-      )
-      .route(
-        "/federation/c/{community_name}/outbox",
-        web::get().to(apub::community::get_apub_community_outbox),
-      )
-      .route(
-        "/federation/u/{user_name}",
-        web::get().to(apub::user::get_apub_user),
-      )
-      .route(
-        "/federation/p/{post_id}",
-        web::get().to(apub::post::get_apub_post),
-      );
+      // 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));
   }
 }