Versions in this module Expand all Collapse all v2 v2.0.2 Sep 16, 2023 Changes in this version + const Namespace + var DefaultHTTPResponseParserConfig = HTTPResponseParserConfig + var ErrNoBackends = errors.New("all endpoints must have at least one backend") + var ErrNotEnoughProxies = errors.New("not enough proxies for this endpoint") + var ErrTooManyBackends = errors.New("too many backends for this proxy") + var ErrTooManyProxies = errors.New("too many proxies for this proxy middleware") + var NewRequestBuilderMiddleware = newRequestBuilderMiddleware + func AllowlistPrune(wlDict, inDict map[string]interface{}) bool + func CloneRequestHeaders(headers map[string][]string) map[string][]string + func CloneRequestParams(params map[string]string) map[string]string + func NewReadCloserWrapper(ctx context.Context, in io.ReadCloser) io.Reader + func RegisterResponseCombiner(name string, f ResponseCombiner) + type BackendFactory func(remote *config.Backend) Proxy + func CustomHTTPProxyFactory(cf client.HTTPClientFactory) BackendFactory + func HTTPProxyFactory(client *http.Client) BackendFactory + type EntityFormatter interface + Format func(Response) Response + func NewEntityFormatter(remote *config.Backend) EntityFormatter + type EntityFormatterFunc func(Response) Response + func (e EntityFormatterFunc) Format(entity Response) Response + type Factory interface + New func(cfg *config.EndpointConfig) (Proxy, error) + 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 + func NewShadowFactory(f Factory) Factory + type FactoryFunc func(*config.EndpointConfig) (Proxy, error) + func (f FactoryFunc) New(cfg *config.EndpointConfig) (Proxy, error) + type HTTPResponseParser func(context.Context, *http.Response) (*Response, error) + func DefaultHTTPResponseParserFactory(cfg HTTPResponseParserConfig) HTTPResponseParser + type HTTPResponseParserConfig struct + Decoder encoding.Decoder + EntityFormatter EntityFormatter + type HTTPResponseParserFactory func(HTTPResponseParserConfig) HTTPResponseParser + type Metadata struct + Headers map[string][]string + StatusCode int + type Middleware func(next ...Proxy) Proxy + func NewBackendPluginMiddleware(logger logging.Logger, remote *config.Backend) Middleware + func NewConcurrentMiddleware(remote *config.Backend) Middleware + func NewFilterHeadersMiddleware(_ logging.Logger, remote *config.Backend) Middleware + func NewFlatmapMiddleware(logger logging.Logger, cfg *config.EndpointConfig) Middleware + func NewGraphQLMiddleware(logger logging.Logger, remote *config.Backend) Middleware + func NewLoadBalancedMiddleware(remote *config.Backend) Middleware + func NewLoadBalancedMiddlewareWithSubscriber(subscriber sd.Subscriber) Middleware + func NewLoggingMiddleware(logger logging.Logger, name string) Middleware + func NewMergeDataMiddleware(logger logging.Logger, endpointConfig *config.EndpointConfig) Middleware + func NewPluginMiddleware(logger logging.Logger, endpoint *config.EndpointConfig) Middleware + func NewRandomLoadBalancedMiddleware(remote *config.Backend) Middleware + func NewRandomLoadBalancedMiddlewareWithSubscriber(subscriber sd.Subscriber) Middleware + func NewRoundRobinLoadBalancedMiddleware(remote *config.Backend) Middleware + func NewRoundRobinLoadBalancedMiddlewareWithSubscriber(subscriber sd.Subscriber) Middleware + func NewStaticMiddleware(logger logging.Logger, endpointConfig *config.EndpointConfig) Middleware + type Proxy func(ctx context.Context, request *Request) (*Response, error) + func EmptyMiddleware(next ...Proxy) Proxy + func NewHTTPProxy(remote *config.Backend, cf client.HTTPClientFactory, decode encoding.Decoder) Proxy + func NewHTTPProxyDetailed(_ *config.Backend, re client.HTTPRequestExecutor, ch client.HTTPStatusHandler, ...) Proxy + func NewHTTPProxyWithHTTPExecutor(remote *config.Backend, re client.HTTPRequestExecutor, dec encoding.Decoder) Proxy + func NewShadowProxy(p1, p2 Proxy) Proxy + func NewShadowProxyWithTimeout(timeout time.Duration, p1, p2 Proxy) Proxy + func ShadowMiddleware(next ...Proxy) Proxy + func ShadowMiddlewareWithTimeout(timeout time.Duration, next ...Proxy) Proxy + type Register struct + func NewRegister() *Register + func (r Register) GetResponseCombiner(name string) (ResponseCombiner, bool) + func (r Register) SetResponseCombiner(name string, rc ResponseCombiner) + type Request struct + Body io.ReadCloser + Headers map[string][]string + Method string + Params map[string]string + Path string + Query url.Values + URL *url.URL + func CloneRequest(r *Request) *Request + func (r *Request) Clone() Request + func (r *Request) GeneratePath(URLPattern string) + type RequestWrapper interface + Body func() io.ReadCloser + Headers func() map[string][]string + Method func() string + Params func() map[string]string + Path func() string + Query func() url.Values + URL func() *url.URL + type Response struct + Data map[string]interface{} + Io io.Reader + IsComplete bool + Metadata Metadata + func NoOpHTTPResponseParser(ctx context.Context, resp *http.Response) (*Response, error) + func NoopProxy(_ context.Context, _ *Request) (*Response, error) + type ResponseCombiner func(int, []*Response) *Response + type ResponseWrapper interface + Data func() map[string]interface{} + Headers func() map[string][]string + Io func() io.Reader + IsComplete func() bool + StatusCode func() int