gaode.py 1.3 KB

1234567891011121314151617181920212223242526272829
  1. import urllib.parse
  2. import requests
  3. from core.tools.errors import ToolProviderCredentialValidationError
  4. from core.tools.provider.builtin_tool_provider import BuiltinToolProviderController
  5. class GaodeProvider(BuiltinToolProviderController):
  6. def _validate_credentials(self, credentials: dict) -> None:
  7. try:
  8. if "api_key" not in credentials or not credentials.get("api_key"):
  9. raise ToolProviderCredentialValidationError("Gaode API key is required.")
  10. try:
  11. response = requests.get(
  12. url="https://restapi.amap.com/v3/geocode/geo?address={address}&key={apikey}".format(
  13. address=urllib.parse.quote("广东省广州市天河区广州塔"), apikey=credentials.get("api_key")
  14. )
  15. )
  16. if response.status_code == 200 and (response.json()).get("info") == "OK":
  17. pass
  18. else:
  19. raise ToolProviderCredentialValidationError((response.json()).get("info"))
  20. except Exception as e:
  21. raise ToolProviderCredentialValidationError("Gaode API Key is invalid. {}".format(e))
  22. except Exception as e:
  23. raise ToolProviderCredentialValidationError(str(e))