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;