feat: initial goget release — modern IPv6-first download utility
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
//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()) }
|
||||
Reference in New Issue
Block a user