summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFelix <me@nutomic.com>2020-04-21 22:45:01 +0200
committerFelix <me@nutomic.com>2020-04-21 22:45:01 +0200
commit957e4a26114033b79c0c2e820a07f39fe8680f2c (patch)
tree4447def61d99db6d0702e49d34a8bc9fedca11b3
parent4e80543edbdceebbcf4a06e60ca3fc8e76d74920 (diff)
Change apub IDs to be consistent with html urls
-rw-r--r--server/src/apub/fetcher.rs2
-rw-r--r--server/src/apub/mod.rs6
-rw-r--r--server/src/routes/federation.rs55
3 files changed, 30 insertions, 33 deletions
diff --git a/server/src/apub/fetcher.rs b/server/src/apub/fetcher.rs
index 71453a2a..ed98434b 100644
--- a/server/src/apub/fetcher.rs
+++ b/server/src/apub/fetcher.rs
@@ -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(())?
diff --git a/server/src/apub/mod.rs b/server/src/apub/mod.rs
index 8d5df8a8..84645897 100644
--- a/server/src/apub/mod.rs
+++ b/server/src/apub/mod.rs
@@ -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,
diff --git a/server/src/routes/federation.rs b/server/src/routes/federation.rs
index bde4a2d0..3a14cbc2 100644
--- a/server/src/routes/federation.rs
+++ b/server/src/routes/federation.rs
@@ -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));
}
}