github.com/keysonZZZ/kmg@v0.0.0-20151121023212-05317bfd7d39/third/kmgQiniu/List.go (about)

     1  package kmgQiniu
     2  
     3  import (
     4  	"io"
     5  
     6  	"github.com/bronze1man/kmg/kmgErr"
     7  	"github.com/qiniu/api/rsf"
     8  )
     9  
    10  // 列出所有前缀是xxx的数据,
    11  // 已处理1000个限制
    12  // 已看过sdk的文档,此处没有很简单的办法可以进行并发优化.
    13  func ListPrefix(ctx *Context, prefix string) (entries []rsf.ListItem, err error) {
    14  	var marker = ""
    15  	for {
    16  		var thisEntries []rsf.ListItem
    17  		thisEntries, marker, err = ctx.rsfClient.ListPrefix(nil, ctx.bucket,
    18  			prefix, marker, 1000)
    19  		entries = append(entries, thisEntries...)
    20  		if err == io.EOF {
    21  			return entries, nil
    22  		}
    23  		if err != nil {
    24  			kmgErr.LogErrorWithStack(err)
    25  			return entries, err
    26  		}
    27  		if len(thisEntries) < 1000 {
    28  			break
    29  		}
    30  	}
    31  	return
    32  }