10 releases (breaking)
0.9.0 | Sep 19, 2023 |
---|---|
0.8.0 | Aug 25, 2023 |
0.7.0 | Jul 20, 2023 |
0.6.0 | Apr 12, 2023 |
0.2.0 | Mar 2, 2022 |
#689 in WebAssembly
97 downloads per month
42KB
650 lines
wasmCloud Blobstore Interface
The blobstore interface abstracts a service (capability provider) that can manage containers and objects. Actors that use this interface must have the capability contract wasmcloud:blobstore
in their claims list (wash claims sign --blob_store
).
Capability Provider Implementations
The following is a list of implementations of the wasmcloud:blobstore
contract. Feel free to submit a PR adding your implementation if you have a community/open source version.
Name | Vendor | Description |
---|---|---|
blobstore-s3 | wasmCloud | An AWS S3 implementation of a blobstore that manages S3 buckets and objects |
blobstore-fs | wasmCloud | An implementation that manages folders and files on a filesystem |
Example Usage (🦀 Rust)
Create a container in a blobstore:
use std::result::Result;
use wasmbus_rpc::actor::prelude::*;
use wasmcloud_interface_blobstore::{Blobstore, BlobstoreSender};
async fn create_container(ctx: &Context, container_name: &str) -> Result<(), RpcError> {
let blobstore = BlobstoreSender::new();
blobstore
.create_container(ctx, &container_name.to_string())
.await
}
Uploading an object (image bytes) to a blobstore:
use std::result::Result;
use wasmbus_rpc::actor::prelude::*;
use wasmcloud_interface_blobstore::{
Blobstore, BlobstoreSender, Chunk, PutObjectRequest, PutObjectResponse,
};
async fn upload_bytes(ctx: &Context, image_bytes: &[u8]) -> Result<PutObjectResponse, RpcError> {
BlobstoreSender::new()
.put_object(
ctx,
&PutObjectRequest {
chunk: Chunk {
container_id: "myfolder".to_string(),
object_id: "myobjectname".to_string(),
bytes: image_bytes.to_vec(),
offset: 0,
is_last: true,
},
content_type: Some("image/png".to_string()),
..Default::default()
},
)
.await
}
Dependencies
~13–30MB
~475K SLoC