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)
| 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. |
| 536 | func (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, "") |
no test coverage detected