Use rc-zip-sync for zip extraction (#1942)

* Use rc-zip-sync for zip extraction

Fixed #1080

In this commit, binstalk-downloader is updated to
- first download the zip into a temporary file, since
  there is no correct way to extract zip from a stream.
- then use rc-zip-sync to read from the zip and extract
  it to filesystem.

Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com>

* Fix returned `ExtractedFiles` in `do_extract_zip`

Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com>

* Fix clippy in zip_extraction.rs

Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com>

---------

Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com>
Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com>
This commit is contained in:
Jiahao XU 2024-10-30 10:16:54 +10:00 committed by GitHub
parent c16790a16f
commit e704abe7ac
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 406 additions and 327 deletions

View file

@ -18,23 +18,22 @@ async-compression = { version = "0.4.4", features = [
"bzip2",
"tokio",
] }
async_zip = { version = "0.0.17", features = [
"deflate",
"deflate64",
"bzip2",
"lzma",
"zstd",
"xz",
"tokio",
] }
binstalk-types = { version = "0.9.0", path = "../binstalk-types" }
bytes = "1.4.0"
bzip2 = "0.4.4"
cfg-if = "1"
compact_str = "0.8.0"
flate2 = { version = "1.0.28", default-features = false }
futures-util = "0.3.30"
futures-io = "0.3.30"
httpdate = "1.0.2"
rc-zip-sync = { version = "4.2.3", features = [
"deflate",
"bzip2",
"deflate64",
"lzma",
"zstd",
] }
reqwest = { version = "0.12.5", features = [
"http2",
"stream",