Module http

Source
Expand description

Envoy HTTP Filter extension.

Creating a new HTTP Filter extension using Envoy SDK consists of the following steps:

  1. Implement HttpFilter trait to define core logic of your extension
  2. Implement ExtensionFactory trait to create new instances of your extension
  3. Register your extension on WebAssembly module start up

§Examples

§Basic HttpFilter:
use envoy::extension::HttpFilter;

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

impl HttpFilter for MyHttpFilter {}
§ExtensionFactory for MyHttpFilter instances:
use envoy::extension::{ExtensionFactory, InstanceId, Result};

/// `ExtensionFactory` for `MyHttpFilter`.
struct MyHttpFilterFactory;

impl ExtensionFactory for MyHttpFilterFactory {
    type Extension = MyHttpFilter;

    fn name() -> &'static str { "my_http_filter" }

    fn new_extension(&mut self, _instance_id: InstanceId) -> Result<Self::Extension> {
        Ok(MyHttpFilter)
    }
}
§Registration of MyHttpFilter on start up:
use envoy::extension::{entrypoint, Module, Result};

entrypoint! { initialize } // put initialization logic into a function to make it unit testable

fn initialize() -> Result<Module> {
    Module::new()
        .add_http_filter(|_instance_id| Ok(MyHttpFilterFactory))
}

Enums§

FilterDataStatus
Return codes for on_request_body and on_response_body filter invocations.
FilterHeadersStatus
Return codes for on_request_headers and on_response_headers filter invocations.
FilterTrailersStatus
Return codes for on_request_trailers and on_response_trailers filter invocations.

Traits§

ExchangeCompleteOps
An interface for operations available in the context of on_exchange_complete filter invocation.
HttpFilter
An interface of the Envoy HTTP Filter extension.
Ops
An interface with all available operations over request/response.
RequestBodyOps
An interface for manipulating request body.
RequestFlowOps
An interface for changing request flow.
RequestHeadersOps
An interface for manipulating request headers.
RequestTrailersOps
An interface for manipulating request trailers.
ResponseBodyOps
An interface for manipulating response data.
ResponseFlowOps
An interface for changing response flow.
ResponseHeadersOps
An interface for manipulating response headers.
ResponseTrailersOps
An interface for manipulating response trailers.