in oss/lib/bucket_inventory.go [383:446]
func (bic *BucketInventoryCommand) ListBucketInventory() error {
bic.bwOption.ruleCount = 0
vmarker, _ := GetString(OptionMarker, bic.command.options)
client, err := bic.command.ossClient(bic.bwOption.bucketName)
if err != nil {
return err
}
var sumResult string
for {
xmlBody, err := client.ListBucketInventoryXml(bic.bwOption.bucketName, vmarker)
if err != nil {
return err
}
sumResult += xmlBody
sumResult += "\n"
var result oss.ListInventoryConfigurationsResult
err = xml.Unmarshal([]byte(xmlBody), &result)
if err != nil {
return err
}
bic.bwOption.ruleCount += len(result.InventoryConfiguration)
if result.IsTruncated != nil && *result.IsTruncated {
vmarker = result.NextContinuationToken
} else {
break
}
}
var outFile *os.File
if len(bic.command.args) >= 2 {
fileName := bic.command.args[1]
_, err = os.Stat(fileName)
if err == nil {
bConitnue := bic.confirm(fileName)
if !bConitnue {
return nil
}
}
outFile, err = os.OpenFile(fileName, os.O_CREATE|os.O_TRUNC|os.O_RDWR, 0660)
if err != nil {
return err
}
defer outFile.Close()
} else {
outFile = os.Stdout
}
outFile.Write([]byte(sumResult))
var sumList oss.ListInventoryConfigurationsResult
err = xml.Unmarshal([]byte(sumResult), &sumList)
if err != nil {
return err
}
fmt.Printf("\n\ntotal inventory rule count:%d\n", bic.bwOption.ruleCount)
return nil
}