bcordobaq / envoy-wasm-rust-sdk

Rust SDK for WebAssembly-based Envoy extensions

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Build Crate Docs License

Rust SDK for WebAssembly-based Envoy extensions

Convenience layer on top of the original proxy-wasm SDK that brings in structure and guidance for extension developers.

TLDR

[dependencies]
envoy = { package = "envoy-sdk", version = "0.1" }
use envoy::extension::filter::http;
use envoy::extension::{HttpFilter, Result};
use envoy::host::log;

/// My very own `HttpFilter`.
struct MyHttpFilter;

impl HttpFilter for MyHttpFilter {
    /// Called when HTTP request headers have been received.
    ///
    /// Use `_ops` to access or mutate request headers.
    fn on_request_headers(&mut self, _num_headers: usize, _end_of_stream: bool, _ops: &dyn http::RequestHeadersOps) -> Result<http::FilterHeadersStatus> {
        log::info!("proxying an HTTP request");
        Ok(http::FilterHeadersStatus::Continue)
    }
}

Components

  • envoy-sdk - Envoy SDK
  • envoy-sdk-test - Unit Test Framework accompanying Envoy SDK
  • examples - Envoy SDK usage examples
    • http-filter - logs HTTP request/response headers, makes an outgoing HTTP request
    • network-filter - logs start and end of a TCP conection, makes an outgoing HTTP request
    • access-logger - logs information about an HTTP request or a TCP connection, makes an outgoing HTTP request

Latest docs (on master)

About

Rust SDK for WebAssembly-based Envoy extensions

License:Apache License 2.0


Languages

Language:Rust 99.8%Language:Dockerfile 0.2%