Skip to content

Commit 1b7e801

Browse files
committed
feat: improve compression level validation and default handling
- Add a function to validate the compression level - Set default compression level to 4 if the provided level is invalid Signed-off-by: appleboy <[email protected]>
1 parent 9ab9665 commit 1b7e801

File tree

1 file changed

+11
-0
lines changed

1 file changed

+11
-0
lines changed

handler.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,12 @@ type gzipHandler struct {
2323
gzPool sync.Pool
2424
}
2525

26+
func isCompressionLevelValid(level int) bool {
27+
return level == gzip.DefaultCompression ||
28+
level == gzip.NoCompression ||
29+
(level >= gzip.BestSpeed && level <= gzip.BestCompression)
30+
}
31+
2632
func newGzipHandler(level int, opts ...Option) *gzipHandler {
2733
cfg := &config{
2834
excludedExtensions: DefaultExcludedExtentions,
@@ -33,6 +39,11 @@ func newGzipHandler(level int, opts ...Option) *gzipHandler {
3339
o.apply(cfg)
3440
}
3541

42+
if !isCompressionLevelValid(level) {
43+
// For web content, level 4 seems to be a sweet spot.
44+
level = 4
45+
}
46+
3647
handler := &gzipHandler{
3748
config: cfg,
3849
gzPool: sync.Pool{

0 commit comments

Comments
 (0)