mediafire_rs 0.1.5

Downloads files and folders from mediafire
use crate::types::{get_content, get_info};
use reqwest::get;

const BASE_URL_GET_INFO: &str =
    "https://www.mediafire.com/api/1.5/folder/get_info.php?response_format=json&folder_key=";
const BASE_URL_GET_CONTENT: &str =
    "https://www.mediafire.com/api/1.5/folder/get_content.php?response_format=json&folder_key=";

pub async fn get_content(
    folder_key: &str,
    content_type: &str,
    chunk: u32,
) -> Result<get_content::Response, reqwest::Error> {
    return get(format!(
        "{BASE_URL_GET_CONTENT}{folder_key}&content_type={content_type}&chunk={chunk}"
    ))
    .await?
    .json::<get_content::Root>()
    .await
    .map(|root| root.response);
}

pub async fn get_info(folder_key: &str) -> Result<get_info::Response, reqwest::Error> {
    return get(format!("{BASE_URL_GET_INFO}{folder_key}"))
        .await?
        .json::<get_info::Root>()
        .await
        .map(|root| root.response);
}

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

    #[tokio::test]
    async fn test_get_folders_content() {
        let response = get_content("xqub019s2e2l1", "folders", 1).await.unwrap();
        assert_eq!(response.folder_content.folderkey, "xqub019s2e2l1");
    }

    #[tokio::test]
    async fn test_get_files_content() {
        let response = get_content("xqub019s2e2l1", "files", 1).await.unwrap();
        assert_eq!(response.folder_content.folderkey, "xqub019s2e2l1");
    }

    #[tokio::test]
    async fn test_get_info() {
        let response = get_info("xqub019s2e2l1").await.unwrap();
        assert!(response.folder_info.is_some());
    }
}