media_info 0.6.0

A tool to extract media information from a media source.
use std::path::Path;

mod doc_info;

pub fn read_doc_creation_date(path: &Path) -> Result<String, String> {
    if !path.exists() {
        return Err(format!("File does not exist: {:?}", path));
    }

    match path.extension() {
        Some(ext) => {
            let ext = ext.to_str().unwrap();

            match ext {
                "doc" => Ok("doc".to_string()),
                "docx" => Ok("docx".to_string()),
                "pdf" => Ok("pdf".to_string()),
                "mobi" => {
                    doc_info::read_mobi_info(path);
                    return Ok("mobi".to_string());
                }
                "epub" => {
                    doc_info::read_epub_info(path);
                    return Ok("epub".to_string());
                }
                "txt" => Ok("txt".to_string()),
                "md" => Ok("md".to_string()),
                "odt" => Ok("odt".to_string()),
                "rtf" => Ok("rtf".to_string()),
                _ => {
                    return Err(format!("Unsupported file type: {:?}", path));
                }
            }
        }
        None => {
            println!("Error: {:?}", format!("File has no extension: {:?}", path));
            return Err(format!("File has no extension: {:?}", path));
        }
    }
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn can_read_doc_creation_date() {
        let raw_path_str = "../test-media/TESTDOCUMENT.docx";
        let path = Path::new(raw_path_str);
        let creation_date = read_doc_creation_date(&path);

        println!("Creation date: {:?}", creation_date.unwrap());
    }

    #[test]
    fn can_read_pdf_creation_date() {
        let raw_path_str = "../test-media/TESTDOCUMENT.pdf";
        let path = Path::new(raw_path_str);
        let creation_date = read_doc_creation_date(&path);

        println!("Creation date: {:?}", creation_date.unwrap());
    }

    #[test]
    fn can_read_epub_creation_date() {
        let raw_path_str = "../test-media/TESTDOCUMENT.epub";
        let path = Path::new(raw_path_str);
        let creation_date = read_doc_creation_date(&path);

        println!("Creation date: {:?}", creation_date.unwrap());
    }

    #[test]
    fn can_read_txt_creation_date() {
        let raw_path_str = "../test-media/TESTDOCUMENT.txt";
        let path = Path::new(raw_path_str);
        let creation_date = read_doc_creation_date(&path);

        println!("Creation date: {:?}", creation_date.unwrap());
    }

    #[test]
    fn can_read_md_creation_date() {
        let raw_path_str = "../test-media/TESTDOCUMENT.md";
        let path = Path::new(raw_path_str);
        let creation_date = read_doc_creation_date(&path);

        println!("Creation date: {:?}", creation_date.unwrap());
    }

    #[test]
    fn can_read_odt_creation_date() {
        let raw_path_str = "../test-media/TESTDOCUMENT.odt";
        let path = Path::new(raw_path_str);
        let creation_date = read_doc_creation_date(&path);

        println!("Creation date: {:?}", creation_date.unwrap());
    }

    #[test]
    fn can_read_rtf_creation_date() {
        let raw_path_str = "../test-media/TESTDOCUMENT.rtf";
        let path = Path::new(raw_path_str);
        let creation_date = read_doc_creation_date(&path);

        println!("Creation date: {:?}", creation_date.unwrap());
    }
}