Version: v0.8.1 Latest Latest

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

Go to latest
Published: Jan 12, 2016 License: Apache-2.0 Imports: 9 Imported by: 0



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



View Source
const ExtWildCard = "*"

ExtWildCard is the wildcard for extensions.


This section is empty.


This section is empty.


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) 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
t or T : Toggle theme light dark auto
y or Y : Canonical URL