stream

package
v2.0.0 Latest Latest
Warning

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

Go to latest
Published: Sep 27, 2023 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 = -1

DefaultMaxBodyBytes No limit by default.

Variables

This section is empty.

Functions

func IsValidExpression

func IsValidExpression(expr string) bool

IsValidExpression check if it's a valid expression.

Types

type Option

type Option func(s *Stream) error

Option represents an option you can pass to New.

func Logger

func Logger(l utils.Logger) Option

Logger defines the logger used by Stream.

func Verbose

func Verbose(verbose bool) Option

Verbose additional debug information.

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 ...Option) (*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