Documentation
¶
Overview ¶
Middlewares can modify or intercept requests and responses
Index ¶
- type Middleware
- type MiddlewareChain
- func (c *MiddlewareChain) Add(id string, priority int, m Middleware) error
- func (c *MiddlewareChain) Get(id string) Middleware
- func (c *MiddlewareChain) GetIter() *MiddlewareIter
- func (c *MiddlewareChain) Remove(id string) error
- func (c *MiddlewareChain) Update(id string, priority int, m Middleware) error
- func (c *MiddlewareChain) Upsert(id string, priority int, m Middleware)
- type MiddlewareIter
- type MiddlewareWrapper
- type ObserveRequestFn
- type ObserveResponseFn
- type Observer
- type ObserverChain
- func (c *ObserverChain) Add(id string, o Observer) error
- func (c *ObserverChain) Get(id string) Observer
- func (c *ObserverChain) ObserveRequest(r Request)
- func (c *ObserverChain) ObserveResponse(r Request, a Attempt)
- func (c *ObserverChain) Remove(id string) error
- func (c *ObserverChain) Update(id string, o Observer) error
- func (c *ObserverChain) Upsert(id string, o Observer)
- type ObserverWrapper
- type ProcessRequestFn
- type ProcessResponseFn
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Middleware ¶
type Middleware interface {
// Called before the request is going to be proxied to the endpoint selected by the load balancer.
// If it returns an error, request will be treated as erorrneous (e.g. failover will be initated).
// If it returns a non nil response, proxy will return the response without proxying to the endpoint.
// If it returns nil response and nil error request will be proxied to the upstream.
// It's ok to modify request headers and body as a side effect of the funciton call.
ProcessRequest(r Request) (*http.Response, error)
// If request has been completed or intercepted by middleware and response has been received
// attempt would contain non nil response or non nil error.
ProcessResponse(r Request, a Attempt)
}
Middlewares are allowed to observe, modify and intercept http requests and responses
type MiddlewareChain ¶
type MiddlewareChain struct {
// contains filtered or unexported fields
}
Middleware chain implements middleware interface and acts as a container for multiple middlewares chained together in deterministic order.
func NewMiddlewareChain ¶
func NewMiddlewareChain() *MiddlewareChain
func (*MiddlewareChain) Add ¶
func (c *MiddlewareChain) Add(id string, priority int, m Middleware) error
func (*MiddlewareChain) Get ¶
func (c *MiddlewareChain) Get(id string) Middleware
func (*MiddlewareChain) GetIter ¶
func (c *MiddlewareChain) GetIter() *MiddlewareIter
func (*MiddlewareChain) Remove ¶
func (c *MiddlewareChain) Remove(id string) error
func (*MiddlewareChain) Update ¶
func (c *MiddlewareChain) Update(id string, priority int, m Middleware) error
func (*MiddlewareChain) Upsert ¶
func (c *MiddlewareChain) Upsert(id string, priority int, m Middleware)
type MiddlewareIter ¶
type MiddlewareIter struct {
// contains filtered or unexported fields
}
func (*MiddlewareIter) Next ¶
func (m *MiddlewareIter) Next() Middleware
func (*MiddlewareIter) Prev ¶
func (m *MiddlewareIter) Prev() Middleware
type MiddlewareWrapper ¶
type MiddlewareWrapper struct {
OnRequest ProcessRequestFn
OnResponse ProcessResponseFn
}
Wraps the functions to create a middleware compatible interface
func (*MiddlewareWrapper) ProcessRequest ¶
func (cb *MiddlewareWrapper) ProcessRequest(r Request) (*http.Response, error)
func (*MiddlewareWrapper) ProcessResponse ¶
func (cb *MiddlewareWrapper) ProcessResponse(r Request, a Attempt)
type ObserveRequestFn ¶
type ObserveRequestFn func(r Request)
type ObserveResponseFn ¶
type ObserveResponseFn func(r Request, a Attempt)
type Observer ¶
type Observer interface {
// Will be called before every request to the endpoint
ObserveRequest(r Request)
// Will be called after every request to the endpoint
ObserveResponse(r Request, a Attempt)
}
Unlinke middlewares, observers are not able to intercept or change any requests and will be called on every request to endpoint regardless of the middlewares side effects
type ObserverChain ¶
type ObserverChain struct {
// contains filtered or unexported fields
}
func NewObserverChain ¶
func NewObserverChain() *ObserverChain
func (*ObserverChain) Get ¶
func (c *ObserverChain) Get(id string) Observer
func (*ObserverChain) ObserveRequest ¶
func (c *ObserverChain) ObserveRequest(r Request)
func (*ObserverChain) ObserveResponse ¶
func (c *ObserverChain) ObserveResponse(r Request, a Attempt)
func (*ObserverChain) Remove ¶
func (c *ObserverChain) Remove(id string) error
func (*ObserverChain) Upsert ¶
func (c *ObserverChain) Upsert(id string, o Observer)
type ObserverWrapper ¶
type ObserverWrapper struct {
OnRequest ObserveRequestFn
OnResponse ObserveResponseFn
}
Wraps the functions to create a observer compatible interface
func (*ObserverWrapper) ObserveRequest ¶
func (cb *ObserverWrapper) ObserveRequest(r Request)
func (*ObserverWrapper) ObserveResponse ¶
func (cb *ObserverWrapper) ObserveResponse(r Request, a Attempt)
type ProcessRequestFn ¶
type ProcessResponseFn ¶
type ProcessResponseFn func(r Request, a Attempt)
Click to show internal directories.
Click to hide internal directories.