nextcloud_news_api 0.5.0

rust implementation of the NextCloud News REST API
Documentation
use crate::{models::ItemType, NextcloudNewsApi};
use reqwest::Client;
use std::env;
use url::Url;

fn test_setup_env() -> NextcloudNewsApi {
    dotenv::dotenv().expect("Failed to read .env file");
    let url = env::var("NEXTCLOUD_URL").expect("Failed to read NEXTCLOUD_URL");
    let user = env::var("NEXTCLOUD_USER").expect("Failed to read NEXTCLOUD_USER");
    let pw = env::var("NEXTCLOUD_PW").expect("Failed to read NEXTCLOUD_PW");

    let url = Url::parse(&url).unwrap();
    NextcloudNewsApi::new(&url, user, pw).unwrap()
}

#[tokio::test(flavor = "current_thread")]
async fn version() {
    let api = test_setup_env();
    let version = api.get_version(&Client::new()).await.unwrap();
    println!("{:?}", version);
}

#[tokio::test(flavor = "current_thread")]
async fn folders() {
    let api = test_setup_env();
    let folders = api.get_folders(&Client::new()).await.unwrap();
    println!("{:?}", folders);
}

#[tokio::test(flavor = "current_thread")]
async fn create_folder() {
    let api = test_setup_env();
    let folder = api.create_folder(&Client::new(), "test 2").await.unwrap();
    println!("{:?}", folder);
}

#[tokio::test(flavor = "current_thread")]
async fn delete_folder() {
    let api = test_setup_env();
    api.delete_folder(&Client::new(), 4).await.unwrap();
}

#[tokio::test(flavor = "current_thread")]
async fn feeds() {
    let api = test_setup_env();
    let feeds = api.get_feeds(&Client::new()).await.unwrap();
    println!("{:?}", feeds);
}

#[tokio::test(flavor = "current_thread")]
async fn create_feed() {
    let api = test_setup_env();
    let feed = api
        .create_feed(
            &Client::new(),
            "https://www.heise.de/rss/heise-Rubrik-Entertainment-atom.xml",
            None,
        )
        .await
        .unwrap();
    println!("{:?}", feed);
}

#[tokio::test(flavor = "current_thread")]
async fn items() {
    let api = test_setup_env();
    let items = api
        .get_items(&Client::new(), 10, None, None, None, Some(false), None)
        .await
        .unwrap();
    println!("{:?}", items);
}

#[tokio::test(flavor = "current_thread")]
async fn starred_items() {
    let api = test_setup_env();
    let starred_items = api
        .get_items(
            &Client::new(),
            2,
            None,
            Some(ItemType::Starred),
            None,
            None,
            None,
        )
        .await
        .unwrap();
    println!("items: {:?}", starred_items);
}