mirror of https://github.com/rwf2/Rocket.git
Move extension derived content type into ContentType.
This commit is contained in:
parent
cd4af6836a
commit
b175de03ad
|
@ -51,6 +51,26 @@ impl ContentType {
|
|||
is_some!(is_html: Application/Html);
|
||||
is_some!(is_form: Application/WwwFormUrlEncoded);
|
||||
is_some!(is_data: Multipart/FormData);
|
||||
|
||||
pub fn from_extension(ext: &str) -> ContentType {
|
||||
let (top_level, sub_level) = match ext {
|
||||
"txt" => (TopLevel::Text, SubLevel::Plain),
|
||||
"html" => (TopLevel::Text, SubLevel::Html),
|
||||
"xml" => (TopLevel::Application, SubLevel::Xml),
|
||||
"js" => (TopLevel::Application, SubLevel::Javascript),
|
||||
"css" => (TopLevel::Text, SubLevel::Css),
|
||||
"json" => (TopLevel::Application, SubLevel::Json),
|
||||
"png" => (TopLevel::Image, SubLevel::Png),
|
||||
"gif" => (TopLevel::Image, SubLevel::Gif),
|
||||
"bmp" => (TopLevel::Image, SubLevel::Bmp),
|
||||
"jpeg" => (TopLevel::Image, SubLevel::Jpeg),
|
||||
"jpg" => (TopLevel::Image, SubLevel::Jpeg),
|
||||
"pdf" => (TopLevel::Application, SubLevel::Ext("pdf".into())),
|
||||
_ => (TopLevel::Star, SubLevel::Star),
|
||||
};
|
||||
|
||||
ContentType::of(top_level, sub_level)
|
||||
}
|
||||
}
|
||||
|
||||
impl Default for ContentType {
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
use response::*;
|
||||
use content_type::ContentType;
|
||||
use std::fs::File;
|
||||
use std::path::{Path, PathBuf};
|
||||
use response::mime::{Mime, TopLevel, SubLevel};
|
||||
use std::io;
|
||||
use std::ops::{Deref, DerefMut};
|
||||
|
||||
|
@ -23,24 +23,9 @@ impl Responder for NamedFile {
|
|||
fn respond<'a>(&mut self, mut res: FreshHyperResponse<'a>) -> Outcome<'a> {
|
||||
if let Some(ext) = self.path().extension() {
|
||||
let ext_string = ext.to_string_lossy().to_lowercase();
|
||||
let (top_level, sub_level) = match ext_string.as_str() {
|
||||
"txt" => (TopLevel::Text, SubLevel::Plain),
|
||||
"html" => (TopLevel::Text, SubLevel::Html),
|
||||
"xml" => (TopLevel::Application, SubLevel::Xml),
|
||||
"js" => (TopLevel::Application, SubLevel::Javascript),
|
||||
"css" => (TopLevel::Text, SubLevel::Css),
|
||||
"json" => (TopLevel::Application, SubLevel::Json),
|
||||
"png" => (TopLevel::Image, SubLevel::Png),
|
||||
"gif" => (TopLevel::Image, SubLevel::Gif),
|
||||
"bmp" => (TopLevel::Image, SubLevel::Bmp),
|
||||
"jpeg" => (TopLevel::Image, SubLevel::Jpeg),
|
||||
"jpg" => (TopLevel::Image, SubLevel::Jpeg),
|
||||
_ => (TopLevel::Star, SubLevel::Star),
|
||||
};
|
||||
|
||||
if top_level != TopLevel::Star && sub_level != SubLevel::Star {
|
||||
let mime = Mime(top_level, sub_level, vec![]);
|
||||
res.headers_mut().set(header::ContentType(mime));
|
||||
let content_type = ContentType::from_extension(&ext_string);
|
||||
if !content_type.is_any() {
|
||||
res.headers_mut().set(header::ContentType(content_type.into()));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue