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 26 27 28 29 30 31 32 33 34 35 36 37 38 39
use crate::Header;
/// Common MIME types.
#[derive(Debug, PartialEq, Eq)]
pub enum Content<'a> {
/// HTML - `text/html`
HTML,
/// TXT - `text/plain`
TXT,
/// CSV - `text/csv`
CSV,
/// JSON - `application/json`
JSON,
/// XML - `application/xml`
XML,
/// Custom Content Type
Custom(&'a str),
}
impl Content<'_> {
/// Get Content as a MIME Type
pub fn as_type(&self) -> &str {
match self {
Content::HTML => "text/html",
Content::TXT => "text/plain",
Content::CSV => "text/csv",
Content::JSON => "application/json",
Content::XML => "application/xml",
Content::Custom(i) => i,
}
}
}
impl From<Content<'_>> for Header {
// Convert Content to a Content-Type Header
fn from(x: Content<'_>) -> Self {
Header::new("Content-Type", format!("{}; charset=utf-8", x.as_type()))
}
}