From 951128032bfdf7f8d74f4098cb41a511d2bc8b19 Mon Sep 17 00:00:00 2001 From: Zomatree Date: Mon, 17 Feb 2025 01:48:34 +0000 Subject: [PATCH] fix: expose list of nodes --- crates/delta/src/routes/root.rs | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/crates/delta/src/routes/root.rs b/crates/delta/src/routes/root.rs index d928a8aa..6b42497c 100644 --- a/crates/delta/src/routes/root.rs +++ b/crates/delta/src/routes/root.rs @@ -21,11 +21,22 @@ pub struct Feature { pub url: String, } +/// # Information about a livekit node +#[derive(Serialize, JsonSchema, Debug)] +pub struct VoiceNode { + pub name: String, + pub lat: f64, + pub lon: f64, + pub public_url: String +} + /// # Voice Server Configuration #[derive(Serialize, JsonSchema, Debug)] pub struct VoiceFeature { /// Whether voice is enabled - pub enabled: bool + pub enabled: bool, + /// All livekit nodes + pub nodes: Vec, } /// # Feature Configuration @@ -90,20 +101,29 @@ pub async fn root() -> Result> { features: RevoltFeatures { captcha: CaptchaFeature { enabled: !config.api.security.captcha.hcaptcha_key.is_empty(), - key: config.api.security.captcha.hcaptcha_sitekey, + key: config.api.security.captcha.hcaptcha_sitekey.clone(), }, email: !config.api.smtp.host.is_empty(), invite_only: config.api.registration.invite_only, autumn: Feature { enabled: !config.hosts.autumn.is_empty(), - url: config.hosts.autumn, + url: config.hosts.autumn.clone(), }, january: Feature { enabled: !config.hosts.january.is_empty(), - url: config.hosts.january, + url: config.hosts.january.clone(), }, livekit: VoiceFeature { - enabled: !config.hosts.livekit.is_empty() + enabled: !config.hosts.livekit.is_empty(), + nodes: config.api.livekit.nodes.iter().map(|(name, value)| { + VoiceNode { + name: name.clone(), + lat: value.lat, + lon: value.lon, + public_url: config.hosts.livekit.get(name).expect("Missing corresponding host for voice node").clone() + } + }) + .collect() }, }, ws: config.hosts.events,