github.com/bingoohuang/gg@v0.0.0-20240325092523-45da7dee9335/pkg/gz/gz.go (about) 1 package gz 2 3 import ( 4 "bytes" 5 "compress/gzip" 6 ) 7 8 func Gzip(data []byte) ([]byte, error) { 9 var b bytes.Buffer 10 gz := gzip.NewWriter(&b) 11 if _, err := gz.Write(data); err != nil { 12 return nil, err 13 } 14 15 if err := gz.Flush(); err != nil { 16 return nil, err 17 } 18 19 if err := gz.Close(); err != nil { 20 return nil, err 21 } 22 23 return b.Bytes(), nil 24 } 25 26 func Ungzip(data []byte) ([]byte, error) { 27 b := bytes.NewBuffer(data) 28 r, err := gzip.NewReader(b) 29 if err != nil { 30 return nil, err 31 } 32 33 var resB bytes.Buffer 34 if _, err := resB.ReadFrom(r); err != nil { 35 return nil, err 36 } 37 38 return resB.Bytes(), nil 39 }