45 lines
782 B
Go
45 lines
782 B
Go
|
package yatwiki3
|
||
|
|
||
|
import (
|
||
|
"bytes"
|
||
|
"compress/flate"
|
||
|
"io"
|
||
|
)
|
||
|
|
||
|
func gzinflate(gzBody []byte) ([]byte, error) {
|
||
|
gzBodyReader := bytes.NewReader(gzBody)
|
||
|
|
||
|
gzReader := flate.NewReader(gzBodyReader)
|
||
|
defer gzReader.Close()
|
||
|
|
||
|
buffer := bytes.Buffer{}
|
||
|
_, err := io.Copy(&buffer, gzReader)
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
|
||
|
return buffer.Bytes(), nil
|
||
|
}
|
||
|
|
||
|
func gzdeflate(plaintext []byte, level int) ([]byte, error) {
|
||
|
compressedContent := bytes.Buffer{}
|
||
|
|
||
|
zipper, err := flate.NewWriter(&compressedContent, level)
|
||
|
if err != nil {
|
||
|
return nil, err // e.g. bad level
|
||
|
}
|
||
|
defer zipper.Close()
|
||
|
|
||
|
_, err = zipper.Write(plaintext)
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
|
||
|
err = zipper.Close() // flush data
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
|
||
|
return compressedContent.Bytes(), nil
|
||
|
}
|