From da4a4d32869b5e120c81150c08aeff3c611665e0 Mon Sep 17 00:00:00 2001 From: Thanatat Tamtan Date: Sat, 10 Jun 2023 18:08:48 +0700 Subject: [PATCH] compress: allow config level (#145) * compress: allow config level * refactor --- pkg/compress/br.go | 15 ++++++++++++--- pkg/compress/compress.go | 2 +- pkg/compress/gzip.go | 6 +++++- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/pkg/compress/br.go b/pkg/compress/br.go index ee7002d..0601288 100644 --- a/pkg/compress/br.go +++ b/pkg/compress/br.go @@ -10,9 +10,17 @@ import ( // Br creates new brotli compress middleware func Br() *Compress { + return BrWithOption(cbrotli.WriterOptions{Quality: 4}) +} + +func BrWithQuality(quality int) *Compress { + return BrWithOption(cbrotli.WriterOptions{Quality: quality}) +} + +func BrWithOption(opt cbrotli.WriterOptions) *Compress { return &Compress{ New: func() Compressor { - return &brWriter{quality: 4} + return &brWriter{opt: &opt} }, Encoding: "br", Vary: defaultCompressVary, @@ -22,10 +30,11 @@ func Br() *Compress { } type brWriter struct { - quality int *cbrotli.Writer + + opt *cbrotli.WriterOptions } func (w *brWriter) Reset(p io.Writer) { - w.Writer = cbrotli.NewWriter(p, cbrotli.WriterOptions{Quality: w.quality}) + w.Writer = cbrotli.NewWriter(p, *w.opt) } diff --git a/pkg/compress/compress.go b/pkg/compress/compress.go index 10971fb..33a7d6e 100644 --- a/pkg/compress/compress.go +++ b/pkg/compress/compress.go @@ -43,7 +43,7 @@ func (m Compress) ServeHandler(h http.Handler) http.Handler { } pool := &sync.Pool{ - New: func() interface{} { + New: func() any { return m.New() }, } diff --git a/pkg/compress/gzip.go b/pkg/compress/gzip.go index 11dd987..414ef70 100644 --- a/pkg/compress/gzip.go +++ b/pkg/compress/gzip.go @@ -7,9 +7,13 @@ import ( // Gzip creates new gzip compress middleware func Gzip() *Compress { + return GzipWithLevel(gzip.DefaultCompression) +} + +func GzipWithLevel(level int) *Compress { return &Compress{ New: func() Compressor { - g, err := gzip.NewWriterLevel(io.Discard, gzip.DefaultCompression) + g, err := gzip.NewWriterLevel(io.Discard, level) if err != nil { panic(err) }