Files
baibot-withmcp/src/utils/mime.rs

47 lines
1.8 KiB
Rust
Raw Normal View History

use mxlink::mime;
pub fn get_file_extension(mime_type: &mime::Mime) -> String {
match (mime_type.type_(), mime_type.subtype()) {
(mime::AUDIO, mime::BASIC) => "au",
(mime::AUDIO, mime::MPEG) => "mp3",
(mime::AUDIO, mime::MP4) => "m4a",
(mime::AUDIO, mime::OGG) => "ogg",
(mime::IMAGE, mime::BMP) => "bmp",
(mime::IMAGE, mime::GIF) => "gif",
(mime::IMAGE, mime::JPEG) => "jpg",
(mime::IMAGE, mime::PNG) => "png",
(mime::IMAGE, mime::SVG) => "svg",
_ => "bin",
}
.to_string()
}
pub fn get_mime_type_from_file_name(file_name: &str) -> mime::Mime {
let extension = file_name.rsplit('.').next().unwrap_or("");
match extension.to_lowercase().as_str() {
"jpg" | "jpeg" => mime::IMAGE_JPEG,
"png" => mime::IMAGE_PNG,
"gif" => mime::IMAGE_GIF,
"webp" => "image/webp".parse().unwrap(),
"svg" => mime::IMAGE_SVG,
"tiff" | "tif" => "image/tiff".parse().unwrap(),
"bmp" => "image/bmp".parse().unwrap(),
"heic" | "heif" => "image/heic".parse().unwrap(),
"avif" => "image/avif".parse().unwrap(),
"pdf" => "application/pdf".parse().unwrap(),
"txt" | "log" => mime::TEXT_PLAIN,
"csv" => mime::TEXT_CSV,
"json" => mime::APPLICATION_JSON,
"xml" => "application/xml".parse().unwrap(),
"html" | "htm" => mime::TEXT_HTML,
"md" | "markdown" => "text/markdown".parse().unwrap(),
"yaml" | "yml" => "application/yaml".parse().unwrap(),
"toml" => "application/toml".parse().unwrap(),
"rs" | "py" | "js" | "ts" | "go" | "c" | "cpp" | "h" | "java" | "rb" | "sh" | "css" => {
mime::TEXT_PLAIN
}
_ => mime::APPLICATION_OCTET_STREAM,
}
}