This is the Rust SDK for Easegress. It can be used to extend the ability of Easegress.
The following steps assume that Git and Rust are installed.
sh
git clone https://github.com/LokiWager/easegress-demo
src/lib.rs
. Please check the examples
directory for more examples.```rust use std::collections::HashMap; use std::time::Duration; use easegresssdk::*; use easegressmacros::easegress_object;
// define your own struct.
struct AddRequestHeader;
// implement Program trait for your own struct.
impl Program for AddRequestHeader {
fn new(_params: HashMap
fn run(&self) -> i32 {
let v = request::get_header("Foo".to_string());
if v.len() > 10 {
log(LogLevel::Warning, format!("The length of Foo is greater than 10"));
}
if v.len() > 0 {
request::add_header("Wasm-Added".to_string(), v.clone());
}
request::set_body("I have a new body now".as_bytes().to_vec());
0
}
} ```
Note
Program
trait on your own struct. #[easegress_object]
attribute macro must be applied to both your struct definition and the trait impl block for it.#[easegress_object]
attribute macro is allowed.wasm32-unknown-unknown
target.bash
rustup target add wasm32-unknown-unknown
bash
cargo build --target wasm32-unknown-unknown --release
If success, it will generate easegress_demo.wasm
at the target/wasm32-unknown-unknown/release
folder.
Please refer to the documentation of WasmHost
for deploying and executing the compiled Wasm code.