wasmcloud-actor-blobstore

Crates.iowasmcloud-actor-blobstore
lib.rswasmcloud-actor-blobstore
version0.2.2
sourcesrc
created_at2021-02-10 15:55:26.439747
updated_at2021-05-17 19:36:38.142348
descriptionInterface to the blobstore contract for use by wasmCloud Actors
homepage
repository
max_upload_size
id353261
size21,207
wasmCloud Automation Bot (wasmcloud-automation)

documentation

https://docs.rs/wasmcloud-actor-blobstore

README

crates.io Rust license documentation

wasmCloud Blob Store Actor Interface

This crate provides wasmCloud actors with an interface to the blobstore capability provider. Actors using this interface must have the claim wasmcloud:blobstore in order to have permission to communicate with the store.

This generic protocol can be used to support capability providers like local blob storage, Amazon S3, Azure blob storage, Google blob storage, and more.

Example

use wapc_guest as guest;
use guest::prelude::*;
use wasmcloud_actor_blobstore as blobstore;
use wasmcloud_actor_http_server as http;
use wasmcloud_actor_core as actor;
use actor::{serialize, init};
use blobstore::*;
use serde_json::json;
use log::{error, info};

#[actor::init]
fn init() {
    http::Handlers::register_handle_request(download_poem);
    blobstore::Handlers::register_receive_chunk(handle_chunk);   
}

fn download_poem(req: http::Request) -> HandlerResult<http::Response> {    
    match blobstore::default().start_download(req.path, "poems".to_string(), 4096, None) {
        Ok(_) => Ok(http::Response::ok()),
        Err(_) => Err("Failed to initiate download of chunk".into())
    }
}

 /// Handle the incoming chunk as a poem "verse" and log the result
 /// Note that these chunks can be received out of order, so the poem
 /// in this case might be displayed in a different order and could look
 /// funny if the verse continues across a chunk boundary
 fn handle_chunk(chunk: FileChunk) -> HandlerResult<()> {
     let verse = String::from_utf8(chunk.chunk_bytes)?;
     info!("Poem {} part {}:\n{}", chunk.id, chunk.sequence_no, verse);
     Ok(())
 }


Commit count: 0

cargo fmt