mirror of
https://github.com/LemmyNet/lemmy
synced 2024-12-11 21:52:29 +00:00
Merge branch 'federation' of https://yerbamate.dev/LemmyNet/lemmy into federation
This commit is contained in:
commit
92e30311ce
3 changed files with 30 additions and 33 deletions
|
@ -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(())?
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue