aboutsummaryrefslogtreecommitdiffstats
path: root/src/server/state/federation.rs
diff options
context:
space:
mode:
authorrtkay123 <dev@kanjala.com>2026-02-02 13:05:49 +0200
committerrtkay123 <dev@kanjala.com>2026-02-02 13:05:49 +0200
commite06094f23ca861ea5ae4864d11fa8ce8b7d7aa2c (patch)
tree27bbff5fd21711f99aaf579a76b1a0aca7869003 /src/server/state/federation.rs
parent78f61ccdf66572d7432b5b627994038479103653 (diff)
downloadsellershut-e06094f23ca861ea5ae4864d11fa8ce8b7d7aa2c.tar.bz2
sellershut-e06094f23ca861ea5ae4864d11fa8ce8b7d7aa2c.zip
feat: oauth route
Diffstat (limited to 'src/server/state/federation.rs')
-rw-r--r--src/server/state/federation.rs65
1 files changed, 65 insertions, 0 deletions
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<FederationConfig<AppState>> {
+ 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)
+}