chore: support zip filetypes in the file cache (#18750)

This commit is contained in:
Steven Masley
2025-07-08 15:46:39 -06:00
committed by GitHub
parent 79d1465e23
commit 1319ae293f
4 changed files with 46 additions and 9 deletions
+13 -2
View File
@@ -303,10 +303,21 @@ func fetch(store database.Store, fileID uuid.UUID) (CacheEntryValue, error) {
return CacheEntryValue{}, xerrors.Errorf("failed to read file from database: %w", err)
}
content := bytes.NewBuffer(file.Data)
var files fs.FS
switch file.Mimetype {
case "application/zip", "application/x-zip-compressed":
files, err = archivefs.FromZipReader(bytes.NewReader(file.Data), int64(len(file.Data)))
if err != nil {
return CacheEntryValue{}, xerrors.Errorf("failed to read zip file: %w", err)
}
default:
// Assume '"application/x-tar"' as the default mimetype.
files = archivefs.FromTarReader(bytes.NewBuffer(file.Data))
}
return CacheEntryValue{
Object: file.RBACObject(),
FS: archivefs.FromTarReader(content),
FS: files,
Size: int64(len(file.Data)),
}, nil
}