#file-upload #api-client #upload #api #backblaze #b2 #async-api

bin+lib b2_backblaze

this is a basic async library to upload small files to backblaze b2 service

10 releases

0.1.9 Jul 24, 2024
0.1.8 Jan 13, 2024
0.1.7 Nov 20, 2023
0.1.6 Oct 10, 2023
0.1.3 Jan 27, 2022

#203 in Asynchronous

GPL-3.0 license

70KB
2K SLoC

b2-backblaze

this is a full support async library to access backblaze b2 service backend apis.

changes

-crate have some performance changes but sadly this breaks the b2 api, although it can be fixed very quickly.
-b2 now holds creds in a Arc Mutex and shares a Arc of creds to each request, which enables multiple request to run in parallel and only one login request at a time
-try again api is added, this api keeps logging in with a time interval until login is successful
-each request will check session and login if required

features

  • single file upload
  • large and single file apis
  • v3 support

sample code


use b2_backblaze::{B2,Config};

#[tokio::main]
async fn main() {

    //start b2 client
    let mut client = B2::new(Config::new(
        "ID".to_string(),
        "KEY".to_string()
    ));

    //set bucket id
    client.set_bucket_id("bucket_id".to_string());

    //login and start session
    match client.login().await{
        Ok(_)=>{
            println!(">>> login successfull");
        },
        Err(_e)=>{
            return println!("!!! login failed : {:?}",_e);
        }
    }

    //upload file to path
    match client.upload(
        "emails/some_email/drink.png".to_string(),
        "d://workstation/expo/rust/letterman/letterman/drink.png".to_string()
    ).await{
        Ok(_v)=>{
            println!(">>> upload successfull");
        },
        Err(_e)=>{
            return println!("!!! login failed : {:?}",_e);
        }
    }

}

Dependencies

~7–18MB
~252K SLoC