diff options
author | Antoni Sawicki <tenox@google.com> | 2022-11-29 02:22:33 -0800 |
---|---|---|
committer | Antoni Sawicki <tenox@google.com> | 2022-11-29 02:22:33 -0800 |
commit | 79096a61b40513640ea8049e4a26ab418d3f15d2 (patch) | |
tree | 61a933f2226e84a7413e99f3bce6cb45d22e2551 | |
parent | 5b0d716d023edfef5bd75cf0f9b36507d6d3a81b (diff) | |
download | wfm-79096a61b40513640ea8049e4a26ab418d3f15d2.tar.gz |
user archiverFS for zip files
-rw-r--r-- | fileio.go | 4 | ||||
-rw-r--r-- | formats.go | 25 |
2 files changed, 1 insertions, 28 deletions
@@ -39,11 +39,9 @@ func (r *wfmRequest) dispFile() { // expensive file handlers switch ext { - case ".zip": - listZip(r.w, fp, r.fs) case ".7z": list7z(r.w, fp, r.fs) - case ".tar", ".rar", ".gz", ".bz2", ".xz", ".tgz", ".tbz2", ".txz": + case ".zip", ".rar", ".tar", ".gz", ".bz2", ".xz", ".tgz", ".tbz2", ".txz", ".br", ".tbr": listArchive(r.w, fp, r.fs) case ".iso": listIso(r.w, fp, r.fs) @@ -1,7 +1,6 @@ package main import ( - "archive/zip" "fmt" "io" "io/fs" @@ -65,30 +64,6 @@ func gourl(w http.ResponseWriter, fp string, wfs afero.Fs) { redirect(w, url) } -func listZip(w http.ResponseWriter, fp string, wfs afero.Fs) { - f, err := wfs.Open(fp) - if err != nil { - htErr(w, "unzip: open: ", err) - return - } - s, err := f.Stat() - if err != nil { - htErr(w, "unzip: stat: ", err) - return - } - defer f.Close() - z, err := zip.NewReader(f, s.Size()) - if err != nil { - htErr(w, "unzip: reader: ", err) - return - } - w.Header().Set("Content-Type", "text/plain") - w.Header().Set("Cache-Control", *cacheCtl) - for _, f := range z.File { - fmt.Fprintf(w, "%v %v\n", f.Name, humanize.Bytes(f.UncompressedSize64)) - } -} - func listIso(w http.ResponseWriter, fp string, wfs afero.Fs) { // TODO: recursive file list f, err := wfs.Open(fp) |