Documentation ¶
Overview ¶
Package httpfilter contains the HTTPFilter interface and a registry for storing and retrieving their implementations.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Register ¶
func Register(b Filter)
Register registers the HTTP filter Builder to the filter map. b.TypeURLs() will be used as the types for this filter.
NOTE: this function must only be called during initialization time (i.e. in an init() function), and is not thread-safe. If multiple filters are registered with the same type URL, the one registered last will take effect.
Types ¶
type ClientInterceptorBuilder ¶
type ClientInterceptorBuilder interface { // BuildClientInterceptor uses the FilterConfigs produced above to produce // an HTTP filter interceptor for clients. config will always be non-nil, // but override may be nil if no override config exists for the filter. It // is valid for Build to return a nil Interceptor and a nil error. In this // case, the RPC will not be intercepted by this filter. BuildClientInterceptor(config, override FilterConfig) (iresolver.ClientInterceptor, error) }
ClientInterceptorBuilder constructs a Client Interceptor. If this type is implemented by a Filter, it is capable of working on a client.
type Filter ¶
type Filter interface { // TypeURLs are the proto message types supported by this filter. A filter // will be registered by each of its supported message types. TypeURLs() []string // ParseFilterConfig parses the provided configuration proto.Message from // the LDS configuration of this filter. This may be an anypb.Any or a // udpa.type.v1.TypedStruct for filters that do not accept a custom type. // The resulting FilterConfig will later be passed to Build. ParseFilterConfig(proto.Message) (FilterConfig, error) // ParseFilterConfigOverride parses the provided override configuration // proto.Message from the RDS override configuration of this filter. This // may be an anypb.Any or a udpa.type.v1.TypedStruct for filters that do // not accept a custom type. The resulting FilterConfig will later be // passed to Build. ParseFilterConfigOverride(proto.Message) (FilterConfig, error) // IsTerminal returns whether this Filter is terminal or not (i.e. it must // be last filter in the filter chain). IsTerminal() bool }
Filter defines the parsing functionality of an HTTP filter. A Filter may optionally implement either ClientInterceptorBuilder or ServerInterceptorBuilder or both, indicating it is capable of working on the client side or server side or both, respectively.
type FilterConfig ¶
type FilterConfig interface {
// contains filtered or unexported methods
}
FilterConfig represents an opaque data structure holding configuration for a filter. Embed this interface to implement it.
type ServerInterceptorBuilder ¶
type ServerInterceptorBuilder interface { // BuildServerInterceptor uses the FilterConfigs produced above to produce // an HTTP filter interceptor for servers. config will always be non-nil, // but override may be nil if no override config exists for the filter. It // is valid for Build to return a nil Interceptor and a nil error. In this // case, the RPC will not be intercepted by this filter. BuildServerInterceptor(config, override FilterConfig) (iresolver.ServerInterceptor, error) }
ServerInterceptorBuilder constructs a Server Interceptor. If this type is implemented by a Filter, it is capable of working on a server.