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

Method listObjectsQuery

api-list.go:637–715  ·  view source on GitHub ↗

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)

Source from the content-addressed store, hash-verified

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.
637func (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 {

Callers 2

listObjectsMethod · 0.95
ListObjectsMethod · 0.80

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