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,
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,
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));
}
}