Back to Rustfs

RustFS Zip - Archive Format Detection And Stream Decoding

crates/zip/README.md

1.0.0-rc.32.2 KB
Original Source

RustFS Zip - Archive Format Detection And Stream Decoding

<p align="center"> <strong>Archive format detection and async stream decoders for RustFS object storage</strong> </p> <p align="center"> <a href="https://github.com/rustfs/rustfs/actions/workflows/ci.yml"></a> <a href="https://docs.rustfs.com/">๐Ÿ“– Documentation</a> ยท <a href="https://github.com/rustfs/rustfs/issues">๐Ÿ› Bug Reports</a> ยท <a href="https://github.com/rustfs/rustfs/discussions">๐Ÿ’ฌ Discussions</a> </p>

๐Ÿ“– Overview

RustFS Zip provides the archive primitives used by the RustFS archive extract flow:

  • identify a compression format from an archive extension
  • wrap an async reader in the matching stream decoder
  • carry the shared default archive guardrails

Current Features

  • CompressionFormat::from_extension() for extension-based format detection, including tar-family suffixes such as tgz, tbz2, txz, and tzst
  • CompressionFormat::get_decoder() for async stream decoding of gzip, bzip2, zlib, xz, and zstd, plus a pass-through reader for plain tar
  • ArchiveLimits with the default entry count, entry size, total unpacked size, and path length guardrails

Current Boundaries

  • ZIP has no stream decoder: get_decoder() rejects CompressionFormat::Zip, because ZIP needs central-directory semantics that a forward-only stream cannot provide
  • This crate detects formats and hands back decoders; archive iteration, entry writing, and extraction to disk belong to the caller
  • ArchiveLimits carries the values only; enforcement and the resulting protocol error belong to the caller
  • Archive extraction safety policy remains the responsibility of the RustFS caller for object-store flows

๐Ÿ“š Documentation

For comprehensive documentation, examples, and usage guides, please visit the main RustFS repository.

๐Ÿ“„ License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.