33 lines
1.1 KiB
Python
33 lines
1.1 KiB
Python
from framework.core.base_api import BaseAPI
|
|
from framework.config.settings import Config
|
|
|
|
class BillingService(BaseAPI):
|
|
def __init__(self):
|
|
super().__init__(Config.CLOUD_BASE_URL, Config.CLOUD_AUTH_TOKEN)
|
|
|
|
def fetch_billing_data(self, name: str = None, page_size: int = 500):
|
|
endpoint = "/api/dcloudResourceApi/consumptions"
|
|
params = {
|
|
"page": 1,
|
|
"pageSize": page_size,
|
|
"exactMatch": "true"
|
|
}
|
|
if name:
|
|
params["instanceName"] = name
|
|
|
|
headers = self.get_common_headers("/admin/consumptions")
|
|
data = self.request("GET", endpoint, params=params, headers=headers)
|
|
|
|
# 提取数据项
|
|
data_body = data.get("data", {})
|
|
if isinstance(data_body, list):
|
|
items = data_body
|
|
else:
|
|
items = data_body.get("list") or data_body.get("items") or []
|
|
|
|
# 精准匹配校准 (如果接口过滤不准)
|
|
if name:
|
|
items = [item for item in items if str(item.get("instanceName", "")) == name]
|
|
|
|
return items
|