diff options
Diffstat (limited to 'src/dict2rest/deflate.go')
| -rw-r--r-- | src/dict2rest/deflate.go | 40 |
1 files changed, 0 insertions, 40 deletions
diff --git a/src/dict2rest/deflate.go b/src/dict2rest/deflate.go deleted file mode 100644 index 3bd0ed8..0000000 --- a/src/dict2rest/deflate.go +++ /dev/null @@ -1,40 +0,0 @@ -package main - -import ( - "compress/flate" - "io" - "net/http" - "strings" - "github.com/alexedwards/stack" -) - -// DEFLATE Compression -type flateResponseWriter struct { - io.Writer - http.ResponseWriter -} - -func (w flateResponseWriter) Write(b []byte) (int, error) { - return w.Writer.Write(b) -} - -func Deflate(ctx *stack.Context, next http.Handler) http.Handler { - return http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { - if !strings.Contains(req.Header.Get("Accept-Encoding"), "deflate") || - ctx.Get("handled").(bool) == true { - next.ServeHTTP(w, req) - return - } - fl, err := flate.NewWriter(w, -1) // Use default compression level - if err != nil { - next.ServeHTTP(w, req) - return - } - w.Header().Set("Content-Encoding", "deflate") - defer fl.Close() - flw := flateResponseWriter{Writer: fl, ResponseWriter: w} - ctx.Put("handled", true) - defer ctx.Delete("handled") - next.ServeHTTP(flw, req) - }) -} |
