use mime_guess for guessing mime
This commit is contained in:
parent
ddf9c4b9f8
commit
5a92d8d28f
|
@ -21,6 +21,7 @@ itertools = "0.9.0"
|
|||
log = "0.4.11"
|
||||
webpki = "0.21.0"
|
||||
lazy_static = "1.4.0"
|
||||
mime_guess = "2.0.3"
|
||||
|
||||
[dev-dependencies]
|
||||
env_logger = "0.8.1"
|
||||
|
|
19
src/util.rs
19
src/util.rs
|
@ -5,7 +5,6 @@ use tokio::{
|
|||
fs::{self, File},
|
||||
io,
|
||||
};
|
||||
use crate::GEMINI_MIME_STR;
|
||||
use crate::types::{Response, Document, document::HeadingLevel::*};
|
||||
use itertools::Itertools;
|
||||
|
||||
|
@ -89,18 +88,16 @@ async fn serve_dir_listing<P: AsRef<Path>, B: AsRef<Path>>(path: P, virtual_path
|
|||
pub fn guess_mime_from_path<P: AsRef<Path>>(path: P) -> Mime {
|
||||
let path = path.as_ref();
|
||||
let extension = path.extension().and_then(|s| s.to_str());
|
||||
let mime = match extension {
|
||||
Some(extension) => match extension {
|
||||
"gemini" | "gmi" => GEMINI_MIME_STR,
|
||||
"txt" => "text/plain",
|
||||
"jpeg" | "jpg" | "jpe" => "image/jpeg",
|
||||
"png" => "image/png",
|
||||
_ => "application/octet-stream",
|
||||
},
|
||||
None => "application/octet-stream",
|
||||
let extension = match extension {
|
||||
Some(extension) => extension,
|
||||
None => return mime::APPLICATION_OCTET_STREAM,
|
||||
};
|
||||
|
||||
mime.parse::<Mime>().unwrap_or(mime::APPLICATION_OCTET_STREAM)
|
||||
if let "gemini" | "gmi" = extension {
|
||||
return crate::GEMINI_MIME.clone();
|
||||
}
|
||||
|
||||
mime_guess::from_ext(extension).first_or_octet_stream()
|
||||
}
|
||||
|
||||
/// A convenience trait alias for `AsRef<T> + Into<T::Owned>`,
|
||||
|
|
Loading…
Reference in a new issue