brotlihandler icon indicating copy to clipboard operation
brotlihandler copied to clipboard

Go middleware to compress HTTP responses using Brotli Gzip. Based on https://github.com/gorilla/handlers/blob/master/compress.go

Brotli Handler

This is a tiny Go package which wraps HTTP handlers to transparently compress the response body using Brotli or Gzip, for clients which support it. Although it's usually simpler to leave that to a reverse proxy (like nginx or Varnish), this package is useful when that's undesirable.

This is the clone of Gorilla compress middleware with Brotli support. The most of the code was copied from the original files.

Install

go get -u github.com/sh7dm/brotlihandler

Usage

Call CompressHandler with any handler (an object which implements the http.Handler interface), and it'll return a new handler which compresses the response with Brotli or gzip as a fallback. For example:

package main

import (
	"io"
	"net/http"
	"github.com/sh7dm/brotlihandler"
)

func main() {
	withoutBr := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		w.Header().Set("Content-Type", "text/plain")
		io.WriteString(w, "Hello, World")
	})

	withBr := brotlihandler.CompressHandler(withoutBr)

	http.Handle("/", withBr)
	http.ListenAndServe("0.0.0.0:8000", nil)
}

Documentation

The docs can be found at godoc.org, as usual.

License

BSD 2-Clause.