diff --git a/internal/vaultik/info.go b/internal/vaultik/info.go index 59d41fc..0d9476b 100644 --- a/internal/vaultik/info.go +++ b/internal/vaultik/info.go @@ -9,7 +9,6 @@ import ( "github.com/dustin/go-humanize" "sneak.berlin/go/vaultik/internal/log" - "sneak.berlin/go/vaultik/internal/snapshot" ) // ShowInfo displays system and configuration information @@ -312,20 +311,12 @@ func (v *Vaultik) collectReferencedBlobsFromManifests( referencedBlobs := make(map[string]int64) for _, snapshotID := range snapshotIDs { - manifestKey := fmt.Sprintf("metadata/%s/manifest.json.zst", snapshotID) - - reader, err := v.Storage.Get(v.ctx, manifestKey) + // snapshotIDs here are remote keys, taken straight from the + // metadata/ listing. downloadManifestByKey is the single reader + // for remote manifests; see its doc comment. + manifest, err := v.downloadManifestByKey(snapshotID) if err != nil { - log.Warn("Failed to get manifest", "snapshot", snapshotID, "error", err) - - continue - } - - manifest, err := snapshot.DecodeManifest(reader) - _ = reader.Close() - - if err != nil { - log.Warn("Failed to decode manifest", "snapshot", snapshotID, "error", err) + log.Warn("Failed to read manifest", "snapshot", snapshotID, "error", err) continue } diff --git a/internal/vaultik/verify.go b/internal/vaultik/verify.go index 07d1e01..38be849 100644 --- a/internal/vaultik/verify.go +++ b/internal/vaultik/verify.go @@ -141,30 +141,21 @@ func (v *Vaultik) loadVerificationData( // All remote paths use the hashed key derived from the human ID. remoteKey := snapshot.RemoteSnapshotKey(snapshotID) - // Download manifest - manifestPath := fmt.Sprintf("metadata/%s/manifest.json.zst", remoteKey) - log.Info("Downloading manifest", "path", manifestPath) + // Download manifest. downloadManifestByKey is the single reader for + // remote manifests; see its doc comment. + log.Info("Downloading manifest", "remote_key", remoteKey) if !opts.JSON { v.stdoutf("Downloading manifest...\n") } - manifestReader, err := v.Storage.Get(v.ctx, manifestPath) + manifest, err := v.downloadManifestByKey(remoteKey) if err != nil { return nil, nil, nil, v.deepVerifyFailure(result, opts, fmt.Sprintf("failed to download manifest: %v", err), fmt.Errorf("failed to download manifest: %w", err)) } - defer func() { _ = manifestReader.Close() }() - - manifest, err := snapshot.DecodeManifest(manifestReader) - if err != nil { - return nil, nil, nil, v.deepVerifyFailure(result, opts, - fmt.Sprintf("failed to decode manifest: %v", err), - fmt.Errorf("failed to decode manifest: %w", err)) - } - log.Info("Manifest loaded", "manifest_blob_count", manifest.BlobCount, "manifest_total_size", ubytes(manifest.TotalCompressedSize))