terraform/vendor/github.com/newrelic/go-agent/internal/compress.go

51 lines
819 B
Go
Raw Normal View History

package internal
import (
"bytes"
"compress/zlib"
"encoding/base64"
"io/ioutil"
)
func compress(b []byte) ([]byte, error) {
buf := bytes.Buffer{}
w := zlib.NewWriter(&buf)
_, err := w.Write(b)
w.Close()
if nil != err {
return nil, err
}
return buf.Bytes(), nil
}
func uncompress(b []byte) ([]byte, error) {
buf := bytes.NewBuffer(b)
r, err := zlib.NewReader(buf)
if nil != err {
return nil, err
}
defer r.Close()
return ioutil.ReadAll(r)
}
func compressEncode(b []byte) (string, error) {
compressed, err := compress(b)
if nil != err {
return "", err
}
return base64.StdEncoding.EncodeToString(compressed), nil
}
func uncompressDecode(s string) ([]byte, error) {
decoded, err := base64.StdEncoding.DecodeString(s)
if nil != err {
return nil, err
}
return uncompress(decoded)
}