Crates.io | wasmcloud-interface-blobstore |
lib.rs | wasmcloud-interface-blobstore |
version | 0.9.0 |
source | src |
created_at | 2022-03-02 01:44:41.552793 |
updated_at | 2023-09-19 21:38:43.990389 |
description | Interface for accessing an object store over the wasmcloud:blobstore contract |
homepage | https://github.com/wasmcloud/wasmcloud |
repository | https://github.com/wasmcloud/interfaces |
max_upload_size | |
id | 541919 |
size | 41,154 |
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
).
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 |
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
}