Documentation ¶
Overview ¶
SPDX-FileCopyrightText: 2017 Comcast Cable Communications Management, LLC SPDX-License-Identifier: Apache-2.0
SPDX-FileCopyrightText: 2017 Comcast Cable Communications Management, LLC SPDX-License-Identifier: Apache-2.0
SPDX-FileCopyrightText: 2017 Comcast Cable Communications Management, LLC SPDX-License-Identifier: Apache-2.0
SPDX-FileCopyrightText: 2017 Comcast Cable Communications Management, LLC SPDX-License-Identifier: Apache-2.0
SPDX-FileCopyrightText: 2017 Comcast Cable Communications Management, LLC SPDX-License-Identifier: Apache-2.0
SPDX-FileCopyrightText: 2017 Comcast Cable Communications Management, LLC SPDX-License-Identifier: Apache-2.0
SPDX-FileCopyrightText: 2017 Comcast Cable Communications Management, LLC SPDX-License-Identifier: Apache-2.0
SPDX-FileCopyrightText: 2017 Comcast Cable Communications Management, LLC SPDX-License-Identifier: Apache-2.0
SPDX-FileCopyrightText: 2017 Comcast Cable Communications Management, LLC SPDX-License-Identifier: Apache-2.0
SPDX-FileCopyrightText: 2017 Comcast Cable Communications Management, LLC SPDX-License-Identifier: Apache-2.0
SPDX-FileCopyrightText: 2017 Comcast Cable Communications Management, LLC SPDX-License-Identifier: Apache-2.0
Index ¶
- Variables
- func AddressKey() string
- func NewServerChain(o Options, l *zap.Logger, fbs ...sallusthttp.FieldBuilder) alice.Chain
- func NewTlsConfig(t *Tls) (tc *tls.Config, err error)
- func OnStart(o Options, s Interface, logger *zap.Logger, onExit func()) func(context.Context) error
- func OnStop(s Interface, logger *zap.Logger) func(context.Context) error
- func ReadCertPool(path string) (cp *x509.CertPool, err error)
- func ServerKey() string
- func UseTrackingWriter(next http.Handler) http.Handler
- type Busy
- type ChainFactory
- type ChainFactoryFunc
- type Constant
- type ConstantHandler
- type Interface
- type Listener
- type MissingValueError
- type MissingVariableError
- type Mtls
- type Options
- type Releasable
- type ResponseHeaders
- type ServerIn
- type ServerNotConfiguredError
- type Tls
- type TlsConn
- type TrackingWriter
- type Unmarshal
Constants ¶
This section is empty.
Variables ¶
var ( // ErrHijackerNotSupported is returned by TrackingWriter.Hijack when the underlying // http.ResponseWriter does not implement http.Hijacker. ErrHijackerNotSupported = errors.New("http.Hijacker is not supported") )
var (
ErrTlsCertificateRequired = errors.New("Both a certificateFile and keyFile are required")
)
Functions ¶
func AddressKey ¶
func AddressKey() string
AddressKey is the logging key for the server's bind address
func NewServerChain ¶
func NewServerChain(o Options, l *zap.Logger, fbs ...sallusthttp.FieldBuilder) alice.Chain
NewServerChain produces the standard constructor chain for a server, primarily using configuration.
func NewTlsConfig ¶
NewTlsConfig produces a *tls.Config from a set of configuration options. If the supplied set of options is nil, this function returns nil with no error.
func ReadCertPool ¶ added in v0.4.24
ReadCertPool reads a file that is expected to contain a certificate bundle and returns that bundle as a pool.
Types ¶
type Busy ¶ added in v0.3.1
Busy is an Alice-style decorator that enforces a maximum number of concurrent HTTP transactions
type ChainFactory ¶
ChainFactory is a creation strategy for server-specific alice.Chains that will decorate the server handler. Chains created by this factory will be appended to the core chain created by NewServerChain.
This interface is useful when particular servers need custom chains based on configuration. The most common example of this is metrics, as server metrics might need the name of the server as a label.
type ChainFactoryFunc ¶
type Constant ¶ added in v0.3.1
type Constant struct { // StatusCode is the HTTP response code returned from all transactions. If unset, http.StatusOK is assumed. StatusCode int // Header describes any response HTTP headers. If a Body is supplied, the Content-Length header is automatically inserted. // If a Content-Type header is desired, use this field. Header http.Header // Body is the constant body returned by all HTTP responses. If unset, no body is written. Note that the // Content-Length header is always written. If no Body is set, Content-Length will be zero. Body []byte }
Constant describes the available options for creating a ConstantHandler
func (Constant) NewHandler ¶ added in v0.3.1
func (c Constant) NewHandler() *ConstantHandler
NewHandler produces a ConstantHandler from a set of options. Headers are preprocessed and canoncilized. Each invocation of this method produces a distinct ConstantHandler that is unaffected by changes to the defining Constant instance.
type ConstantHandler ¶ added in v0.3.1
type ConstantHandler struct {
// contains filtered or unexported fields
}
ConstantHandler is an http.Handler that produces constant content described by a ConstantOptions
func (*ConstantHandler) ServeHTTP ¶ added in v0.3.1
func (ch *ConstantHandler) ServeHTTP(response http.ResponseWriter, _ *http.Request)
type Interface ¶
type Interface interface { // Serve handles both TLS and non-TLS listeners. Code in this package takes care of creating // a *tls.Config and TLS listener. Serve(l net.Listener) error // Shutdown gracefully shuts down the server Shutdown(context.Context) error }
Interface is the expected behavior of a server
type Listener ¶ added in v0.3.1
type Listener struct {
// contains filtered or unexported fields
}
Listener is a configurable net.Listener that provides the following features via options
func NewListener ¶
func NewListener(ctx context.Context, o Options, lcfg net.ListenConfig, tcfg *tls.Config) (*Listener, error)
NewListener constructs a net.Listener appropriate for the server configuration. This function binds to the address specified in the options or an autoselected address if that field is one of the values mentioned at https://godoc.org/net#Listen.
type MissingValueError ¶
MissingValueError indicates a missing header or parameter in a request (or both)
func (MissingValueError) Error ¶
func (mve MissingValueError) Error() string
func (MissingValueError) StatusCode ¶
func (mve MissingValueError) StatusCode() int
type MissingVariableError ¶
type MissingVariableError struct {
Variable string
}
MissingVariableError indicates a missing URI variable, which is a misconfiguration
func (MissingVariableError) Error ¶
func (mve MissingVariableError) Error() string
func (MissingVariableError) StatusCode ¶
func (mve MissingVariableError) StatusCode() int
type Options ¶
type Options struct { Address string Network string Tls *Tls LogConnectionState bool DisableHTTPKeepAlives bool MaxHeaderBytes int IdleTimeout time.Duration ReadHeaderTimeout time.Duration ReadTimeout time.Duration WriteTimeout time.Duration MaxConcurrentRequests int DisableTCPKeepAlives bool TCPKeepAlivePeriod time.Duration Header http.Header DisableTracking bool DisableHandlerLogger bool }
Options represent the configurable options for creating a server, typically unmarshalled from an external source.
type Releasable ¶ added in v0.3.1
type Releasable interface {
Release()
}
Releasable is implemented by connections returned by Listener that can be marked as freed without closing the connection. Primarily, this is for hijacked connections that calling code no longer wants to count toward the Listener's max connections limit.
type ResponseHeaders ¶
func (ResponseHeaders) ThenFunc ¶
func (rh ResponseHeaders) ThenFunc(next http.HandlerFunc) http.Handler
type ServerIn ¶
type ServerIn struct { fx.In Logger *zap.Logger Unmarshaller config.Unmarshaller Shutdowner fx.Shutdowner Lifecycle fx.Lifecycle // ChainFactory is an optional component which is used to build an alice.Chain for each particular // server based on configuration. Both this field and Chain may be used simultaneously. ChainFactory ChainFactory `optional:"true"` // FieldBuilders is an optional component which is used to create contextual request loggers // for use by http.Handler code. FieldBuilders []sallusthttp.FieldBuilder `optional:"true"` // Tracing will be used to set up tracing instrumentation code. Tracing candlelight.Tracing `optional:"true"` }
ServerIn holds the set of dependencies required to create an HTTP server in the context of a uber/fx application.
type ServerNotConfiguredError ¶ added in v0.0.3
type ServerNotConfiguredError struct {
Key string
}
ServerNotConfiguredError is returned when a required server has no configuration key
func (ServerNotConfiguredError) Error ¶ added in v0.0.3
func (e ServerNotConfiguredError) Error() string
type Tls ¶
type Tls struct { CertificateFile string KeyFile string Mtls *Mtls ServerName string NextProtos []string MinVersion uint16 MaxVersion uint16 }
Tls represents the set of configurable options for a serverside tls.Config associated with a server.
type TlsConn ¶ added in v0.3.1
type TlsConn interface { CloseWrite() error ConnectionState() tls.ConnectionState Handshake() error OCSPResponse() []byte VerifyHostname(string) error }
TlsConn is the behavior of a TLS-specific net.Conn. This interface is implemented by connections returned by Listener if a tls.Config is supplied in the options.
type TrackingWriter ¶
type TrackingWriter interface { http.ResponseWriter http.Hijacker http.Pusher http.Flusher kithttp.StatusCoder // Hijacked returns true if the underlying network connection has been hijacked Hijacked() bool // BytesWritten returns the total bytes written to the response body via Write. BytesWritten() int }
TrackingWriter is a decorated http.ResponseWriter that allows visibility into various items written to the response.
Implementations always implement the optional interfaces. In cases where the underlying http.ResponseWriter does not implement that interface, e.g. http.Pusher, either an error is returned or the method is a no-op.
This interface implements go-kit's StatusCoder to allow client code to narrowly cast to the desired type.
func NewTrackingWriter ¶
func NewTrackingWriter(next http.ResponseWriter) TrackingWriter
NewTrackingWriter decorates an existing response writer and allows visibility into certain items written to the response.
type Unmarshal ¶
type Unmarshal struct { // Key is the viper configuration key containing the server Options Key string // Name is the string that identifies this server from others within the same application. If unset, // the Key is used. Name string // Optional indicates whether the configuration is required. If this field is false (the default), // and there is no such configuration Key, an error is returned. Optional bool // Chain is an optional set of constructors that will decorate the *mux.Router. This field is useful for static // decorators, such as inserting known headers into every response. // // This chain cannot depend on components. In order to leverage dependency injection, create a ChainFactory instead. Chain alice.Chain }
Unmarshal describes how to unmarshal an HTTP server. This type contains all the non-component information related to server instantiation.
func (Unmarshal) Annotated ¶ added in v0.0.3
Annotated is like Unmarshal, save that it emits a named *mux.Router. This method is appropriate for applications with multiple servers. The name of the returned *mux.Router is either the Name field (if set) or the Key field (if Name is empty).
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
SPDX-FileCopyrightText: 2017 Comcast Cable Communications Management, LLC SPDX-License-Identifier: Apache-2.0 Package pprof exposes simple integrations between net/http/pprof, gorilla/mux, and uber/fx.
|
SPDX-FileCopyrightText: 2017 Comcast Cable Communications Management, LLC SPDX-License-Identifier: Apache-2.0 Package pprof exposes simple integrations between net/http/pprof, gorilla/mux, and uber/fx. |