kodumaro-http-cli 0.5.5

Kodumaro HTTP CLI inspired by HTTPie
Documentation
use std::path::Path;

pub fn extension_from_filename(filename: &str) -> Option<String> {
    Path::new(filename)
        .extension()
        .and_then(|ext| ext.to_str())
        .map(|ext| format!(".{}", ext))
}

pub fn extension_from_mime(mime: &str) -> &'static str {
    if mime.contains("json") {
        return ".json";
    }
    if mime.contains("html") {
        return ".html";
    }
    if mime.contains("xml") {
        return ".xml";
    }
    ".txt"
}

#[cfg(test)]
mod tests {

    use super::*;

    #[test]
    fn test_extension_from_file_name_json() {
        let ext = extension_from_filename("test.json").unwrap();
        assert_eq!(".json", ext);
    }

    #[test]
    fn test_extension_from_file_name_xml() {
        let ext = extension_from_filename("test.xml").unwrap();
        assert_eq!(".xml", ext);
    }

    #[test]
    fn test_extension_from_file_name_txt() {
        let ext = extension_from_filename("test.txt").unwrap();
        assert_eq!(".txt", ext);
    }

    #[test]
    fn test_extension_from_file_name_none() {
        let ext = extension_from_filename("test");
        assert!(ext.is_none());
    }

    #[test]
    fn test_extension_from_mime_application_json() {
        let ext = extension_from_mime("application/json");
        assert_eq!(".json", ext);
    }

    #[test]
    fn test_extension_from_mime_text_json() {
        let ext = extension_from_mime("text/json");
        assert_eq!(".json", ext);
    }

    #[test]
    fn test_extension_from_mime_text_html() {
        let ext = extension_from_mime("text/html");
        assert_eq!(".html", ext);
    }

    #[test]
    fn test_extension_from_mime_application_html() {
        let ext = extension_from_mime("application/xml+html");
        assert_eq!(".html", ext);
    }

    #[test]
    fn test_extension_from_mime_application_xml() {
        let ext = extension_from_mime("application/xml");
        assert_eq!(".xml", ext);
    }

    #[test]
    fn test_extension_from_mime_text_xml() {
        let ext = extension_from_mime("text/xml");
        assert_eq!(".xml", ext);
    }

    #[test]
    fn test_extension_from_mime_text_plain() {
        let ext = extension_from_mime("text/plain");
        assert_eq!(".txt", ext);
    }
}