From e06094f23ca861ea5ae4864d11fa8ce8b7d7aa2c Mon Sep 17 00:00:00 2001 From: rtkay123 Date: Mon, 2 Feb 2026 13:05:49 +0200 Subject: feat: oauth route --- src/server/state/federation.rs | 65 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 src/server/state/federation.rs (limited to 'src/server/state/federation.rs') diff --git a/src/server/state/federation.rs b/src/server/state/federation.rs new file mode 100644 index 0000000..083741c --- /dev/null +++ b/src/server/state/federation.rs @@ -0,0 +1,65 @@ +use activitypub_federation::config::FederationConfig; +use url::Url; + +use crate::{ + config::{Config, Environment}, + server::state::AppState, +}; + +pub async fn add_federation( + state: AppState, + config: &Config, +) -> anyhow::Result> { + let url = match config.server.environment { + Environment::Dev => { + format!("http://{}", config.server.domain) + } + Environment::Prod => { + format!("https://{}", config.server.domain) + } + }; + let mut url = Url::parse(&url)?; + + if Environment::Dev == config.server.environment { + let _ = url.set_port(Some(config.server.port)); + } + + let mut ap_id = url.clone(); + + { + let mut ps = ap_id.path_segments_mut().expect("path segments in url"); + ps.push("users"); + ps.push(&config.server.system_name); + } + + // let user = if let Some(user) = state.users_service.get_by_ap_id(ap_id.as_str()).await? { + // user + // } else { + // let mut inbox = ap_id.clone(); + // { + // let mut ps = inbox.path_segments_mut().expect("path segments in url"); + // ps.push("inbox"); + // } + // state + // .users_service + // .create_user( + // &ap_id, + // &config.server.system_name, + // PersonType::Service, + // &inbox, + // true, + // ) + // .await? + // }; + // + // let user = User::from(user); + + let config = FederationConfig::builder() + .domain(url.domain().expect("system domain")) + //.signed_fetch_actor(&user) + .app_data(state) + .build() + .await?; + + Ok(config) +} -- cgit v1.2.3