Skip to content

Instantly share code, notes, and snippets.

@SbstnErhrdt
Last active October 19, 2020 08:24
Show Gist options
  • Save SbstnErhrdt/91b6ef6bf61e79a423c1867fac286f7c to your computer and use it in GitHub Desktop.
Save SbstnErhrdt/91b6ef6bf61e79a423c1867fac286f7c to your computer and use it in GitHub Desktop.
Golang Gzip / Gunzip
import (
"bytes"
"compress/gzip"
)
// Compresses bytes via gzip
func GzipData(src []byte) ([]byte, error) {
// init buffer
var gzipBuffer bytes.Buffer
// init gzip writer
gzipWriter := gzip.NewWriter(&gzipBuffer)
// write gzipped bytes into buffer
_, err := gzipWriter.Write(src)
if err != nil {
return nil, err
}
// close writer
err = gzipWriter.Close()
if err != nil {
return nil, err
}
// return the gzipped bytes
return gzipBuffer.Bytes(), nil
}
// Decompresses gzipped data via gunzip into bytes
func GunzipData(gzipSrc []byte) ([]byte, error) {
// buffer for gzipped data
gzippedBuffer := bytes.NewBuffer(gzipSrc)
// init reader from buffer
gzipReader, err := gzip.NewReader(gzippedBuffer)
if err != nil {
return nil, err
}
// init unzipped buffer
var unzippedBuffer bytes.Buffer
_, err = unzippedBuffer.ReadFrom(gzipReader)
if err != nil {
return nil, err
}
// return the unzipped bytes
return unzippedBuffer.Bytes(), nil
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment