From 32a105e4620c57bb034bb163e0ed68324edcfc27 Mon Sep 17 00:00:00 2001 From: Theta-Dev Date: Fri, 17 Dec 2021 14:18:40 +0100 Subject: [PATCH 1/2] use map for ignored extensions --- ginzip.go | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/ginzip.go b/ginzip.go index a3fa2d7..965ece6 100644 --- a/ginzip.go +++ b/ginzip.go @@ -33,7 +33,7 @@ type intOptions struct { GzipLevel int BrotliEn bool BrotliLevel int - SkipExtensions []string + SkipExtensions map[string]bool } // New creates a new Ginzip middleware function. @@ -136,16 +136,7 @@ func (b *brotliWriter) Encoding() string { return "br" } -func containsString(s []string, e string) bool { - for _, a := range s { - if a == e { - return true - } - } - return false -} - -func shouldCompress(req *http.Request, skipExtensions []string) bool { +func shouldCompress(req *http.Request, skipExtensions map[string]bool) bool { // Dont compress websocket connections if strings.Contains(req.Header.Get("Connection"), "Upgrade") || strings.Contains(req.Header.Get("Content-Type"), "text/event-stream") { @@ -157,7 +148,8 @@ func shouldCompress(req *http.Request, skipExtensions []string) bool { return true } - return !containsString(skipExtensions, extension) + _, doSkip := skipExtensions[extension] + return !doSkip } func parseLevel(level string, dfault int, min int, max int) (int, bool) { @@ -193,12 +185,17 @@ func parseOptions(options Options) intOptions { brotli.DefaultCompression, brotli.BestSpeed, brotli.BestCompression, ) + exts := map[string]bool{} + for _, ext := range options.SkipExtensions { + exts[ext] = true + } + return intOptions{ GzipEn: gzipEn, GzipLevel: gzipLvl, BrotliEn: brEn, BrotliLevel: brLvl, - SkipExtensions: options.SkipExtensions, + SkipExtensions: exts, } } From 05a4d6236070960d511efe96991d25d6ce1af5eb Mon Sep 17 00:00:00 2001 From: Theta-Dev Date: Fri, 17 Dec 2021 19:08:08 +0100 Subject: [PATCH 2/2] remove dead code from example --- example/main.go | 4 ---- 1 file changed, 4 deletions(-) diff --git a/example/main.go b/example/main.go index dcd7962..8e2a2f4 100644 --- a/example/main.go +++ b/example/main.go @@ -8,10 +8,6 @@ import ( func main() { router := gin.Default() - options := ginzip.DefaultOptions() - options.BrotliLevel = "" - options.GzipLevel = "" - ui := router.Group("/", ginzip.New(ginzip.DefaultOptions())) ui.GET("/", getTestHandler("Hello World (should be compressed)"))