github.com/xyproto/orbiton/v2@v2.65.12-0.20240516144430-e10a419274ec/gzip.go (about) 1 package main 2 3 import ( 4 "bytes" 5 "compress/gzip" 6 "strings" 7 ) 8 9 // stripGZ removes the trailing ".gz" suffix 10 func stripGZ(filename string) string { 11 return strings.TrimSuffix(filename, ".gz") 12 } 13 14 // gUnzipData uncompressed gzip data 15 func gUnzipData(data []byte) ([]byte, error) { 16 b := bytes.NewBuffer(data) 17 r, err := gzip.NewReader(b) 18 if err != nil { 19 return nil, err 20 } 21 defer r.Close() 22 23 var resB bytes.Buffer 24 if _, err = resB.ReadFrom(r); err != nil { 25 return nil, err 26 } 27 return resB.Bytes(), nil 28 } 29 30 // gZipData compresses data with gzip 31 func gZipData(data []byte) ([]byte, error) { 32 var b bytes.Buffer 33 gz := gzip.NewWriter(&b) 34 defer gz.Close() 35 36 if _, err := gz.Write(data); err != nil { 37 return nil, err 38 } 39 if err := gz.Flush(); err != nil { 40 return nil, err 41 } 42 if err := gz.Close(); err != nil { 43 return nil, err 44 } 45 return b.Bytes(), nil 46 }