Documentation
¶
Overview ¶
Package proxy provides proxy and proxy middleware interfaces and implementations.
Index ¶
- Variables
- func NewHTTPClient(_ context.Context) *http.Client
- type BackendFactory
- type EntityFormatter
- type Factory
- func DefaultFactory(logger logging.Logger) Factory
- func DefaultFactoryWithSubscriber(logger logging.Logger, sF sd.SubscriberFactory) Factory
- func NewDefaultFactory(backendFactory BackendFactory, logger logging.Logger) Factory
- func NewDefaultFactoryWithSubscriber(backendFactory BackendFactory, logger logging.Logger, sF sd.SubscriberFactory) Factory
- type HTTPClientFactory
- type HTTPRequestExecutor
- type Middleware
- func NewConcurrentMiddleware(remote *config.Backend) Middleware
- func NewLoggingMiddleware(logger logging.Logger, name string) Middleware
- func NewMergeDataMiddleware(endpointConfig *config.EndpointConfig) Middleware
- func NewRandomLoadBalancedMiddleware(remote *config.Backend) Middleware
- func NewRandomLoadBalancedMiddlewareWithSubscriber(subscriber sd.Subscriber) Middleware
- func NewRequestBuilderMiddleware(remote *config.Backend) Middleware
- func NewRoundRobinLoadBalancedMiddleware(remote *config.Backend) Middleware
- func NewRoundRobinLoadBalancedMiddlewareWithSubscriber(subscriber sd.Subscriber) Middleware
- type Proxy
- type Request
- type Response
Constants ¶
This section is empty.
Variables ¶
var ( // ErrNoBackends is the error returned when an endpoint has no backends defined ErrNoBackends = errors.New("all endpoints must have at least one backend") // ErrTooManyBackends is the error returned when an endpoint has too many backends defined ErrTooManyBackends = errors.New("too many backends for this proxy") // ErrTooManyProxies is the error returned when a middleware has too many proxies defined ErrTooManyProxies = errors.New("too many proxies for this proxy middleware") // ErrNotEnoughProxies is the error returned when an endpoint has not enough proxies defined ErrNotEnoughProxies = errors.New("not enough proxies for this endpoint") )
ErrInvalidStatusCode is the error returned by the http proxy when the received status code is not a 200 nor a 201
Functions ¶
Types ¶
type BackendFactory ¶
BackendFactory creates a proxy based on the received backend configuration
func CustomHTTPProxyFactory ¶
func CustomHTTPProxyFactory(cf HTTPClientFactory) BackendFactory
CustomHTTPProxyFactory returns a BackendFactory. The Proxies it creates will use the received HTTPClientFactory
func HTTPProxyFactory ¶
func HTTPProxyFactory(client *http.Client) BackendFactory
HTTPProxyFactory returns a BackendFactory. The Proxies it creates will use the received net/http.Client
type EntityFormatter ¶
EntityFormatter formats the response data
type Factory ¶
type Factory interface {
New(cfg *config.EndpointConfig) (Proxy, error)
}
Factory creates proxies based on the received endpoint configuration.
Both, factories and backend factories, create proxies but factories are designed as a stack makers because they are intended to generate the complete proxy stack for a given frontend endpoint the app would expose and they could wrap several proxies provided by a backend factory
func DefaultFactory ¶
DefaultFactory returns a default http proxy factory with the injected logger
func DefaultFactoryWithSubscriber ¶
func DefaultFactoryWithSubscriber(logger logging.Logger, sF sd.SubscriberFactory) Factory
DefaultFactoryWithSubscriber returns a default proxy factory with the injected logger and subscriber factory
func NewDefaultFactory ¶
func NewDefaultFactory(backendFactory BackendFactory, logger logging.Logger) Factory
NewDefaultFactory returns a default proxy factory with the injected proxy builder and logger
func NewDefaultFactoryWithSubscriber ¶
func NewDefaultFactoryWithSubscriber(backendFactory BackendFactory, logger logging.Logger, sF sd.SubscriberFactory) Factory
NewDefaultFactoryWithSubscriber returns a default proxy factory with the injected proxy builder, logger and subscriber factory
type HTTPClientFactory ¶
HTTPClientFactory creates http clients based with the received context
type HTTPRequestExecutor ¶
HTTPRequestExecutor defines the interface of the request executor for the HTTP transport protocol
func DefaultHTTPRequestExecutor ¶
func DefaultHTTPRequestExecutor(clientFactory HTTPClientFactory) HTTPRequestExecutor
DefaultHTTPRequestExecutor creates a HTTPRequestExecutor with the received HTTPClientFactory
type Middleware ¶
Middleware adds a middleware, decorator or wrapper over a collection of proxies, exposing a proxy interface.
Proxy middlewares can be stacked:
var p Proxy p := EmptyMiddleware(NoopProxy) response, err := p(ctx, r)
func NewConcurrentMiddleware ¶
func NewConcurrentMiddleware(remote *config.Backend) Middleware
NewConcurrentMiddleware creates a proxy middleware that enables sending several requests concurrently
func NewLoggingMiddleware ¶
func NewLoggingMiddleware(logger logging.Logger, name string) Middleware
NewLoggingMiddleware creates proxy middleware for logging requests and responses
func NewMergeDataMiddleware ¶
func NewMergeDataMiddleware(endpointConfig *config.EndpointConfig) Middleware
NewMergeDataMiddleware creates proxy middleware for merging responses from several backends
func NewRandomLoadBalancedMiddleware ¶
func NewRandomLoadBalancedMiddleware(remote *config.Backend) Middleware
NewRandomLoadBalancedMiddleware creates proxy middleware adding a random balancer over a default subscriber
func NewRandomLoadBalancedMiddlewareWithSubscriber ¶
func NewRandomLoadBalancedMiddlewareWithSubscriber(subscriber sd.Subscriber) Middleware
NewRandomLoadBalancedMiddlewareWithSubscriber creates proxy middleware adding a random balancer over the received subscriber
func NewRequestBuilderMiddleware ¶
func NewRequestBuilderMiddleware(remote *config.Backend) Middleware
NewRequestBuilderMiddleware creates a proxy middleware that parses the request params received from the outter layer and generates the path to the backend endpoints
func NewRoundRobinLoadBalancedMiddleware ¶
func NewRoundRobinLoadBalancedMiddleware(remote *config.Backend) Middleware
NewRoundRobinLoadBalancedMiddleware creates proxy middleware adding a round robin balancer over a default subscriber
func NewRoundRobinLoadBalancedMiddlewareWithSubscriber ¶
func NewRoundRobinLoadBalancedMiddlewareWithSubscriber(subscriber sd.Subscriber) Middleware
NewRoundRobinLoadBalancedMiddlewareWithSubscriber creates proxy middleware adding a round robin balancer over the received subscriber
type Proxy ¶
Proxy processes a request in a given context and returns a response and an error
func EmptyMiddleware ¶
EmptyMiddleware is a dummy middleware, useful for testing and fallback
Source Files
¶
- balancing.go
- concurrent.go
- factory.go
- formatter.go
- http.go
- logging.go
- merging.go
- proxy.go
- request.go