#google-drive #amazon-s3 #save-load #storage #disk #local #api

geckopanda

Save and load files from local disk, Google Drive, or Amazon S3

2 unstable releases

0.2.0 Nov 24, 2023
0.1.0 Aug 29, 2023

#13 in #save-load

Unlicense

22KB
342 lines

Crate Docs License

GeckoPanda

Save and load files from local disk, Google Drive, or Amazon S3.

  • ❌ Fast
  • ❌ Smart
  • ✅ Simple

This crate provides the Storage trait and several backends that implement it, providing a very simple API for listing, creating, updating, and deleting files. These operations can be done either asynchronously or syncronously (blocking).

Usage

use geckopanda::prelude::*;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let storage = LocalDiskStorage::new("./storagecache")?;
    // See examples for `GoogleDriveStorage` and `AmazonS3Storage`

    let file_id = storage.create_blocking("example.file")?;
    println!("Created file ID: {file_id}");

    let data = "example file content";
    storage.update_blocking(&file_id, data.as_bytes())?;
    println!("Uploaded data: {data:?}");

    let download_data = String::from_utf8(storage.get_blocking(&file_id)?)?;
    assert_eq!(data, &download_data);
    println!("Downloaded data: {download_data:?}");

    let total_size: u64 = storage
        .list_blocking()?
        .iter()
        .map(|metadata| metadata.size)
        .sum();
    println!("Total size: {total_size} bytes");

    storage.delete_blocking(&file_id)?;
    println!("Deleted file ID: {file_id}");
    Ok(())
}

Dependencies

~3–17MB
~232K SLoC