gzip.go 509 B

12345678910111213141516171819202122232425262728293031323334
  1. package codec
  2. import (
  3. "bytes"
  4. "compress/gzip"
  5. "io"
  6. )
  7. const unzipLimit = 100 * 1024 * 1024 // 100MB
  8. func Gzip(bs []byte) []byte {
  9. var b bytes.Buffer
  10. w := gzip.NewWriter(&b)
  11. w.Write(bs)
  12. w.Close()
  13. return b.Bytes()
  14. }
  15. func Gunzip(bs []byte) ([]byte, error) {
  16. r, err := gzip.NewReader(bytes.NewBuffer(bs))
  17. if err != nil {
  18. return nil, err
  19. }
  20. defer r.Close()
  21. var c bytes.Buffer
  22. if _, err = io.Copy(&c, io.LimitReader(r, unzipLimit)); err != nil {
  23. return nil, err
  24. }
  25. return c.Bytes(), nil
  26. }