gateway

package
v0.67.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 17, 2023 License: MIT Imports: 14 Imported by: 0

README

API Gateways

This package provides GraphQL & REST gateways. These are connected in to the core via GRPC.

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrMaxSubscriptionReached = func(ip string, max uint32) error {
	return fmt.Errorf("max subscriptions count (%v) reached for ip (%s)", max, ip)
}

Functions

func Chain added in v0.56.0

func Chain(f http.Handler, m ...func(http.Handler) http.Handler) http.Handler

Chain builds the middleware Chain recursively, functions are first class.

func MetricCollectionMiddleware

func MetricCollectionMiddleware(next http.Handler) http.Handler

MetricCollectionMiddleware records the request and the time taken to service it.

func RemoteAddrMiddleware

func RemoteAddrMiddleware(log *logging.Logger, next http.Handler) http.Handler

RemoteAddrMiddleware is a middleware adding to the current request context the address of the caller.

func WithAddHeadersMiddleware added in v0.56.0

func WithAddHeadersMiddleware(next http.Handler) http.Handler

Types

type Config

type Config struct {
	Level                    encoding.LogLevel        `long:"log-level" choice:"debug" choice:"info" choice:"warning"`
	Timeout                  encoding.Duration        `long:"timeout"`
	Node                     ServerConfig             `group:"Node" namespace:"node"`
	GraphQL                  GraphqlServiceConfig     `group:"GraphQL" namespace:"graphql"`
	REST                     RESTGatewayServiceConfig `group:"REST" namespace:"rest"`
	SubscriptionRetries      int                      `long:"subscription-retries" description:" "`
	GraphQLPlaygroundEnabled encoding.Bool            `long:"graphql-playground" description:"Enables the GraphQL playground"`
	MaxSubscriptionPerClient uint32                   `long:"max-subscription-per-client" description:"Maximum of graphql subscribption allowed per client"`
}

Config represents the general configuration for the gateway.

func NewDefaultConfig

func NewDefaultConfig() Config

NewDefaultConfig creates an instance of the package specific configuration, given a pointer to a logger instance to be used for logging within the package.

type GraphqlServiceConfig

type GraphqlServiceConfig struct {
	ServerConfig
	Enabled         encoding.Bool `long:"enabled" description:"Start the GraphQl gateway"`
	ComplexityLimit int           `long:"complexity-limit"`
	HTTPSEnabled    encoding.Bool `long:"https-enabled" description:"If true, GraphQL gateway will require an HTTPS connection"`
	AutoCertDomain  string        `long:"auto-cert-domain" description:"Automatically generate and sign https certificate via LetsEncrypt"`
	CertificateFile string        `long:"certificate-file" description:"Path to SSL certificate, if using HTTPS but not autocert"`
	KeyFile         string        `long:"key-file" description:"Path to private key, if using HTTPS but not autocert"`
	Endpoint        string        `long:"endpoint" description:"Endpoint to expose the graphql API at"`
}

GraphqlServiceConfig represents the configuration of the gateway.

type InjectableResponseWriter added in v0.56.0

type InjectableResponseWriter struct {
	http.ResponseWriter
	http.Hijacker
	// contains filtered or unexported fields
}

func InjectableWriterFromContext added in v0.56.0

func InjectableWriterFromContext(ctx context.Context) (*InjectableResponseWriter, bool)

func (*InjectableResponseWriter) SetHeaders added in v0.56.0

func (i *InjectableResponseWriter) SetHeaders(headers http.Header)

func (*InjectableResponseWriter) Write added in v0.56.0

func (i *InjectableResponseWriter) Write(data []byte) (int, error)

type RESTGatewayServiceConfig

type RESTGatewayServiceConfig struct {
	ServerConfig
	Enabled    encoding.Bool `long:"enabled" choice:"true" choice:"false" description:"Start the REST gateway"`
	APMEnabled encoding.Bool `long:"apm-enabled" choice:"true" choice:"false" description:" "`
}

RESTGatewayServiceConfig represent the configuration of the rest service.

type ServerConfig

type ServerConfig struct {
	Port int    `long:"port" description:"Listen for connection on port <port>"`
	IP   string `long:"ip" description:"Bind to address <ip>"`
}

ServerConfig represent the configuration of a server in vega.

type SubscriptionRateLimiter added in v0.57.0

type SubscriptionRateLimiter struct {
	MaxSubscriptions uint32
	// contains filtered or unexported fields
}

func NewSubscriptionRateLimiter added in v0.57.0

func NewSubscriptionRateLimiter(
	log *logging.Logger,
	maxSubscriptions uint32,
) *SubscriptionRateLimiter

func (*SubscriptionRateLimiter) Dec added in v0.57.0

func (s *SubscriptionRateLimiter) Dec(ip string)

func (*SubscriptionRateLimiter) Inc added in v0.57.0

func (*SubscriptionRateLimiter) WithSubscriptionRateLimiter added in v0.57.0

func (s *SubscriptionRateLimiter) WithSubscriptionRateLimiter(next http.Handler) http.Handler

Directories

Path Synopsis
Package gql contains code for running the GraphQL-to-gRPC gateway.
Package gql contains code for running the GraphQL-to-gRPC gateway.
mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
Package rest contains code for running the REST-to-gRPC gateway.
Package rest contains code for running the REST-to-gRPC gateway.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL