1
0
mirror of https://github.com/taigrr/arc synced 2025-01-18 04:33:13 -08:00
arc/archive/reader.go
2016-05-24 21:26:50 +09:00

48 lines
803 B
Go

// Copyright (C) 2016 - Will Glozer. All rights reserved.
package archive
import (
"archive/tar"
"compress/gzip"
"io"
)
type Reader struct {
archiver *tar.Reader
compressor *gzip.Reader
archive *Archive
}
func NewReader(r io.Reader, key []byte) (*Reader, error) {
archive, err := NewArchiveFromReader(r, key)
if err != nil {
return nil, err
}
compressor, err := gzip.NewReader(archive)
if err != nil {
return nil, err
}
archiver := tar.NewReader(compressor)
return &Reader{
archiver: archiver,
compressor: compressor,
archive: archive,
}, nil
}
func (r *Reader) Next() (*tar.Header, error) {
return r.archiver.Next()
}
func (r *Reader) Read(b []byte) (int, error) {
return r.archiver.Read(b)
}
func (r *Reader) Verify() bool {
return r.archive.Verify()
}