38 lines
1.2 KiB
Go
38 lines
1.2 KiB
Go
package cloud
|
|
|
|
// CloudBillingRecord 云账单同步记录(跨平台统一结构) // Logan.Li
|
|
type CloudBillingRecord struct {
|
|
BillingDate string `json:"billing_date"`
|
|
Provider string `json:"provider"`
|
|
Cost float64 `json:"cost"`
|
|
Currency string `json:"currency"`
|
|
Service string `json:"service"`
|
|
Region string `json:"region"`
|
|
Description string `json:"description"`
|
|
}
|
|
|
|
// BillingFetcher 云账单拉取接口
|
|
type BillingFetcher interface {
|
|
FetchDailyBill(billingDate string) ([]CloudBillingRecord, error)
|
|
}
|
|
|
|
// SupportedBillingProviders 已接入账单 API 的云厂商列表。 // Logan.Li
|
|
var SupportedBillingProviders = []string{"aliyun", "tencent", "aws", "huawei", "azure"}
|
|
|
|
// NewBillingFetcher 根据云厂商创建账单拉取器
|
|
func NewBillingFetcher(provider, accessKey, secretKey string) BillingFetcher {
|
|
switch provider {
|
|
case "aliyun":
|
|
return NewAliyunProvider(accessKey, secretKey)
|
|
case "tencent":
|
|
return NewTencentProvider(accessKey, secretKey)
|
|
case "aws":
|
|
return NewAWSProvider(accessKey, secretKey)
|
|
case "huawei":
|
|
return NewHuaweiProvider(accessKey, secretKey)
|
|
case "azure":
|
|
return NewAzureProvider(accessKey, secretKey)
|
|
}
|
|
return nil
|
|
}
|