1 unstable release

Uses new Rust 2024

0.1.0 Mar 18, 2025

#381 in Caching

Download history 48/week @ 2025-03-12 64/week @ 2025-03-19

112 downloads per month

MIT license

16KB
219 lines

BB Downloader

A simple downloader library with support for caching. It is designed to be used with applications requiring the downloaded assets to be cached in file system.

Features

  • Async
  • Cache downloaded file in a directory in filesystem.
  • Check if a file is available in cache.
  • Uses SHA256 for verifying cached files.
  • Optional support to download files without caching.

Sample Usage

#[tokio::main]
async fn main() {
    let downloader = bb_downloader::Downloader::new("/tmp").unwrap();

    let sha = [0u8; 32];
    let url = "https://example.com/img.jpg";

    // Download with just URL
    downloader.download(url, None).await.unwrap();

    // Check if the file is in cache
    assert!(downloader.check_cache_from_url(url).is_some());

    // Will fetch directly from cache instead of re-downloading
    downloader.download(url, None).await.unwrap();

    // Since it was cached by URL, will fail with SHA256.
    assert!(!downloader.check_cache_from_sha(sha).is_some());

    // Will re-download the file
    downloader.download_with_sha(url, sha, None).await.unwrap();

    assert!(downloader.check_cache_from_sha(sha).is_some());
}

Dependencies

~9–22MB
~339K SLoC