45 lines
891 B
Go
45 lines
891 B
Go
package kinesis_consumer
|
|
|
|
import (
|
|
"bytes"
|
|
"compress/gzip"
|
|
"compress/zlib"
|
|
"fmt"
|
|
"io"
|
|
)
|
|
|
|
type decodingFunc func([]byte) ([]byte, error)
|
|
|
|
func processGzip(data []byte) ([]byte, error) {
|
|
zipData, err := gzip.NewReader(bytes.NewReader(data))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer zipData.Close()
|
|
return io.ReadAll(zipData)
|
|
}
|
|
|
|
func processZlib(data []byte) ([]byte, error) {
|
|
zlibData, err := zlib.NewReader(bytes.NewReader(data))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer zlibData.Close()
|
|
return io.ReadAll(zlibData)
|
|
}
|
|
|
|
func processNoOp(data []byte) ([]byte, error) {
|
|
return data, nil
|
|
}
|
|
|
|
func getDecodingFunc(encoding string) (decodingFunc, error) {
|
|
switch encoding {
|
|
case "gzip":
|
|
return processGzip, nil
|
|
case "zlib":
|
|
return processZlib, nil
|
|
case "none", "identity", "":
|
|
return processNoOp, nil
|
|
}
|
|
return nil, fmt.Errorf("unknown content encoding %q", encoding)
|
|
}
|