Files
goget/internal/compression/flate.go
T

46 lines
1.2 KiB
Go
Raw Permalink Normal View History

//go:build linux || freebsd
// +build linux freebsd
package compression
import (
"compress/flate"
"fmt"
"io"
)
type flateDecompressor struct{ *BaseDecompressor }
func NewFlateDecompressor() *flateDecompressor {
return &flateDecompressor{NewBaseDecompressor("flate", []string{}, []string{".deflate", ".fl"})}
}
// ✅ Oprava: flate.NewReader returns io.ReadCloser, ale my returnsme io.Reader
func (f *flateDecompressor) Reader(r io.Reader) (io.ReadCloser, error) {
return flate.NewReader(r), nil
}
type flateCompressor struct {
name string
level int
}
func NewFlateCompressor() *flateCompressor {
return &flateCompressor{name: "flate", level: flate.DefaultCompression}
}
func NewFlateCompressorWithLevel(level int) (*flateCompressor, error) {
if level < flate.HuffmanOnly || level > flate.BestCompression {
return nil, fmt.Errorf("invalid compression level: %d (must be %d-%d)",
level, flate.HuffmanOnly, flate.BestCompression)
}
return &flateCompressor{name: "flate", level: level}, nil
}
func (f *flateCompressor) Name() string { return f.name }
func (f *flateCompressor) Writer(w io.Writer) (io.WriteCloser, error) {
return flate.NewWriter(w, f.level)
}
func init() { Register(NewFlateDecompressor()) }