("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