listObjects - (List Objects) - List some or all (up to 1000) of the objects in a bucket. You can use the request parameters as selection criteria to return a subset of the objects in a bucket. request parameters :- --------- ?marker - Specifies the key to start with when listing objects in a bucket
(ctx context.Context, bucketName, objectPrefix, objectMarker, delimiter string, maxkeys int, headers http.Header)
| 635 | // ?prefix - Limits the response to keys that begin with the specified prefix. |
| 636 | // ?max-keys - Sets the maximum number of keys returned in the response body. |
| 637 | func (c *Client) listObjectsQuery(ctx context.Context, bucketName, objectPrefix, objectMarker, delimiter string, maxkeys int, headers http.Header) (ListBucketResult, error) { |
| 638 | // Validate bucket name. |
| 639 | if err := s3utils.CheckValidBucketName(bucketName); err != nil { |
| 640 | return ListBucketResult{}, err |
| 641 | } |
| 642 | // Validate object prefix. |
| 643 | if err := s3utils.CheckValidObjectNamePrefix(objectPrefix); err != nil { |
| 644 | return ListBucketResult{}, err |
| 645 | } |
| 646 | // Get resources properly escaped and lined up before |
| 647 | // using them in http request. |
| 648 | urlValues := make(url.Values) |
| 649 | |
| 650 | // Set object prefix, prefix value to be set to empty is okay. |
| 651 | urlValues.Set("prefix", objectPrefix) |
| 652 | |
| 653 | // Set delimiter, delimiter value to be set to empty is okay. |
| 654 | urlValues.Set("delimiter", delimiter) |
| 655 | |
| 656 | // Set object marker. |
| 657 | if objectMarker != "" { |
| 658 | urlValues.Set("marker", objectMarker) |
| 659 | } |
| 660 | |
| 661 | // Set max keys. |
| 662 | if maxkeys > 0 { |
| 663 | urlValues.Set("max-keys", fmt.Sprintf("%d", maxkeys)) |
| 664 | } |
| 665 | |
| 666 | // Always set encoding-type |
| 667 | urlValues.Set("encoding-type", "url") |
| 668 | |
| 669 | // Execute GET on bucket to list objects. |
| 670 | resp, err := c.executeMethod(ctx, http.MethodGet, requestMetadata{ |
| 671 | bucketName: bucketName, |
| 672 | queryValues: urlValues, |
| 673 | contentSHA256Hex: emptySHA256Hex, |
| 674 | customHeader: headers, |
| 675 | }) |
| 676 | defer closeResponse(resp) |
| 677 | if err != nil { |
| 678 | return ListBucketResult{}, err |
| 679 | } |
| 680 | if resp != nil { |
| 681 | if resp.StatusCode != http.StatusOK { |
| 682 | return ListBucketResult{}, httpRespToErrorResponse(resp, bucketName, "") |
| 683 | } |
| 684 | } |
| 685 | // Decode listBuckets XML. |
| 686 | listBucketResult := ListBucketResult{} |
| 687 | err = xmlDecoder(resp.Body, &listBucketResult) |
| 688 | if err != nil { |
| 689 | return listBucketResult, err |
| 690 | } |
| 691 | |
| 692 | for i, obj := range listBucketResult.Contents { |
| 693 | listBucketResult.Contents[i].Key, err = decodeS3Name(obj.Key, listBucketResult.EncodingType) |
| 694 | if err != nil { |
no test coverage detected