Documentation ¶
Overview ¶
Package confighttp defines the configuration settings for creating an HTTP client and server.
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AuthConfig ¶ added in v0.106.0
type AuthConfig struct { // Auth for this receiver. configauth.Authentication `mapstructure:",squash"` // RequestParameters is a list of parameters that should be extracted from the request and added to the context. // When a parameter is found in both the query string and the header, the value from the query string will be used. RequestParameters []string `mapstructure:"request_params"` }
type CORSConfig ¶ added in v0.94.0
type CORSConfig struct { // AllowedOrigins sets the allowed values of the Origin header for // HTTP/JSON requests to an OTLP receiver. An origin may contain a // wildcard (*) to replace 0 or more characters (e.g., // "http://*.domain.com", or "*" to allow any origin). AllowedOrigins []string `mapstructure:"allowed_origins"` // AllowedHeaders sets what headers will be allowed in CORS requests. // The Accept, Accept-Language, Content-Type, and Content-Language // headers are implicitly allowed. If no headers are listed, // X-Requested-With will also be accepted by default. Include "*" to // allow any request header. AllowedHeaders []string `mapstructure:"allowed_headers"` // MaxAge sets the value of the Access-Control-Max-Age response header. // Set it to the number of seconds that browsers should cache a CORS // preflight response for. MaxAge int `mapstructure:"max_age"` }
CORSConfig configures a receiver for HTTP cross-origin resource sharing (CORS). See the underlying https://github.com/rs/cors package for details.
func NewDefaultCORSConfig ¶ added in v0.107.0
func NewDefaultCORSConfig() *CORSConfig
NewDefaultCORSConfig creates a default cross-origin resource sharing (CORS) configuration.
type ClientConfig ¶ added in v0.94.0
type ClientConfig struct { // The target URL to send data to (e.g.: http://some.url:9411/v1/traces). Endpoint string `mapstructure:"endpoint"` // ProxyURL setting for the collector ProxyURL string `mapstructure:"proxy_url"` // TLSSetting struct exposes TLS client configuration. TLSSetting configtls.ClientConfig `mapstructure:"tls"` // ReadBufferSize for HTTP client. See http.Transport.ReadBufferSize. // Default is 0. ReadBufferSize int `mapstructure:"read_buffer_size"` // WriteBufferSize for HTTP client. See http.Transport.WriteBufferSize. // Default is 0. WriteBufferSize int `mapstructure:"write_buffer_size"` // Timeout parameter configures `http.Client.Timeout`. // Default is 0 (unlimited). Timeout time.Duration `mapstructure:"timeout"` // Additional headers attached to each HTTP request sent by the client. // Existing header values are overwritten if collision happens. // Header values are opaque since they may be sensitive. Headers map[string]configopaque.String `mapstructure:"headers"` // Auth configuration for outgoing HTTP calls. Auth *configauth.Authentication `mapstructure:"auth"` // The compression key for supported compression types within collector. Compression configcompression.Type `mapstructure:"compression"` // MaxIdleConns is used to set a limit to the maximum idle HTTP connections the client can keep open. // By default, it is set to 100. MaxIdleConns *int `mapstructure:"max_idle_conns"` // MaxIdleConnsPerHost is used to set a limit to the maximum idle HTTP connections the host can keep open. // By default, it is set to [http.DefaultTransport.MaxIdleConnsPerHost]. MaxIdleConnsPerHost *int `mapstructure:"max_idle_conns_per_host"` // MaxConnsPerHost limits the total number of connections per host, including connections in the dialing, // active, and idle states. // By default, it is set to [http.DefaultTransport.MaxConnsPerHost]. MaxConnsPerHost *int `mapstructure:"max_conns_per_host"` // IdleConnTimeout is the maximum amount of time a connection will remain open before closing itself. // By default, it is set to [http.DefaultTransport.IdleConnTimeout] IdleConnTimeout *time.Duration `mapstructure:"idle_conn_timeout"` // DisableKeepAlives, if true, disables HTTP keep-alives and will only use the connection to the server // for a single HTTP request. // // WARNING: enabling this option can result in significant overhead establishing a new HTTP(S) // connection for every request. Before enabling this option please consider whether changes // to idle connection settings can achieve your goal. DisableKeepAlives bool `mapstructure:"disable_keep_alives"` // This is needed in case you run into // https://github.com/golang/go/issues/59690 // https://github.com/golang/go/issues/36026 // HTTP2ReadIdleTimeout if the connection has been idle for the configured value send a ping frame for health check // 0s means no health check will be performed. HTTP2ReadIdleTimeout time.Duration `mapstructure:"http2_read_idle_timeout"` // HTTP2PingTimeout if there's no response to the ping within the configured value, the connection will be closed. // If not set or set to 0, it defaults to 15s. HTTP2PingTimeout time.Duration `mapstructure:"http2_ping_timeout"` // Cookies configures the cookie management of the HTTP client. Cookies *CookiesConfig `mapstructure:"cookies"` }
ClientConfig defines settings for creating an HTTP client.
func NewDefaultClientConfig ¶ added in v0.94.0
func NewDefaultClientConfig() ClientConfig
NewDefaultClientConfig returns ClientConfig type object with the default values of 'MaxIdleConns' and 'IdleConnTimeout', as well as http.DefaultTransport values. Other config options are not added as they are initialized with 'zero value' by GoLang as default. We encourage to use this function to create an object of ClientConfig.
type CookiesConfig ¶ added in v0.104.0
type CookiesConfig struct { // Enabled if true, cookies from HTTP responses will be reused in further HTTP requests with the same server. Enabled bool `mapstructure:"enabled"` }
CookiesConfig defines the configuration of the HTTP client regarding cookies served by the server.
type ServerConfig ¶ added in v0.94.0
type ServerConfig struct { // Endpoint configures the listening address for the server. Endpoint string `mapstructure:"endpoint"` // TLSSetting struct exposes TLS client configuration. TLSSetting *configtls.ServerConfig `mapstructure:"tls"` // CORS configures the server for HTTP cross-origin resource sharing (CORS). CORS *CORSConfig `mapstructure:"cors"` // Auth for this receiver Auth *AuthConfig `mapstructure:"auth"` // MaxRequestBodySize sets the maximum request body size in bytes. Default: 20MiB. MaxRequestBodySize int64 `mapstructure:"max_request_body_size"` // IncludeMetadata propagates the client metadata from the incoming requests to the downstream consumers IncludeMetadata bool `mapstructure:"include_metadata"` // Additional headers attached to each HTTP response sent to the client. // Header values are opaque since they may be sensitive. ResponseHeaders map[string]configopaque.String `mapstructure:"response_headers"` // CompressionAlgorithms configures the list of compression algorithms the server can accept. Default: ["", "gzip", "zstd", "zlib", "snappy", "deflate"] CompressionAlgorithms []string `mapstructure:"compression_algorithms"` // ReadTimeout is the maximum duration for reading the entire // request, including the body. A zero or negative value means // there will be no timeout. // // Because ReadTimeout does not let Handlers make per-request // decisions on each request body's acceptable deadline or // upload rate, most users will prefer to use // ReadHeaderTimeout. It is valid to use them both. ReadTimeout time.Duration `mapstructure:"read_timeout"` // ReadHeaderTimeout is the amount of time allowed to read // request headers. The connection's read deadline is reset // after reading the headers and the Handler can decide what // is considered too slow for the body. If ReadHeaderTimeout // is zero, the value of ReadTimeout is used. If both are // zero, there is no timeout. ReadHeaderTimeout time.Duration `mapstructure:"read_header_timeout"` // WriteTimeout is the maximum duration before timing out // writes of the response. It is reset whenever a new // request's header is read. Like ReadTimeout, it does not // let Handlers make decisions on a per-request basis. // A zero or negative value means there will be no timeout. WriteTimeout time.Duration `mapstructure:"write_timeout"` // IdleTimeout is the maximum amount of time to wait for the // next request when keep-alives are enabled. If IdleTimeout // is zero, the value of ReadTimeout is used. If both are // zero, there is no timeout. IdleTimeout time.Duration `mapstructure:"idle_timeout"` }
ServerConfig defines settings for creating an HTTP server.
Example ¶
settings := NewDefaultServerConfig() settings.Endpoint = "localhost:443" s, err := settings.ToServer( context.Background(), componenttest.NewNopHost(), componenttest.NewNopTelemetrySettings(), http.HandlerFunc(func(http.ResponseWriter, *http.Request) {})) if err != nil { panic(err) } l, err := settings.ToListener(context.Background()) if err != nil { panic(err) } if err = s.Serve(l); err != nil { panic(err) }
Output:
func NewDefaultServerConfig ¶ added in v0.106.0
func NewDefaultServerConfig() ServerConfig
NewDefaultServerConfig returns ServerConfig type object with default values. We encourage to use this function to create an object of ServerConfig.
func (*ServerConfig) ToListener ¶ added in v0.94.0
ToListener creates a net.Listener.
func (*ServerConfig) ToServer ¶ added in v0.94.0
func (hss *ServerConfig) ToServer(_ context.Context, host component.Host, settings component.TelemetrySettings, handler http.Handler, opts ...ToServerOption) (*http.Server, error)
ToServer creates an http.Server from settings object.
type ToServerOption ¶
type ToServerOption interface {
// contains filtered or unexported methods
}
ToServerOption is an option to change the behavior of the HTTP server returned by ServerConfig.ToServer().
func WithDecoder ¶ added in v0.81.0
func WithDecoder(key string, dec func(body io.ReadCloser) (io.ReadCloser, error)) ToServerOption
WithDecoder provides support for additional decoders to be configured by the caller.
func WithErrorHandler ¶
func WithErrorHandler(e func(w http.ResponseWriter, r *http.Request, errorMsg string, statusCode int)) ToServerOption
WithErrorHandler overrides the HTTP error handler that gets invoked when there is a failure inside httpContentDecompressor.