Example #1
0
// randomize order of each listing batch
func List(ss3 s3.Interface, output *StepLocation, ch chan s3.ListedObject) {
	var marker string
	for {
		r, err := ss3.List(s3.ListRequest{MaxKeys: 1000, Bucket: output.Bucket, Prefix: output.Prefix, Marker: marker})
		if err != nil {
			panic(err)
		}

		p := rand.Perm(len(r.Contents))

		for i := 0; i < len(r.Contents); i++ {
			v := r.Contents[p[i]]
			ch <- s3.ListedObject{
				ListBucketResultContents: v,
				Bucket: output.Bucket,
			}
		}

		if r.IsTruncated {
			marker = r.Contents[len(r.Contents)-1].Key
		} else {
			break
		}
	}
	close(ch)
}