github.com/lingyao2333/mo-zero@v1.4.1/core/codec/gzip.go (about) 1 package codec 2 3 import ( 4 "bytes" 5 "compress/gzip" 6 "io" 7 ) 8 9 const unzipLimit = 100 * 1024 * 1024 // 100MB 10 11 // Gzip compresses bs. 12 func Gzip(bs []byte) []byte { 13 var b bytes.Buffer 14 15 w := gzip.NewWriter(&b) 16 w.Write(bs) 17 w.Close() 18 19 return b.Bytes() 20 } 21 22 // Gunzip uncompresses bs. 23 func Gunzip(bs []byte) ([]byte, error) { 24 r, err := gzip.NewReader(bytes.NewBuffer(bs)) 25 if err != nil { 26 return nil, err 27 } 28 defer r.Close() 29 30 var c bytes.Buffer 31 if _, err = io.Copy(&c, io.LimitReader(r, unzipLimit)); err != nil { 32 return nil, err 33 } 34 35 return c.Bytes(), nil 36 }