Documentation
¶
Overview ¶
Package config provides application configuration types and helpers.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type CORS ¶
type CORS struct {
Origins []string `mapstructure:"origins" validate:"dive,required,url"`
}
CORS is a configuration for CORS middleware.
type Configurable ¶
type Configurable interface {
ServerCore() *Configuration
}
Configurable is an interface that can be implemented by extended configuration.
type Configuration ¶
type Configuration struct {
*config.Configuration `mapstructure:",squash"`
// Server configuration section.
Server *Server `mapstructure:"server"`
// CORS configuration section.
CORS *CORS `mapstructure:"cors"`
// Paging configuration section.
Paging *Paging `mapstructure:"paging"`
// Proxy configuration section.
Proxy *Proxy `mapstructure:"proxy"`
// Metrics configuration section.
Metrics *Metrics `mapstructure:"metrics"`
// Healthz configuration section.
Healthz *Healthz `mapstructure:"healthz"`
// RateLimit configuration section.
RateLimit *RateLimit `mapstructure:"rate_limit"`
// HTTPClient configuration section.
HTTPClient *http.Configuration `mapstructure:"http_client"`
}
Configuration for the application.
func (*Configuration) Bind ¶
func (c *Configuration) Bind(_ string, v *viper.Viper)
Bind binds configuration section to viper.
func (*Configuration) BindCmd ¶
func (c *Configuration) BindCmd(cmd *cobra.Command, v *viper.Viper)
BindCmd adds configuration bindings from command arguments.
func (*Configuration) ServerCore ¶
func (c *Configuration) ServerCore() *Configuration
ServerCore returns the web core configuration.
func (*Configuration) Validate ¶
func (c *Configuration) Validate(validate *validation.Validate) error
Validate the configuration.
type Healthz ¶ added in v0.31.0
type Healthz struct {
Enabled bool `mapstructure:"enabled"`
Address []string `mapstructure:"address" validate:"dive,required,ip_addr|cidr|eq=*"`
}
Healthz is the health check endpoint configuration.
type Metrics ¶
type Metrics struct {
Enabled bool `mapstructure:"enabled"`
Path string `mapstructure:"path"`
Address []string `mapstructure:"address" validate:"dive,required,ip_addr|cidr|eq=*"`
SkipPaths []string `mapstructure:"skip_paths"`
}
Metrics is the Prometheus metrics endpoint configuration.
type Paging ¶ added in v0.19.0
type Paging struct {
// DefaultPageSize represents the default number of items per page.
DefaultPageSize int `mapstructure:"default_page_size" validate:"required,min=1"`
// MaxPageSize represents the default maximum number of items per page.
MaxPageSize int `mapstructure:"max_page_size" validate:"required,min=1"`
}
Paging is the pagination configuration.
type Proxy ¶
type Proxy struct {
Address []string `mapstructure:"address" validate:"dive,required,ip_addr|cidr|eq=*"`
Limit int `mapstructure:"limit" validate:"min=0,max=10"`
TrustedHeaders []string `mapstructure:"trusted_headers"`
}
Proxy is a configuration for trusted proxies.
type RateLimit ¶ added in v0.33.0
type RateLimit struct {
Enabled bool `mapstructure:"enabled"`
Strategy string `mapstructure:"strategy" validate:"required,oneof=fixed-window token-bucket"`
// Fixed window strategy.
Limit int `mapstructure:"limit" validate:"required_if=Strategy fixed-window,omitempty,gt=0"`
Window time.Duration `mapstructure:"window" validate:"required_if=Strategy fixed-window,omitempty,gt=0"`
// Token bucket strategy.
Rate float64 `mapstructure:"rate" validate:"required_if=Strategy token-bucket,omitempty,gt=0"`
Burst int `mapstructure:"burst" validate:"required_if=Strategy token-bucket,omitempty,gt=0"`
WaitLimit time.Duration `mapstructure:"wait_limit" validate:"omitempty,min=0"`
}
RateLimit configuration for routes.
func (*RateLimit) New ¶ added in v0.33.0
func (c *RateLimit) New(cache *cache.Cache, name string, opts ...ratelimit.LimiterOption) (ratelimit.Limiter, error)
New creates a limiter from the configuration. Additional options (for example ratelimit.Instrumenter) are appended after the configuration-derived ones.
type Server ¶
type Server struct {
HTTP *ServerHTTP `mapstructure:"http"`
HTTPS *ServerHTTPS `mapstructure:"https"`
Path string `mapstructure:"path"`
// Maximum duration for reading the full request including body.
ReadTimeout time.Duration `mapstructure:"read_timeout" validate:"omitempty,min=0"`
// Maximum duration for writing the response.
WriteTimeout time.Duration `mapstructure:"write_timeout" validate:"omitempty,min=0"`
// Maximum duration to wait for the next request on a keep-alive connection.
IdleTimeout time.Duration `mapstructure:"idle_timeout" validate:"omitempty,min=0"`
// Maximum request body size.
MaxRequestBodySize int `mapstructure:"max_request_body_size" validate:"omitempty,min=0"`
// Maximum duration to wait for active connections to finish on shutdown.
ShutdownTimeout time.Duration `mapstructure:"shutdown_timeout" validate:"omitempty,min=0"`
}
Server configuration section.
type ServerHTTP ¶
type ServerHTTP struct {
Enabled bool `mapstructure:"enabled"`
Address string `mapstructure:"address" validate:"ip_addr|hostname|fqdn"`
Port int `mapstructure:"port" validate:"required,min=1,max=65535"`
}
ServerHTTP is a HTTP server configuration.
func (*ServerHTTP) Bind ¶
func (s *ServerHTTP) Bind(prefix string, v *viper.Viper)
Bind server configuration section.
func (*ServerHTTP) Validate ¶
func (s *ServerHTTP) Validate(valid *validation.Validate) error
Validate server configuration section.
type ServerHTTPS ¶
type ServerHTTPS struct {
Enabled bool `mapstructure:"enabled"`
Address string `mapstructure:"address" validate:"ip_addr|hostname|fqdn"`
Port int `mapstructure:"port" validate:"required,min=1,max=65535"`
CertificatePEMFile string `mapstructure:"certificate_pem_file" validate:"omitempty,file"`
}
ServerHTTPS is a HTTPS server configuration.
func (*ServerHTTPS) Bind ¶
func (s *ServerHTTPS) Bind(prefix string, v *viper.Viper)
Bind server configuration section.
func (*ServerHTTPS) Validate ¶
func (s *ServerHTTPS) Validate(valid *validation.Validate) error
Validate server configuration section.