func()

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
}