| Crates.io | wasmcloud-interface-blobstore |
| lib.rs | wasmcloud-interface-blobstore |
| version | 0.9.0 |
| created_at | 2022-03-02 01:44:41.552793+00 |
| updated_at | 2023-09-19 21:38:43.990389+00 |
| 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
}