commands/helpers/archive/ziplegacy/zip_legacy_extractor.go (23 lines of code) (raw):
package ziplegacy
import (
"archive/zip"
"context"
"io"
"gitlab.com/gitlab-org/gitlab-runner/commands/helpers/archive"
"gitlab.com/gitlab-org/gitlab-runner/helpers/archives"
)
// extractor is a zip stream extractor.
type extractor struct {
r io.ReaderAt
size int64
dir string
}
// NewExtractor returns a new Zip Extractor.
func NewExtractor(r io.ReaderAt, size int64, dir string) (archive.Extractor, error) {
return &extractor{r: r, size: size, dir: dir}, nil
}
// Extract extracts files from the reader to the directory passed to
// NewZipExtractor.
func (e *extractor) Extract(ctx context.Context) error {
zr, err := zip.NewReader(e.r, e.size)
if err != nil {
return err
}
return archives.ExtractZipArchive(zr)
}