wasi-experimental-http-wasmtime

Crates.iowasi-experimental-http-wasmtime
lib.rswasi-experimental-http-wasmtime
version0.10.0
sourcesrc
created_at2021-03-08 23:01:46.445933
updated_at2022-06-15 14:54:31.648613
descriptionExperimental HTTP library for WebAssembly in Wasmtime
homepage
repositoryhttps://github.com/deislabs/wasi-experimental-http
max_upload_size
id365893
size27,286
Radu Matei (radu-matei)

documentation

README

wasi-experimental-http-wasmtime

Crates.io

Experimental HTTP library for WebAssembly in Wasmtime

Adding support to a Wasmtime runtime

The easiest way to add support is by using the Wasmtime linker:

let store = Store::default();
let mut linker = Linker::new(&store);
let wasi = Wasi::new(&store, ctx);

// link the WASI core functions
wasi.add_to_linker(&mut linker)?;

// link the experimental HTTP support
let allowed_hosts = Some(vec!["https://postman-echo.com".to_string()]);
let max_concurrent_requests = Some(42);

let http = HttpCtx::new(allowed_domains, max_concurrent_requests)?;
http.add_to_linker(&mut linker)?;

The Wasmtime implementation also enables allowed domains - an optional and configurable list of domains or hosts that guest modules are allowed to send requests to. If None or an empty vector is passed, guest modules are NOT allowed to make HTTP requests to any server. (Note that the hosts passed MUST have the protocol also specified - i.e. https://my-domain.com, or http://192.168.0.1, and if making requests to a subdomain, the subdomain MUST be in the allowed list. See the the library tests for more examples).

Commit count: 171

cargo fmt