diff --git a/src/lib.rs b/src/lib.rs index b93cf3f..42df240 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -2,6 +2,52 @@ pub fn add(left: u64, right: u64) -> u64 { left + right } +mod meta_type { + pub enum Type { + Title, + Artist, + Album, + Genre, + Year, + Track, + } +} + +mod meta { + use super::*; + use taglib; + + pub fn get_meta(t: meta_type::Type, filepath: &String) -> Result { + match t { + meta_type::Type::Title => { + match get_file(filepath) { + Ok(file) => { + match get_tag(&file) { + Ok(tag) => { + match tag.title() { + Some(title) => Ok(title), + None => Err(taglib::FileError::NoAvailableTag) + } + } + Err(err) => Err(err) + } + } + Err(err) => Err(err) + } + } + _ => Err(taglib::FileError::InvalidFile), + } + } + + fn get_file(filepath: &String) -> Result { + taglib::File::new(filepath) + } + + fn get_tag(tag: &taglib::File) -> Result { + tag.tag() + } +} + #[cfg(test)] mod tests { use super::*;