Skip to main content

o_sfu/runtime/
options.rs

1use crate::config::{
2    AuthConfig, Config, DiagnosticsConfig, HttpConfig, RuntimeFeatureFlags, UserConfig,
3};
4
5#[derive(Debug, Clone, PartialEq, Eq)]
6pub(crate) struct RuntimeConfig {
7    pub(crate) auth: AuthConfig,
8    pub(crate) http: HttpConfig,
9    pub(crate) user: UserConfig,
10    pub(crate) diagnostics: DiagnosticsConfig,
11}
12
13impl RuntimeConfig {
14    #[must_use]
15    pub(crate) fn from_config(config: &Config) -> Self {
16        Self {
17            auth: config.auth.clone(),
18            http: config.http.clone(),
19            user: config.user,
20            diagnostics: config.diagnostics.clone(),
21        }
22    }
23}
24
25pub(crate) const fn effective_feature_flags(features: RuntimeFeatureFlags) -> RuntimeFeatureFlags {
26    RuntimeFeatureFlags {
27        transcription: features.transcription
28            && (features.audio_recording || features.video_recording),
29        audio_recording: features.audio_recording,
30        video_recording: features.video_recording,
31    }
32}
33
34#[cfg(test)]
35#[path = "TESTS/options.rs"]
36mod tests;