blob: 7818ac1504bdc2bbc07c4d1846c3dd19bff81666 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
use mime::Mime;
use unix_path::Path;
// Extremely manual; using `std::path` here would result in platform-dependent
// behaviour when it's not appropriate (the URLs passed here always use `/` and
// are parsed like URLs). Using `unix_path` might be an option, but it's not
// clearly
pub fn from_path<P>(path: P) -> Result<Mime, mime::FromStrError>
where
P: AsRef<Path>,
{
let path = path.as_ref();
let extension = path.extension().and_then(|ext| ext.to_str());
let mime = match extension {
Some("css") => "text/css; charset=utf-8",
Some("js") => "text/javascript; charset=utf-8",
Some("json") => "application/json",
Some("html") => "text/html; charset=utf-8",
Some("png") => "image/png",
_ => "application/octet-stream",
};
let mime = mime.parse()?;
Ok(mime)
}
|