trello.py 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. from typing import Any
  2. import requests
  3. from core.tools.entities.values import ToolLabelEnum
  4. from core.tools.errors import ToolProviderCredentialValidationError
  5. from core.tools.provider.builtin_tool_provider import BuiltinToolProviderController
  6. class TrelloProvider(BuiltinToolProviderController):
  7. def _validate_credentials(self, credentials: dict[str, Any]) -> None:
  8. """Validate Trello API credentials by making a test API call.
  9. Args:
  10. credentials (dict[str, Any]): The Trello API credentials to validate.
  11. Raises:
  12. ToolProviderCredentialValidationError: If the credentials are invalid.
  13. """
  14. api_key = credentials.get("trello_api_key")
  15. token = credentials.get("trello_api_token")
  16. url = f"https://api.trello.com/1/members/me?key={api_key}&token={token}"
  17. try:
  18. response = requests.get(url)
  19. response.raise_for_status() # Raises an HTTPError for bad responses
  20. except requests.exceptions.HTTPError as e:
  21. if response.status_code == 401:
  22. # Unauthorized, indicating invalid credentials
  23. raise ToolProviderCredentialValidationError("Invalid Trello credentials: Unauthorized.")
  24. # Handle other potential HTTP errors
  25. raise ToolProviderCredentialValidationError("Error validating Trello credentials")
  26. except requests.exceptions.RequestException as e:
  27. # Handle other exceptions, such as connection errors
  28. raise ToolProviderCredentialValidationError("Error validating Trello credentials")
  29. def _get_tool_labels(self) -> list[ToolLabelEnum]:
  30. return [
  31. ToolLabelEnum.PRODUCTIVITY
  32. ]