9 unstable releases (3 breaking)
0.8.0 | Jun 23, 2023 |
---|---|
0.7.2 | Aug 19, 2023 |
0.7.1 | May 22, 2023 |
0.6.3 | Apr 5, 2023 |
0.5.0 | Dec 20, 2022 |
#2 in #genesys-go
226 downloads per month
Used in 3 crates
125KB
2.5K
SLoC
Shadow Drive Rust
Rust SDK for GenesysGo's Shadow Drive, a decentralized storage network.
Available on crates.io.
Install
Add the crate to your Cargo.toml
.
shadow-drive-rust = "0.7.1"
Examples
//init tracing.rs subscriber
tracing_subscriber::fmt()
.with_env_filter("off,shadow_drive_rust=debug")
.init();
//load keypair from file
let keypair = read_keypair_file(KEYPAIR_PATH).expect("failed to load keypair at path");
//create shdw drive client
let shdw_drive_client = ShadowDriveClient::new(keypair, "https://ssc-dao.genesysgo.net");
//derive the storage account pubkey
let pubkey = keypair.pubkey();
let (storage_account_key, _) =
shadow_drive_rust::derived_addresses::storage_account(&pubkey, 0);
// read files in directory
let dir = tokio::fs::read_dir("multiple_uploads")
.await
.expect("failed to read multiple uploads dir");
// create Vec of ShadowFile structs for upload
let mut files = tokio_stream::wrappers::ReadDirStream::new(dir)
.filter(Result::is_ok)
.and_then(|entry| async move {
Ok(ShadowFile::file(
entry
.file_name()
.into_string()
.expect("failed to convert os string to regular string"),
entry.path(),
))
})
.collect::<Result<Vec<_>, _>>()
.await
.expect("failed to create shdw files for dir");
// Bytes are also supported
files.push(ShadowFile::bytes(
String::from("buf.txt"),
&b"this is a buf test"[..],
));
// kick off upload
let upload_results = shdw_drive_client
.upload_multiple_files(&storage_account_key, files)
.await
.expect("failed to upload files");
//profit
println!("upload results: {:#?}", upload_results);
More examples can be found in the example
directory.
Dependencies
~78MB
~1.5M SLoC