| Crates.io | minima-r2-sdk |
| lib.rs | minima-r2-sdk |
| version | 0.1.0 |
| created_at | 2025-12-13 01:04:51.031676+00 |
| updated_at | 2025-12-13 01:04:51.031676+00 |
| description | Minimal Cloudflare R2 SDK with manual S3v4 signing |
| homepage | |
| repository | https://github.com/minima-software/r2-sdk |
| max_upload_size | |
| id | 1982414 |
| size | 114,697 |
Minimal Cloudflare R2 SDK for Rust.
[dependencies]
minima-r2-sdk = "0.1"
tokio = { version = "1", features = ["rt-multi-thread", "macros"] }
use minima_r2_sdk::{R2Client, Credentials, PutObjectRequest, Bytes};
#[tokio::main]
async fn main() -> Result<(), minima_r2_sdk::Error> {
let creds = Credentials::new("access_key", "secret_key");
let client = R2Client::new("account_id", creds);
// Upload
client.put_object(PutObjectRequest {
bucket: "my-bucket",
key: "file.txt",
body: Bytes::from("Hello R2!"),
content_type: Some("text/plain"),
metadata: None,
}).await?;
// Download
let obj = client.get_object("my-bucket", "file.txt").await?;
println!("{}", String::from_utf8_lossy(&obj.body));
// List
let list = client.list_objects_v2(minima_r2_sdk::ListObjectsV2Request {
bucket: "my-bucket",
prefix: Some("prefix/"),
..Default::default()
}).await?;
// Delete
client.delete_object("my-bucket", "file.txt").await?;
Ok(())
}
// Reads R2_ACCESS_KEY_ID and R2_SECRET_ACCESS_KEY
let creds = Credentials::from_env()?;
let upload = client.create_multipart_upload("bucket", "large.bin").await?;
let part = client.upload_part(UploadPartRequest {
bucket: "bucket",
key: "large.bin",
upload_id: &upload.upload_id,
part_number: 1,
body: Bytes::from(data),
}).await?;
client.complete_multipart_upload(CompleteMultipartUploadRequest {
bucket: "bucket",
key: "large.bin",
upload_id: &upload.upload_id,
parts: vec![CompletedPart { part_number: 1, etag: part.etag }],
}).await?;
| Method | Description |
|---|---|
get_object |
Download object |
put_object |
Upload object |
delete_object |
Delete object |
head_object |
Get metadata |
list_objects_v2 |
List objects |
create_multipart_upload |
Start multipart |
upload_part |
Upload part |
complete_multipart_upload |
Finish multipart |
abort_multipart_upload |
Cancel multipart |
list_parts |
List parts |
MIT