credence_lib/configuration/
encoding.rs

1use super::super::resolve::*;
2
3use {compris::resolve::*, kutil_cli::debug::*, kutil_http::*, kutil_std::metric::*};
4
5//
6// EncodingConfiguration
7//
8
9/// Encoding configuration.
10#[derive(Clone, Debug, Debuggable, Resolve)]
11pub struct EncodingConfiguration {
12    /// Default.
13    #[resolve]
14    #[debuggable(style(symbol))]
15    pub default: bool,
16
17    /// Skip.
18    #[resolve(key = "skip-media-types")]
19    #[debuggable(iter(item), as(display), style(symbol))]
20    pub skip_media_types: Vec<ResolveMediaType>,
21
22    /// Minimum encodable body size.
23    #[resolve(key = "min-body-size")]
24    #[debuggable(as(display), style(symbol))]
25    pub min_body_size: ResolveByteCount,
26}
27
28impl EncodingConfiguration {
29    /// Skip media types.
30    pub fn skip_media_types(&self) -> Vec<MediaType> {
31        self.skip_media_types.iter().cloned().map(|media_type| media_type.value.into()).collect()
32    }
33}
34
35impl Default for EncodingConfiguration {
36    fn default() -> Self {
37        Self {
38            default: true,
39            skip_media_types: vec![
40                MediaType::new_fostered("image", "png").into(),
41                MediaType::new_fostered("image", "gif").into(),
42                MediaType::new_fostered("image", "jpeg").into(),
43                MediaType::new_fostered("audio", "mpeg").into(),
44                MediaType::new_fostered("video", "mpeg").into(),
45            ],
46            min_body_size: ByteCount::from_kibibytes(1).into(),
47        }
48    }
49}