46 lines
1.2 KiB
Go
46 lines
1.2 KiB
Go
//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()) }
|