github.com/bingoohuang/gg@v0.0.0-20240325092523-45da7dee9335/pkg/gz/gz.go (about)

     1  package gz
     2  
     3  import (
     4  	"bytes"
     5  	"compress/gzip"
     6  )
     7  
     8  func Gzip(data []byte) ([]byte, error) {
     9  	var b bytes.Buffer
    10  	gz := gzip.NewWriter(&b)
    11  	if _, err := gz.Write(data); err != nil {
    12  		return nil, err
    13  	}
    14  
    15  	if err := gz.Flush(); err != nil {
    16  		return nil, err
    17  	}
    18  
    19  	if err := gz.Close(); err != nil {
    20  		return nil, err
    21  	}
    22  
    23  	return b.Bytes(), nil
    24  }
    25  
    26  func Ungzip(data []byte) ([]byte, error) {
    27  	b := bytes.NewBuffer(data)
    28  	r, err := gzip.NewReader(b)
    29  	if err != nil {
    30  		return nil, err
    31  	}
    32  
    33  	var resB bytes.Buffer
    34  	if _, err := resB.ReadFrom(r); err != nil {
    35  		return nil, err
    36  	}
    37  
    38  	return resB.Bytes(), nil
    39  }