gzip.go 641 B

12345678910111213141516171819202122232425262728293031323334353637
  1. package gzip
  2. import (
  3. "bytes"
  4. "compress/gzip"
  5. "io/ioutil"
  6. )
  7. func GZIPEn(data []byte) ([]byte, error) {
  8. var b bytes.Buffer
  9. gz, err := gzip.NewWriterLevel(&b, gzip.BestCompression)
  10. if err != nil {
  11. return nil, err
  12. }
  13. if _, err := gz.Write([]byte(data)); err != nil {
  14. return nil, err
  15. }
  16. if err := gz.Flush(); err != nil {
  17. return nil, err
  18. }
  19. if err := gz.Close(); err != nil {
  20. return nil, err
  21. }
  22. return b.Bytes(), nil
  23. }
  24. func GZIPDe(in []byte) ([]byte, error) {
  25. reader, err := gzip.NewReader(bytes.NewReader(in))
  26. if err != nil {
  27. var out []byte
  28. return out, err
  29. }
  30. defer reader.Close()
  31. return ioutil.ReadAll(reader)
  32. }