("text/plain;charset=utf-8", BROTLI_MODE_TEXT, Media::Text, &["txt"]), ("text/x-python", BROTLI_MODE_TEXT, Media::Code(Language::Python), &["py"]), ("video/mp4", BROTLI_MODE_GENERIC, Media::Video, &["mp4"]), ("video/webm", BROTLI_MODE_GENERIC, Media::Video, &["webm"]), ]; pub(crate) fn content_type_for_path( path: &Path, ) -> Result<(&'static str, BrotliEncoderMode), Error> { let extension = path .extension() .ok_or_else(|| anyhow!("file must have extension"))? .to_str() .ok_or_else(|| anyhow!("unrecognized extension"))?; let extension = extension.to_lowercase(); if extension == "mp4" { Media::check_mp4_codec(path)?; } for (content_type, mode, _, extensions) in Self::TABLE { if extensions.contains(&extension.as_str()) { return Ok((*content_type, *mode)); } } let mut extensions = Self::TABLE