| 
                        12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 | 
                        - import logging
 - import os
 - from collections.abc import Mapping
 - from typing import Any
 - 
 - from pydantic.fields import FieldInfo
 - 
 - from .http_request import NacosHttpClient
 - 
 - logger = logging.getLogger(__name__)
 - 
 - from configs.remote_settings_sources.base import RemoteSettingsSource
 - 
 - from .utils import _parse_config
 - 
 - 
 - class NacosSettingsSource(RemoteSettingsSource):
 -     def __init__(self, configs: Mapping[str, Any]):
 -         self.configs = configs
 -         self.remote_configs: dict[str, Any] = {}
 -         self.async_init()
 - 
 -     def async_init(self):
 -         data_id = os.getenv("DIFY_ENV_NACOS_DATA_ID", "dify-api-env.properties")
 -         group = os.getenv("DIFY_ENV_NACOS_GROUP", "nacos-dify")
 -         tenant = os.getenv("DIFY_ENV_NACOS_NAMESPACE", "")
 - 
 -         params = {"dataId": data_id, "group": group, "tenant": tenant}
 -         try:
 -             content = NacosHttpClient().http_request("/nacos/v1/cs/configs", method="GET", headers={}, params=params)
 -             self.remote_configs = self._parse_config(content)
 -         except Exception as e:
 -             logger.exception("[get-access-token] exception occurred")
 -             raise
 - 
 -     def _parse_config(self, content: str) -> dict:
 -         if not content:
 -             return {}
 -         try:
 -             return _parse_config(self, content)
 -         except Exception as e:
 -             raise RuntimeError(f"Failed to parse config: {e}")
 - 
 -     def get_field_value(self, field: FieldInfo, field_name: str) -> tuple[Any, str, bool]:
 -         if not isinstance(self.remote_configs, dict):
 -             raise ValueError(f"remote configs is not dict, but {type(self.remote_configs)}")
 - 
 -         field_value = self.remote_configs.get(field_name)
 -         if field_value is None:
 -             return None, field_name, False
 - 
 -         return field_value, field_name, False
 
 
  |