37 lines
756 B
Go
37 lines
756 B
Go
// gzip-util.go
|
|
package utils
|
|
|
|
import (
|
|
"bufio"
|
|
"compress/gzip"
|
|
"fmt"
|
|
"io"
|
|
"strings"
|
|
)
|
|
|
|
const GZIP_SUFFIX = ".gz"
|
|
|
|
func CreateGzipReader(in io.Reader) (reader *bufio.Reader, err error) {
|
|
inflate, err := gzip.NewReader(in)
|
|
if err != nil {
|
|
fmt.Errorf("Can't inflate gzipped input stream: %v", err)
|
|
} else {
|
|
reader = bufio.NewReader(inflate)
|
|
}
|
|
return
|
|
}
|
|
|
|
func CreateGzipFile(in io.Reader, fileName string) (reader *bufio.Reader, err error) {
|
|
if len(fileName) > 0 && strings.HasSuffix(fileName, GZIP_SUFFIX) {
|
|
inflate, err := gzip.NewReader(in)
|
|
if err != nil {
|
|
fmt.Errorf("Can't inflate gzipped input stream %#v: %v", fileName, err)
|
|
} else {
|
|
reader = bufio.NewReader(inflate)
|
|
}
|
|
} else {
|
|
reader = bufio.NewReader(in)
|
|
}
|
|
return
|
|
}
|