[][src]Module envoy_sdk::extension::filter::http

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.