wasmcloud-actor-extras 0.1.2

Interface to the extras contract for use by wasmCloud Actors
Documentation
[![crates.io](https://img.shields.io/crates/v/wasmcloud-actor-extras.svg)](https://crates.io/crates/wasmcloud-actor-extras) 
![Rust](https://img.shields.io/github/workflow/status/wasmcloud/actor-interfaces/Extras)
![license](https://img.shields.io/crates/l/wasmcloud-actor-extras.svg) 
[![documentation](https://docs.rs/wasmcloud-actor-extras/badge.svg)](https://docs.rs/wasmcloud-actor-extras)
# wasmCloud Extras Actor Interface

This crate provides wasmCloud actors with an interface to the extras capability provider.
Every wasmCloud host runtime automatically comes with a built-in extras provider. However,
actors using this provider will still need to be signed with the `wasmcloud:extras`
capability contract ID.

The following functions are supported on the extras `Host` interface:

* [request_guid]generated::Host::request_guid
* [request_sequence]generated::Host::request_sequence
* [request_random]generated::Host::request_random

Example:

```rust
extern crate wapc_guest as guest;
use guest::prelude::*;
use wasmcloud_actor_core as actor;
use wasmcloud_actor_extras as extras;
use wasmcloud_actor_http_server as http;
use serde_json::json;
use log::{error, info};

#[actor::init]
pub fn init() {
    http::Handlers::register_handle_request(generate_guid);
}

/// Generate a Guid and return it in a JSON envelope
fn generate_guid(_req: http::Request) -> HandlerResult<http::Response> {
  let guid = get_guid()?      // Replace this with `extras::default().request_guid()?`
                .unwrap_or("unknown-guid".to_string());

  let result = json!({"guid": guid });
  Ok(http::Response::json(&result, 200, "OK"))

}
```