use walrus_rs::{WalrusClient, WalrusError};
#[tokio::main]
async fn main() -> Result<(), WalrusError> {
let aggregator_url = std::env::var("AGGREGATOR")
.unwrap_or_else(|_| "https://aggregator.testnet.walrus.atalma.io".to_string());
let publisher_url = std::env::var("PUBLISHER")
.unwrap_or_else(|_| "https://publisher.walrus-01.tududes.com".to_string());
let client = WalrusClient::new(&aggregator_url, &publisher_url)?;
println!("Storing a blob...");
let data = "some string from Rust SDK1".as_bytes().to_vec();
let store_result = client.store_blob(data, Some(1), None, None, None).await?;
println!("Blob store result: {:?}", store_result);
if let Some(newly_created) = store_result.newly_created {
let blob_id = newly_created.blob_object.blob_id;
println!("Newly created blob ID: {}", blob_id);
println!("Reading blob by ID: {}", blob_id);
let read_data = client.read_blob_by_id(&blob_id).await?;
println!("Read blob data: {}", String::from_utf8_lossy(&read_data));
}
println!("\nStoring a quilt...");
let file1_data = "content of file 1d".as_bytes().to_vec();
let file2_data = "content of file 2d".as_bytes().to_vec();
let files = vec![("file1.txt", file1_data), ("file2.txt", file2_data)];
let quilt_store_result = client
.store_quilt(files, None, Some(1), None, None, None)
.await?;
println!("Quilt store result: {:?}", quilt_store_result);
if let Some(newly_created) = quilt_store_result.blob_store_result.newly_created {
let quilt_id = newly_created.blob_object.blob_id;
println!("Newly created quilt ID: {}", quilt_id);
if let Some(stored_quilt_blob) = quilt_store_result.stored_quilt_blobs.get(0) {
let quilt_patch_id = &stored_quilt_blob.quilt_patch_id;
println!("First quilt patch ID: {}", quilt_patch_id);
println!("Reading quilt blob by patch ID: {}", quilt_patch_id);
let read_quilt_data = client.read_quilt_blob_by_patch_id(quilt_patch_id).await?;
println!(
"Read quilt blob data: {}",
String::from_utf8_lossy(&read_quilt_data)
);
}
}
Ok(())
}