2026-03-17 14:59:41 +08:00

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