1use crate::MimeFormat;
2use std::fmt::{self, Display, Formatter};
3
4#[derive(Debug, Clone, PartialEq, Eq)]
8pub enum Book {
9 Epub,
11 Mobi,
13}
14
15impl Display for Book {
16 fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
17 let mime_str = match self {
18 Book::Epub => "application/epub+zip",
19 Book::Mobi => "application/x-mobipocket-ebook",
20 };
21 write!(f, "{}", mime_str)
22 }
23}
24
25impl MimeFormat for Book {
26 fn from_ext(ext: &str) -> Option<crate::MimeType> {
27 match ext {
28 "epub" => Some(crate::MimeType::Book(Book::Epub)),
29 "mobi" => Some(crate::MimeType::Book(Book::Mobi)),
30 _ => None,
31 }
32 }
33
34 fn from_mime(mime: &str) -> Option<crate::MimeType> {
35 match mime {
36 "application/epub+zip" => Some(crate::MimeType::Book(Book::Epub)),
37 "application/x-mobipocket-ebook" => Some(crate::MimeType::Book(Book::Mobi)),
38 _ => None,
39 }
40 }
41}