diff --git a/internal/compression/types.go b/internal/compression/types.go index 09b06eb..14442a8 100644 --- a/internal/compression/types.go +++ b/internal/compression/types.go @@ -4,7 +4,7 @@ import "io" //Compressor is a squashfs decompressor interface. Allows for easy compression. type Compressor interface { - Compress(io.Reader) ([]byte, error) + Compress([]byte) ([]byte, error) } //Decompressor is a squashfs decompressor interface. Allows for easy decompression no matter the type of compression. diff --git a/internal/compression/zlib.go b/internal/compression/zlib.go index 2a2fce8..a1842c9 100644 --- a/internal/compression/zlib.go +++ b/internal/compression/zlib.go @@ -22,3 +22,19 @@ func (z *Zlib) Decompress(r io.Reader) ([]byte, error) { } return data.Bytes(), nil } + +//Compress compresses the given data (as a byte array) and returns the compressed data. +func (z *Zlib) Compress(data []byte) ([]byte, error) { + var buf bytes.Buffer + wrt := zlib.NewWriter(&buf) + defer wrt.Close() + _, err := wrt.Write(data) + if err != nil { + return nil, err + } + err = wrt.Flush() + if err != nil { + return nil, err + } + return buf.Bytes(), nil +}