From 8f4e7f7fdc87e1034417f9d3494441262e4748ff Mon Sep 17 00:00:00 2001 From: Matthew Holt Date: Sat, 28 Mar 2015 16:47:41 -0600 Subject: [PATCH] Refactored gzip middleware to return errors --- middleware/gzip/gzip.go | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/middleware/gzip/gzip.go b/middleware/gzip/gzip.go index 111b5e3ea..cf3457f5b 100644 --- a/middleware/gzip/gzip.go +++ b/middleware/gzip/gzip.go @@ -13,28 +13,27 @@ import ( // Gzip is a http.Handler middleware type which gzips HTTP responses. type Gzip struct { - Next http.HandlerFunc + Next middleware.HandlerFunc } // New creates a new gzip middleware instance. func New(c middleware.Controller) (middleware.Middleware, error) { - return func(next http.HandlerFunc) http.HandlerFunc { + return func(next middleware.HandlerFunc) middleware.HandlerFunc { gz := Gzip{Next: next} return gz.ServeHTTP }, nil } // ServeHTTP serves a gzipped response if the client supports it. -func (g Gzip) ServeHTTP(w http.ResponseWriter, r *http.Request) { +func (g Gzip) ServeHTTP(w http.ResponseWriter, r *http.Request) (int, error) { if !strings.Contains(r.Header.Get("Accept-Encoding"), "gzip") { - g.Next(w, r) - return + return g.Next(w, r) } w.Header().Set("Content-Encoding", "gzip") gzipWriter := gzip.NewWriter(w) defer gzipWriter.Close() gz := gzipResponseWriter{Writer: gzipWriter, ResponseWriter: w} - g.Next(gz, r) + return g.Next(gz, r) } // gzipResponeWriter wraps the underlying Write method