func expandZip()

in lib/mime.go [382:416]


func expandZip(z *zip.Reader) ref.Val {
	var files []map[string]interface{}
	for _, f := range z.File {
		rc, err := f.Open()
		if err != nil {
			return types.NewErr("zip: %s", err)
		}
		var buf bytes.Buffer
		_, err = io.Copy(&buf, rc)
		if err != nil {
			return types.NewErr("zip: %s", err)
		}
		err = rc.Close()
		if err != nil {
			return types.NewErr("zip: %s", err)
		}
		fh := f.FileHeader
		fi := fh.FileInfo()
		files = append(files, map[string]interface{}{
			"Name":     fh.Name,
			"Comment":  fh.Comment,
			"IsDir":    fi.IsDir(),
			"Size":     fi.Size(),
			"NonUTF8":  fh.NonUTF8,
			"Modified": fh.Modified,
			"CRC32":    fh.CRC32,
			"Extra":    fh.Extra,
			"Data":     buf.Bytes(),
		})
	}
	return types.DefaultTypeAdapter.NativeToValue(map[string]interface{}{
		"File":    files,
		"Comment": z.Comment,
	})
}