Skip to content

Commit

Permalink
Add ListObjectsV2 documentation (#449)
Browse files Browse the repository at this point in the history
  • Loading branch information
vadmeste authored and harshavardhana committed Jul 18, 2016
1 parent 126a1b7 commit 2993f96
Show file tree
Hide file tree
Showing 3 changed files with 122 additions and 2 deletions.
65 changes: 63 additions & 2 deletions API.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,8 @@ func main() {
|[`BucketExists`](#BucketExists) |[`CopyObject`](#CopyObject) |[`PresignedPostPolicy`](#PresignedPostPolicy) | |
| [`RemoveBucket`](#RemoveBucket) |[`StatObject`](#StatObject) | | |
|[`ListObjects`](#ListObjects) |[`RemoveObject`](#RemoveObject) | | |
|[`ListIncompleteUploads`](#ListIncompleteUploads) | [`RemoveIncompleteUpload`](#RemoveIncompleteUpload) | | |
| |[`FPutObject`](#FPutObject) | | |
|[`ListObjectsV2`](#ListObjectsV2) | [`RemoveIncompleteUpload`](#RemoveIncompleteUpload) | | |
|[`ListIncompleteUploads`](#ListIncompleteUploads) |[`FPutObject`](#FPutObject) | | |
| | [`FGetObject`](#FGetObject) | | |

## 1. Constructor
Expand Down Expand Up @@ -257,6 +257,67 @@ for object := range objectCh {
}
```

<a name="ListObjectsV2">
#### ListObjectsV2(bucketName string, prefix string, recursive bool, doneCh chan struct{}) <-chan ObjectInfo
Lists objects in a bucket using the recommanded listing API v2

__Parameters__

|Param |Type |Description |
|:---|:---| :---|
|`bucketName` | _string_ |name of the bucket. |
| `objectPrefix` |_string_ | the prefix of the objects that should be listed. |
| `recursive` | _bool_ |`true` indicates recursive style listing and `false` indicates directory style listing delimited by '/'. |
|`doneCh` | _chan struct{}_ | Set this value to 'true' to enable secure (HTTPS) access. |

__Return Value__

<table>
<thead>
<tr>
<th>Param</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>
chan ObjectInfo
</td>
<td> chan ObjectInfo </td>
<td>
<ul>Read channel for all the objects in the bucket, the object is of the format:
<li>objectInfo.Key string: name of the object.</li>
<li>objectInfo.Size int64: size of the object.</li>
<li>objectInfo.ETag string: etag of the object. </li>
<li>objectInfo.LastModified time.Time: modified time stamp.</li>
</ul>
</td>
</tr>
</tbody>
</table>

```go
// Create a done channel to control 'ListObjectsV2' go routine.
doneCh := make(chan struct{})

// Indicate to our routine to exit cleanly upon return.
defer close(doneCh)

isRecursive := true
objectCh := minioClient.ListObjectsV2("mybucket", "myprefix", isRecursive, doneCh)
for object := range objectCh {
if object.Err != nil {
fmt.Println(object.Err)
return
}
fmt.Println(object)
}
```



<a name="ListIncompleteUploads">
#### ListIncompleteUploads(bucketName string, prefix string, recursive bool, doneCh chan struct{}) <- chan ObjectMultipartInfo
Lists partially uploaded objects in a bucket.
Expand Down
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,7 @@ The full API Reference is available here.
* [`BucketExists`](https://docs.minio.io/docs/golang-client-api-reference#BucketExists)
* [`RemoveBucket`](https://docs.minio.io/docs/golang-client-api-reference#RemoveBucket)
* [`ListObjects`](https://docs.minio.io/docs/golang-client-api-reference#ListObjects)
* ListObjectsV2
* [`ListIncompleteUploads`](https://docs.minio.io/docs/golang-client-api-reference#ListIncompleteUploads)

### API Reference : Bucket policy Operations
Expand Down Expand Up @@ -167,6 +168,7 @@ The full API Reference is available here.
* [putobject.go](./examples/s3/putobject.go)
* [getobject.go](./examples/s3/getobject.go)
* [listobjects.go](./examples/s3/listobjects.go)
* [listobjectsV2.go](./examples/s3/listobjectsV2.go)
* [removeobject.go](./examples/s3/removeobject.go)
* [statobject.go](./examples/s3/statobject.go)

Expand Down
57 changes: 57 additions & 0 deletions examples/s3/listobjectsV2.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
// +build ignore

/*
* Minio Go Library for Amazon S3 Compatible Cloud Storage (C) 2016 Minio, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package main

import (
"fmt"

"github.com/minio/minio-go"
)

func main() {
// Note: YOUR-ACCESSKEYID, YOUR-SECRETACCESSKEY, my-bucketname and my-prefixname
// are dummy values, please replace them with original values.

// Requests are always secure (HTTPS) by default. Set secure=false to enable insecure (HTTP) access.
// This boolean value is the last argument for New().

// New returns an Amazon S3 compatible client object. API compatibility (v2 or v4) is automatically
// determined based on the Endpoint value.
s3Client, err := minio.New("s3.amazonaws.com", "YOUR-ACCESSKEYID", "YOUR-SECRETACCESSKEY", true)
if err != nil {
fmt.Println(err)
return
}

// Create a done channel to control 'ListObjects' go routine.
doneCh := make(chan struct{})

// Indicate to our routine to exit cleanly upon return.
defer close(doneCh)

// List all objects from a bucket-name with a matching prefix.
for object := range s3Client.ListObjectsV2("my-bucketname", "my-prefixname", true, doneCh) {
if object.Err != nil {
fmt.Println(object.Err)
return
}
fmt.Println(object)
}
return
}

0 comments on commit 2993f96

Please sign in to comment.