any-storage 0.3.2

Virtual FileStore Abstraction for different Backends
Documentation
use any_storage::http::HttpStore;
use any_storage::{Store, StoreDirectory, StoreFile, StoreMetadata};
use futures::StreamExt;

#[tokio::test]
async fn scan_irrigationtoolbox() -> std::io::Result<()> {
    let base_url = "https://irrigationtoolbox.com/NEH";
    let store = HttpStore::new(base_url)?;
    let root = store.get_dir("/").await?;
    let reader = root.read().await?;
    let entries = reader.collect::<Vec<_>>().await;
    assert_eq!(entries.len(), 46);

    let files = entries
        .iter()
        .filter_map(|entry| entry.as_ref().ok())
        .filter_map(|entry| entry.as_file())
        .collect::<Vec<_>>();
    assert!(!files.is_empty());

    for file in files {
        assert!(file.filename().is_some());
        let meta = file.metadata().await?;
        assert_ne!(meta.size(), 0);
    }
    Ok(())
}