MCPcopy
hub / github.com/minio/minio-go / listObjectVersions

Method listObjectVersions

api-list.go:381–523  ·  view source on GitHub ↗
(ctx context.Context, bucketName string, opts ListObjectsOptions)

Source from the content-addressed store, hash-verified

379}
380
381func (c *Client) listObjectVersions(ctx context.Context, bucketName string, opts ListObjectsOptions) iter.Seq[ObjectInfo] {
382 // Default listing is delimited at "/"
383 delimiter := "/"
384 if opts.Recursive {
385 // If recursive we do not delimit.
386 delimiter = ""
387 }
388
389 return func(yield func(ObjectInfo) bool) {
390 if contextCanceled(ctx) {
391 return
392 }
393
394 // Validate bucket name.
395 if err := s3utils.CheckValidBucketName(bucketName); err != nil {
396 yield(ObjectInfo{Err: err})
397 return
398 }
399
400 // Validate incoming object prefix.
401 if err := s3utils.CheckValidObjectNamePrefix(opts.Prefix); err != nil {
402 yield(ObjectInfo{Err: err})
403 return
404 }
405
406 var (
407 keyMarker = opts.StartAfter
408 versionIDMarker = ""
409 preName = ""
410 preKey = ""
411 perVersions []Version
412 numVersions int
413 )
414
415 send := func(vers []Version) bool {
416 if opts.WithVersions && opts.ReverseVersions {
417 slices.Reverse(vers)
418 numVersions = len(vers)
419 }
420 for _, version := range vers {
421 info := ObjectInfo{
422 ETag: trimEtag(version.ETag),
423 Key: version.Key,
424 LastModified: version.LastModified.Truncate(time.Millisecond),
425 Size: version.Size,
426 Owner: version.Owner,
427 StorageClass: version.StorageClass,
428 IsLatest: version.IsLatest,
429 VersionID: version.VersionID,
430 IsDeleteMarker: version.isDeleteMarker,
431 UserTags: version.UserTags,
432 UserMetadata: version.UserMetadata,
433 Internal: version.Internal,
434 NumVersions: numVersions,
435 ChecksumAlgorithm: version.ChecksumAlgorithm,
436 ChecksumMode: version.ChecksumType,
437 ChecksumCRC32: version.ChecksumCRC32,
438 ChecksumCRC32C: version.ChecksumCRC32C,

Callers 2

ListObjectsMethod · 0.95
ListObjectsIterMethod · 0.95

Calls 5

CheckValidBucketNameFunction · 0.92
contextCanceledFunction · 0.85
trimEtagFunction · 0.85

Tested by

no test coverage detected