stream

package
v2.0.0-alpha.1 Latest Latest
Warning

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

Go to latest
Published: Jan 7, 2021 License: Apache-2.0 Imports: 4 Imported by: 0

Documentation

Overview

Package stream provides http.Handler middleware that passes-through the entire request

Stream works around several limitations caused by buffering implementations, but also introduces certain risks.

Workarounds for buffering limitations: 1. Streaming really large chunks of data (large file transfers, or streaming videos, etc.)

2. Streaming (chunking) sparse data. For example, an implementation might send a health check or a heart beat over a long-lived connection. This does not play well with buffering.

Risks: 1. Connections could survive for very long periods of time.

2. There is no easy way to enforce limits on size/time of a connection.

Examples of a streaming middleware:

// sample HTTP handler
handler := http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
  w.Write([]byte("hello"))
})

// Stream will literally pass through to the next handler without ANY buffering
// or validation of the data.
stream.New(handler)

Index

Constants

View Source
const (
	// DefaultMaxBodyBytes No limit by default
	DefaultMaxBodyBytes = -1
)

Variables

This section is empty.

Functions

func Debug

func Debug(d utils.LoggerDebugFunc) optSetter

Debug defines if we should generate debug logs. It will still depends on the logger to print them or not.

func IsValidExpression

func IsValidExpression(expr string) bool

IsValidExpression check if it's a valid expression

func Logger

func Logger(l utils.Logger) optSetter

Logger defines the logger the streamer will use.

Types

type Stream

type Stream struct {
	// contains filtered or unexported fields
}

Stream is responsible for buffering requests and responses It buffers large requests and responses to disk,

func New

func New(next http.Handler, setters ...optSetter) (*Stream, error)

New returns a new streamer middleware. New() function supports optional functional arguments

func (*Stream) ServeHTTP

func (s *Stream) ServeHTTP(w http.ResponseWriter, req *http.Request)

func (*Stream) Wrap

func (s *Stream) Wrap(next http.Handler) error

Wrap sets the next handler to be called by stream handler.

Jump to

Keyboard shortcuts

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