Skip to content

Commit

Permalink
Optimize compression detection
Browse files Browse the repository at this point in the history
(cherry picked from commit 0a3437f)
  • Loading branch information
LFrobeen committed Nov 4, 2022
1 parent c211a61 commit 2958f30
Showing 1 changed file with 5 additions and 16 deletions.
21 changes: 5 additions & 16 deletions internal/compression/compression.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,30 +19,19 @@ const (

type Opener = func() (io.ReadCloser, error)

func CheckCompression(opener Opener, checker func(reader io.Reader) (bool, error)) (bool, error) {
func GetCompression(opener Opener) (Compression, error) {
rc, err := opener()
if err != nil {
return false, err
}
defer rc.Close()

return checker(rc)
}

func GetCompression(opener Opener) (Compression, error) {
if compressed, err := CheckCompression(opener, gzip.Is); err != nil {
return None, err
} else if compressed {
return GZip, nil
}
defer rc.Close()

if compressed, err := CheckCompression(opener, zstd.Is); err != nil {
compression, _, err := PeekCompression(rc)
if err != nil {
return None, err
} else if compressed {
return ZStd, nil
}

return None, nil
return compression, nil
}

// PeekReader is an io.Reader that also implements Peek a la bufio.Reader.
Expand Down

0 comments on commit 2958f30

Please sign in to comment.