pub struct Infer { /* private fields */ }
Expand description
Infer allows to use a custom set of Matcher
s for infering a MIME type.
Most operations can be done by using the top level functions, but when custom matchers
are needed every call has to go through the Infer
struct to be able
to see the custom matchers.
Implementations§
source§impl Infer
impl Infer
sourcepub fn get(&self, buf: &[u8]) -> Option<Type>
pub fn get(&self, buf: &[u8]) -> Option<Type>
Returns the file type of the buffer.
Examples
let info = infer::Infer::new();
let buf = [0xFF, 0xD8, 0xFF, 0xAA];
let kind = info.get(&buf).expect("file type is known");
assert_eq!(kind.mime_type(), "image/jpeg");
assert_eq!(kind.extension(), "jpg");
sourcepub fn is_supported(&self, extension: &str) -> bool
pub fn is_supported(&self, extension: &str) -> bool
sourcepub fn is_mime_supported(&self, mime_type: &str) -> bool
pub fn is_mime_supported(&self, mime_type: &str) -> bool
sourcepub fn is_archive(&self, buf: &[u8]) -> bool
pub fn is_archive(&self, buf: &[u8]) -> bool
sourcepub fn is_document(&self, buf: &[u8]) -> bool
pub fn is_document(&self, buf: &[u8]) -> bool
sourcepub fn is_custom(&self, buf: &[u8]) -> bool
pub fn is_custom(&self, buf: &[u8]) -> bool
Determines whether a buffer is one of the custom types added.
Examples
fn custom_matcher(buf: &[u8]) -> bool {
return buf.len() >= 3 && buf[0] == 0x10 && buf[1] == 0x11 && buf[2] == 0x12;
}
let mut info = infer::Infer::new();
info.add("custom/foo", "foo", custom_matcher);
let buf = [0x10, 0x11, 0x12, 0x13];
assert!(info.is_custom(&buf));
sourcepub fn add(&mut self, mime_type: &'static str, extension: &'static str, m: Matcher)
pub fn add(&mut self, mime_type: &'static str, extension: &'static str, m: Matcher)
Adds a custom matcher.
Custom matchers are matched in order of addition and before the default set of matchers.
Examples
fn custom_matcher(buf: &[u8]) -> bool {
return buf.len() >= 3 && buf[0] == 0x10 && buf[1] == 0x11 && buf[2] == 0x12;
}
let mut info = infer::Infer::new();
info.add("custom/foo", "foo", custom_matcher);
let buf = [0x10, 0x11, 0x12, 0x13];
let kind = info.get(&buf).expect("file type is known");
assert_eq!(kind.mime_type(), "custom/foo");
assert_eq!(kind.extension(), "foo");