gzip

package
v0.8.2 Latest Latest
Warning

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

Go to latest
Published: Feb 25, 2016 License: Apache-2.0 Imports: 11 Imported by: 0

Documentation

Overview

Package gzip provides a simple middleware layer that performs gzip compression on the response.

Index

Constants

View Source
const ExtWildCard = "*"

ExtWildCard is the wildcard for extensions.

Variables

This section is empty.

Functions

This section is empty.

Types

type Config added in v0.7.2

type Config struct {
	RequestFilters  []RequestFilter
	ResponseFilters []ResponseFilter
	Level           int // Compression level
}

Config holds the configuration for Gzip middleware

type ExtFilter added in v0.7.2

type ExtFilter struct {
	// Exts is the file name extensions to accept
	Exts Set
}

ExtFilter is RequestFilter for file name extensions.

func DefaultExtFilter added in v0.7.3

func DefaultExtFilter() ExtFilter

DefaultExtFilter creates an ExtFilter with default extensions.

func (ExtFilter) ShouldCompress added in v0.7.2

func (e ExtFilter) ShouldCompress(r *http.Request) bool

ShouldCompress checks if the request file extension matches any of the registered extensions. It returns true if the extension is found and false otherwise.

type Gzip

type Gzip struct {
	Next    middleware.Handler
	Configs []Config
}

Gzip is a middleware type which gzips HTTP responses. It is imperative that any handler which writes to a gzipped response specifies the Content-Type, otherwise some clients will assume application/x-gzip and try to download a file.

func (Gzip) ServeHTTP

func (g Gzip) ServeHTTP(w http.ResponseWriter, r *http.Request) (int, error)

ServeHTTP serves a gzipped response if the client supports it.

type LengthFilter added in v0.8.1

type LengthFilter int64

LengthFilter is ResponseFilter for minimum content length.

func (LengthFilter) ShouldCompress added in v0.8.1

func (l LengthFilter) ShouldCompress(w http.ResponseWriter) bool

ShouldCompress returns if content length is greater than or equals to minimum length.

type PathFilter added in v0.7.2

type PathFilter struct {
	// IgnoredPaths is the paths to ignore
	IgnoredPaths Set
}

PathFilter is RequestFilter for request path.

func (PathFilter) ShouldCompress added in v0.7.2

func (p PathFilter) ShouldCompress(r *http.Request) bool

ShouldCompress checks if the request path matches any of the registered paths to ignore. It returns false if an ignored path is found and true otherwise.

type RequestFilter added in v0.8.1

type RequestFilter interface {
	// ShouldCompress tells if gzip compression
	// should be done on the request.
	ShouldCompress(*http.Request) bool
}

RequestFilter determines if a request should be gzipped.

type ResponseFilter added in v0.8.1

type ResponseFilter interface {
	ShouldCompress(http.ResponseWriter) bool
}

ResponseFilter determines if the response should be gzipped.

type ResponseFilterWriter added in v0.8.1

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

ResponseFilterWriter validates ResponseFilters. It writes gzip compressed data if ResponseFilters are satisfied or uncompressed data otherwise.

func NewResponseFilterWriter added in v0.8.1

func NewResponseFilterWriter(filters []ResponseFilter, gz *gzipResponseWriter) *ResponseFilterWriter

NewResponseFilterWriter creates and initializes a new ResponseFilterWriter.

func (ResponseFilterWriter) Hijack added in v0.8.2

func (w ResponseFilterWriter) Hijack() (net.Conn, *bufio.ReadWriter, error)

Hijack implements http.Hijacker. It simply wraps the underlying ResponseWriter's Hijack method if there is one, or returns an error.

func (*ResponseFilterWriter) Write added in v0.8.1

func (r *ResponseFilterWriter) Write(b []byte) (int, error)

Write wraps underlying Write method and compresses if filters are satisfied

func (*ResponseFilterWriter) WriteHeader added in v0.8.1

func (r *ResponseFilterWriter) WriteHeader(code int)

WriteHeader wraps underlying WriteHeader method and compresses if filters are satisfied.

type Set added in v0.7.2

type Set map[string]struct{}

Set stores distinct strings.

func (Set) Add added in v0.7.2

func (s Set) Add(value string)

Add adds an element to the set.

func (Set) Contains added in v0.7.2

func (s Set) Contains(value string) bool

Contains check if the set contains value.

func (Set) ContainsFunc added in v0.7.2

func (s Set) ContainsFunc(f func(string) bool) bool

ContainsFunc is similar to Contains. It iterates all the elements in the set and passes each to f. It returns true on the first call to f that returns true and false otherwise.

func (Set) Remove added in v0.7.2

func (s Set) Remove(value string)

Remove removes an element from the set.

Jump to

Keyboard shortcuts

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