Expand description
Envoy
HTTP Filter
extension.
Creating a new HTTP Filter
extension using Envoy SDK
consists of the following steps:
- Implement
HttpFilter
trait to define core logic of your extension - Implement
ExtensionFactory
trait to create new instances of your extension 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§
- Filter
Data Status - Return codes for
on_request_body
andon_response_body
filter invocations. - Filter
Headers Status - Return codes for
on_request_headers
andon_response_headers
filter invocations. - Filter
Trailers Status - Return codes for
on_request_trailers
andon_response_trailers
filter invocations.
Traits§
- Exchange
Complete Ops - An interface for operations available in the context of
on_exchange_complete
filter invocation. - Http
Filter - An interface of the
Envoy
HTTP Filter
extension. - Ops
- An interface with all available operations over request/response.
- Request
Body Ops - An interface for manipulating request body.
- Request
Flow Ops - An interface for changing request flow.
- Request
Headers Ops - An interface for manipulating request headers.
- Request
Trailers Ops - An interface for manipulating request trailers.
- Response
Body Ops - An interface for manipulating response data.
- Response
Flow Ops - An interface for changing response flow.
- Response
Headers Ops - An interface for manipulating response headers.
- Response
Trailers Ops - An interface for manipulating response trailers.