credence_lib/configuration/
encoding.rs

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