use std::net::{IpAddr, Ipv4Addr};
use conference::Conference;
use defaults::Defaults;
use http::Http;
use telemetry::{Metrics, Monitoring, Tracing};
use super::{settings_file::SettingsFile, signaling_salt::SignalingSalt};
pub mod conference;
pub mod defaults;
pub mod http;
pub mod telemetry;
#[derive(Debug, Clone)]
pub struct Settings {
pub http: Http,
pub monitoring: Option<Monitoring>,
pub metrics: Option<Metrics>,
pub tracing: Option<Tracing>,
pub conference: Conference,
pub defaults: Option<Defaults>,
}
impl Settings {
pub fn test_settings(api_token: String) -> Settings {
Settings {
http: Http {
address: IpAddr::V4(Ipv4Addr::new(0, 0, 0, 0)),
port: 11333,
api_token,
disable_openapi: false,
},
monitoring: None,
metrics: None,
tracing: None,
conference: Conference {
signaling_salt: SignalingSalt("abcdefghijklmnopqrstuvwx".into()),
},
defaults: None,
}
}
}
impl From<SettingsFile> for Settings {
fn from(value: SettingsFile) -> Self {
Settings {
http: value.http.into(),
monitoring: value.monitoring.map(Into::into),
metrics: value.metrics.map(Into::into),
tracing: value.tracing.map(Into::into),
conference: value.conference.into(),
defaults: value.defaults.map(Into::into),
}
}
}