archive

package
v0.11.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 30, 2025 License: BSD-3-Clause Imports: 23 Imported by: 1

Documentation

Index

Constants

View Source
const GzipMaxLength = math.MaxUint32
View Source
const GzipWrapperLength = 18

Variables

This section is empty.

Functions

This section is empty.

Types

type Archive

type Archive interface {
	Entries() []Entry                 // List of all the archived file entries.
	Entry(path string) (Entry, error) // Gets the entry at the given `path`.
	Close()
}

Represents an immutable archive.

func NewExplodedArchive

func NewExplodedArchive(directory string) Archive

func NewGoZIPArchive

func NewGoZIPArchive(zip *zip.Reader, closer func() error, minimizeReads bool) Archive

type ArchiveFactory

type ArchiveFactory interface {
	Open(ctx context.Context, location url.URL, password string) (Archive, error)                                            // Opens an archive from a location.
	OpenBytes(ctx context.Context, data []byte, password string) (Archive, error)                                            // Opens an archive from a [data] slice.
	OpenReader(ctx context.Context, reader ReaderAtCloser, size int64, password string, minimizeReads bool) (Archive, error) // Opens an archive from a reader.
}

type CompressionMethod added in v0.5.0

type CompressionMethod uint16
const (
	CompressionMethodStore   CompressionMethod = CompressionMethod(zip.Store)
	CompressionMethodDeflate CompressionMethod = CompressionMethod(zip.Deflate)
)

type DefaultArchiveFactory

type DefaultArchiveFactory struct {
	// contains filtered or unexported fields
}

func NewArchiveFactory

func NewArchiveFactory() DefaultArchiveFactory

func (DefaultArchiveFactory) CanOpenScheme added in v0.9.0

func (e DefaultArchiveFactory) CanOpenScheme(scheme url.Scheme) bool

CanOpenScheme implements SchemeSpecificArchiveFactory

func (DefaultArchiveFactory) Open

func (e DefaultArchiveFactory) Open(ctx context.Context, location url.URL, password string) (Archive, error)

Open implements ArchiveFactory

func (DefaultArchiveFactory) OpenBytes

func (e DefaultArchiveFactory) OpenBytes(ctx context.Context, data []byte, password string) (Archive, error)

OpenBytes implements ArchiveFactory

func (DefaultArchiveFactory) OpenReader

func (e DefaultArchiveFactory) OpenReader(ctx context.Context, reader ReaderAtCloser, size int64, password string, minimizeReads bool) (Archive, error)

OpenBytes implements ArchiveFactory

type Entry

type Entry interface {
	Path() string                                              // Absolute path to the entry in the archive.
	Length() uint64                                            // Uncompressed data length.
	CompressedLength() uint64                                  // Compressed data length.
	CompressedAs(compressionMethod CompressionMethod) bool     // Whether the entry is compressed using the given method.
	Read(start int64, end int64) ([]byte, error)               // Reads the whole content of this entry, or a portion when [start] or [end] are specified.
	Stream(w io.Writer, start int64, end int64) (int64, error) // Streams the whole content of this entry to a writer, or a portion when [start] or [end] are specified.

	StreamCompressed(w io.Writer) (int64, error)     // Streams the compressed content of this entry to a writer.
	StreamCompressedGzip(w io.Writer) (int64, error) // Streams the compressed content of this entry to a writer in a GZIP container.
	ReadCompressed() ([]byte, error)                 // Reads the compressed content of this entry.
	ReadCompressedGzip() ([]byte, error)             // Reads the compressed content of this entry inside a GZIP container.
}

Holds an archive entry's metadata.

type GCSArchiveFactory added in v0.9.0

type GCSArchiveFactory struct {
	// contains filtered or unexported fields
}

func NewGCSArchiveFactory added in v0.9.0

func NewGCSArchiveFactory(client *storage.Client, config RemoteArchiveConfig) GCSArchiveFactory

func (GCSArchiveFactory) CanOpen added in v0.9.0

func (e GCSArchiveFactory) CanOpen(scheme url.Scheme) bool

CanOpen implements SchemeSpecificArchiveFactory

func (GCSArchiveFactory) Open added in v0.9.0

func (e GCSArchiveFactory) Open(ctx context.Context, location url.URL, password string) (Archive, error)

Open implements ArchiveFactory

func (GCSArchiveFactory) OpenBytes added in v0.9.0

func (e GCSArchiveFactory) OpenBytes(ctx context.Context, data []byte, password string) (Archive, error)

OpenBytes implements ArchiveFactory

func (GCSArchiveFactory) OpenReader added in v0.9.0

func (e GCSArchiveFactory) OpenReader(ctx context.Context, reader ReaderAtCloser, size int64, password string, minimizeReads bool) (Archive, error)

OpenReader implements ArchiveFactory

type HTTPArchiveFactory added in v0.9.0

type HTTPArchiveFactory struct {
	// contains filtered or unexported fields
}

func NewHTTPArchiveFactory added in v0.9.0

func NewHTTPArchiveFactory(client *http.Client, config RemoteArchiveConfig) HTTPArchiveFactory

func (HTTPArchiveFactory) CanOpen added in v0.9.0

func (e HTTPArchiveFactory) CanOpen(scheme url.Scheme) bool

CanOpen implements SchemeSpecificArchiveFactory

func (HTTPArchiveFactory) Open added in v0.9.0

func (e HTTPArchiveFactory) Open(ctx context.Context, location url.URL, password string) (Archive, error)

Open implements ArchiveFactory

func (HTTPArchiveFactory) OpenBytes added in v0.9.0

func (e HTTPArchiveFactory) OpenBytes(ctx context.Context, data []byte, password string) (Archive, error)

OpenBytes implements ArchiveFactory

func (HTTPArchiveFactory) OpenReader added in v0.9.0

func (e HTTPArchiveFactory) OpenReader(ctx context.Context, reader ReaderAtCloser, size int64, password string, minimizeReads bool) (Archive, error)

OpenReader implements ArchiveFactory

type ReaderAtCloser

type ReaderAtCloser interface {
	io.Closer
	io.ReaderAt
}

type RemoteArchiveConfig added in v0.9.0

type RemoteArchiveConfig struct {
	Timeout             time.Duration // Timeout for remote requests to read from the archive
	CacheAllThreshold   int64         // Threshold for caching the entire ZIP
	CacheSizeThreshold  int64         // Threshold for caching of a single entry in the ZIP
	CacheCountThreshold int64         // Threshold for the number of entries in the ZIP to cache
}

func NewDefaultRemoteArchiveConfig added in v0.9.0

func NewDefaultRemoteArchiveConfig() RemoteArchiveConfig

func (RemoteArchiveConfig) Empty added in v0.9.0

func (c RemoteArchiveConfig) Empty() bool

type RemoteArchiveReader added in v0.9.0

type RemoteArchiveReader interface {
	Size() int64                                                                // Size of the remote archive object
	ReadRange(ctx context.Context, offset, length int64) (io.ReadCloser, error) // Negative length means "read to the end"
}

func RemoteArchiveReaderFromGCS added in v0.9.0

func RemoteArchiveReaderFromGCS(handle *storage.ObjectHandle, attrs *storage.ObjectAttrs) RemoteArchiveReader

func RemoteArchiveReaderFromHTTP added in v0.9.0

func RemoteArchiveReaderFromHTTP(client *http.Client, url url.AbsoluteURL, size int64) RemoteArchiveReader

func RemoteArchiveReaderFromS3 added in v0.9.0

func RemoteArchiveReaderFromS3(client *s3.Client, output s3.HeadObjectOutput, input s3.GetObjectInput) RemoteArchiveReader

type S3ArchiveFactory added in v0.9.0

type S3ArchiveFactory struct {
	// contains filtered or unexported fields
}

func NewS3ArchiveFactory added in v0.9.0

func NewS3ArchiveFactory(client *s3.Client, config RemoteArchiveConfig) S3ArchiveFactory

func (S3ArchiveFactory) CanOpen added in v0.9.0

func (e S3ArchiveFactory) CanOpen(scheme url.Scheme) bool

CanOpen implements SchemeSpecificArchiveFactory

func (S3ArchiveFactory) Open added in v0.9.0

func (e S3ArchiveFactory) Open(ctx context.Context, location url.URL, password string) (Archive, error)

Open implements ArchiveFactory

func (S3ArchiveFactory) OpenBytes added in v0.9.0

func (e S3ArchiveFactory) OpenBytes(ctx context.Context, data []byte, password string) (Archive, error)

OpenBytes implements ArchiveFactory

func (S3ArchiveFactory) OpenReader added in v0.9.0

func (e S3ArchiveFactory) OpenReader(ctx context.Context, reader ReaderAtCloser, size int64, password string, minimizeReads bool) (Archive, error)

OpenReader implements ArchiveFactory

type SchemeSpecificArchiveFactory added in v0.9.0

type SchemeSpecificArchiveFactory interface {
	CanOpen(url.Scheme) bool // Whether this factory can open the given scheme.
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL