onenote_parser/one/property/
file_type.rs1use crate::errors::{ErrorKind, Result};
2use crate::one::property::PropertyType;
3use crate::onestore::object::Object;
4
5#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug)]
11pub enum FileType {
12 Unknown,
14
15 Audio,
17
18 Video,
20}
21
22impl FileType {
23 pub(crate) fn parse(object: &Object) -> Result<FileType> {
24 let value = match object.props().get(PropertyType::IRecordMedia) {
25 Some(value) => value.to_u32().ok_or_else(|| {
26 ErrorKind::MalformedOneNoteFileData("file type status is not a u32".into())
27 })?,
28 None => return Ok(FileType::Unknown),
29 };
30
31 let file_type = match value {
32 1 => FileType::Audio,
33 2 => FileType::Video,
34 _ => {
35 return Err(ErrorKind::MalformedOneNoteFileData(
36 format!("invalid file type: {}", value).into(),
37 )
38 .into())
39 }
40 };
41
42 Ok(file_type)
43 }
44}