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

Method listObjectVersionsQuery

api-list.go:536–626  ·  view source on GitHub ↗

listObjectVersions - (List Object Versions) - List some or all (up to 1000) of the existing objects and their versions in a bucket. You can use the request parameters as selection criteria to return a subset of the objects in a bucket. request parameters :- --------- ?key-marker - Specifies the key

(ctx context.Context, bucketName string, opts ListObjectsOptions, keyMarker, versionIDMarker, delimiter string)

Source from the content-addressed store, hash-verified

534// ?prefix - Limits the response to keys that begin with the specified prefix.
535// ?max-keys - Sets the maximum number of keys returned in the response body.
536func (c *Client) listObjectVersionsQuery(ctx context.Context, bucketName string, opts ListObjectsOptions, keyMarker, versionIDMarker, delimiter string) (ListVersionsResult, error) {
537 // Validate bucket name.
538 if err := s3utils.CheckValidBucketName(bucketName); err != nil {
539 return ListVersionsResult{}, err
540 }
541 // Validate object prefix.
542 if err := s3utils.CheckValidObjectNamePrefix(opts.Prefix); err != nil {
543 return ListVersionsResult{}, err
544 }
545 // Get resources properly escaped and lined up before
546 // using them in http request.
547 urlValues := make(url.Values)
548
549 // Set versions to trigger versioning API
550 urlValues.Set("versions", "")
551
552 // Set object prefix, prefix value to be set to empty is okay.
553 urlValues.Set("prefix", opts.Prefix)
554
555 // Set delimiter, delimiter value to be set to empty is okay.
556 urlValues.Set("delimiter", delimiter)
557
558 // Set object marker.
559 if keyMarker != "" {
560 urlValues.Set("key-marker", keyMarker)
561 }
562
563 // Set max keys.
564 if opts.MaxKeys > 0 {
565 urlValues.Set("max-keys", fmt.Sprintf("%d", opts.MaxKeys))
566 }
567
568 // Set version ID marker
569 if versionIDMarker != "" {
570 urlValues.Set("version-id-marker", versionIDMarker)
571 }
572
573 if opts.WithMetadata {
574 urlValues.Set("metadata", "true")
575 }
576
577 // Always set encoding-type
578 urlValues.Set("encoding-type", "url")
579
580 // Execute GET on bucket to list objects.
581 resp, err := c.executeMethod(ctx, http.MethodGet, requestMetadata{
582 bucketName: bucketName,
583 queryValues: urlValues,
584 contentSHA256Hex: emptySHA256Hex,
585 customHeader: opts.headers,
586 })
587 defer closeResponse(resp)
588 if err != nil {
589 return ListVersionsResult{}, err
590 }
591 if resp != nil {
592 if resp.StatusCode != http.StatusOK {
593 return ListVersionsResult{}, httpRespToErrorResponse(resp, bucketName, "")

Callers 1

listObjectVersionsMethod · 0.95

Calls 8

executeMethodMethod · 0.95
CheckValidBucketNameFunction · 0.92
httpRespToErrorResponseFunction · 0.85
decodeS3NameFunction · 0.85
closeResponseFunction · 0.70
xmlDecoderFunction · 0.70
SetMethod · 0.45

Tested by

no test coverage detected