wal-g
33 строки · 717.0 Байт
1package compression
2
3import (
4"io"
5)
6
7type Compressor interface {
8NewWriter(writer io.Writer) io.WriteCloser
9FileExtension() string
10}
11
12type Decompressor interface {
13Decompress(src io.Reader) (io.ReadCloser, error)
14FileExtension() string
15}
16
17func GetDecompressorByCompressor(compressor Compressor) Decompressor {
18return FindDecompressor(compressor.FileExtension())
19}
20
21func FindDecompressor(fileExtension string) Decompressor {
22// cut the leading '.' (e.g. ".lz4" => "lz4")
23if len(fileExtension) > 0 && fileExtension[0] == '.' {
24fileExtension = fileExtension[1:]
25}
26
27for _, decompressor := range Decompressors {
28if decompressor.FileExtension() == fileExtension {
29return decompressor
30}
31}
32return nil
33}
34