Last active
October 19, 2020 08:24
-
-
Save SbstnErhrdt/91b6ef6bf61e79a423c1867fac286f7c to your computer and use it in GitHub Desktop.
Golang Gzip / Gunzip
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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