Compare commits

..

No commits in common. "main" and "v0.1.0" have entirely different histories.
main ... v0.1.0

2 changed files with 17 additions and 10 deletions

View file

@ -8,6 +8,10 @@ import (
func main() { func main() {
router := gin.Default() router := gin.Default()
options := ginzip.DefaultOptions()
options.BrotliLevel = ""
options.GzipLevel = ""
ui := router.Group("/", ginzip.New(ginzip.DefaultOptions())) ui := router.Group("/", ginzip.New(ginzip.DefaultOptions()))
ui.GET("/", getTestHandler("Hello World (should be compressed)")) ui.GET("/", getTestHandler("Hello World (should be compressed)"))

View file

@ -33,7 +33,7 @@ type intOptions struct {
GzipLevel int GzipLevel int
BrotliEn bool BrotliEn bool
BrotliLevel int BrotliLevel int
SkipExtensions map[string]bool SkipExtensions []string
} }
// New creates a new Ginzip middleware function. // New creates a new Ginzip middleware function.
@ -136,7 +136,16 @@ func (b *brotliWriter) Encoding() string {
return "br" return "br"
} }
func shouldCompress(req *http.Request, skipExtensions map[string]bool) bool { 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 {
// Dont compress websocket connections // Dont compress websocket connections
if strings.Contains(req.Header.Get("Connection"), "Upgrade") || if strings.Contains(req.Header.Get("Connection"), "Upgrade") ||
strings.Contains(req.Header.Get("Content-Type"), "text/event-stream") { strings.Contains(req.Header.Get("Content-Type"), "text/event-stream") {
@ -148,8 +157,7 @@ func shouldCompress(req *http.Request, skipExtensions map[string]bool) bool {
return true return true
} }
_, doSkip := skipExtensions[extension] return !containsString(skipExtensions, extension)
return !doSkip
} }
func parseLevel(level string, dfault int, min int, max int) (int, bool) { func parseLevel(level string, dfault int, min int, max int) (int, bool) {
@ -185,17 +193,12 @@ func parseOptions(options Options) intOptions {
brotli.DefaultCompression, brotli.BestSpeed, brotli.BestCompression, brotli.DefaultCompression, brotli.BestSpeed, brotli.BestCompression,
) )
exts := map[string]bool{}
for _, ext := range options.SkipExtensions {
exts[ext] = true
}
return intOptions{ return intOptions{
GzipEn: gzipEn, GzipEn: gzipEn,
GzipLevel: gzipLvl, GzipLevel: gzipLvl,
BrotliEn: brEn, BrotliEn: brEn,
BrotliLevel: brLvl, BrotliLevel: brLvl,
SkipExtensions: exts, SkipExtensions: options.SkipExtensions,
} }
} }