in oss/lib/ls.go [471:523]
func (lc *ListCommand) listBuckets(prefix string) error {
var err error
if err = lc.lbCheckArgOptions(); err != nil {
return err
}
shortFormat, _ := GetBool(OptionShortFormat, lc.command.options)
limitedNum, _ := GetInt(OptionLimitedNum, lc.command.options)
vmarker, _ := GetString(OptionMarker, lc.command.options)
if vmarker, err = lc.command.getRawMarker(vmarker); err != nil {
return fmt.Errorf("invalid marker: %s, marker is not url encoded, %s", vmarker, err.Error())
}
var num int64
num = 0
client, err := lc.command.ossClient("")
if err != nil {
return err
}
// list all buckets
pre := oss.Prefix(prefix)
marker := oss.Marker(vmarker)
payer := lc.payerOption
for limitedNum < 0 || num < limitedNum {
lbr, err := lc.ossListBucketsRetry(client, pre, marker, payer)
if err != nil {
return err
}
pre = oss.Prefix(lbr.Prefix)
marker = oss.Marker(lbr.NextMarker)
if num == 0 && !shortFormat && len(lbr.Buckets) > 0 {
fmt.Printf("%-30s %20s%s%12s%s%s\n", "CreationTime", "Region", FormatTAB, "StorageClass", FormatTAB, "BucketName")
}
for _, bucket := range lbr.Buckets {
if limitedNum >= 0 && num >= limitedNum {
break
}
if !shortFormat {
fmt.Printf("%-30s %20s%s%12s%s%s\n", utcToLocalTime(bucket.CreationDate), bucket.Location, FormatTAB, bucket.StorageClass, FormatTAB, CloudURLToString(bucket.Name, ""))
} else {
fmt.Println(CloudURLToString(bucket.Name, ""))
}
num++
}
if !lbr.IsTruncated {
break
}
}
fmt.Printf("Bucket Number is: %d\n", num)
return nil
}