Skip to content

easegress-io/easegress-rust-sdk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Easegress Rust SDK

FOSSA Status

This is the Rust SDK for Easegress. It can be used to extend the ability of Easegress.

Prerequisites

The following steps assume that Git and Rust are installed.

Local Development

  1. Clone the repo.
git clone https://github.com/megaease/easegress-rust-demo.git
  1. Implement your extension in src/lib.rs. Please check the examples directory for more examples.
use std::collections::HashMap;
use std::time::Duration;
use easegress_sdk::*;
use easegress_macros::easegress_object;

// define your own struct.
#[easegress_object]
struct AddRequestHeader;

// implement Program trait for your own struct.
#[easegress_object]
impl Program for AddRequestHeader {
    fn new(_params: HashMap<String, String>) -> Self {
        Self {}
    }

    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

  • You need to implement the Program trait on your own struct.
  • Additionally, the #[easegress_object] attribute macro must be applied to both your struct definition and the trait impl block for it.
  • Only one struct with #[easegress_object] attribute macro is allowed.
  1. Add wasm32-unknown-unknown target.
rustup target add wasm32-unknown-unknown 
  1. Build with this command
cargo build --target wasm32-unknown-unknown --release

If success, it will generate easegress_demo.wasm at the target/wasm32-unknown-unknown/release folder.

Deploy and execute

Please refer to the documentation of WasmHost for deploying and executing the compiled Wasm code.

License

FOSSA Status

Releases

No releases published

Packages

No packages published

Languages