use serde::Deserialize;
#[derive(Debug, Clone, Deserialize)]
pub struct ServerConfig {
#[serde(default = "default_host")]
pub host: String,
#[serde(default = "default_port")]
pub port: u16,
#[serde(default = "default_auth_base_path")]
pub auth_base_path: String,
pub frontend_url: Option<String>,
pub sso_callback_url: Option<String>,
pub bootstrap_admin_email: Option<String>,
#[serde(default)]
pub trust_proxy: bool,
}
pub fn default_host() -> String {
"0.0.0.0".to_string()
}
pub fn default_port() -> u16 {
8080
}
pub fn default_auth_base_path() -> String {
"/auth".to_string()
}
impl Default for ServerConfig {
fn default() -> Self {
Self {
host: default_host(),
port: default_port(),
auth_base_path: default_auth_base_path(),
frontend_url: None,
sso_callback_url: None,
bootstrap_admin_email: None,
trust_proxy: false,
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_server_config_defaults() {
let config = ServerConfig::default();
assert_eq!(config.host, "0.0.0.0");
assert_eq!(config.port, 8080);
assert_eq!(config.auth_base_path, "/auth");
assert!(config.sso_callback_url.is_none());
}
}