gitlab.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334
  1. from typing import Any
  2. import requests
  3. from core.tools.errors import ToolProviderCredentialValidationError
  4. from core.tools.provider.builtin_tool_provider import BuiltinToolProviderController
  5. class GitlabProvider(BuiltinToolProviderController):
  6. def _validate_credentials(self, credentials: dict[str, Any]) -> None:
  7. try:
  8. if 'access_tokens' not in credentials or not credentials.get('access_tokens'):
  9. raise ToolProviderCredentialValidationError("Gitlab Access Tokens is required.")
  10. if 'site_url' not in credentials or not credentials.get('site_url'):
  11. site_url = 'https://gitlab.com'
  12. else:
  13. site_url = credentials.get('site_url')
  14. try:
  15. headers = {
  16. "Content-Type": "application/vnd.text+json",
  17. "Authorization": f"Bearer {credentials.get('access_tokens')}",
  18. }
  19. response = requests.get(
  20. url= f"{site_url}/api/v4/user",
  21. headers=headers)
  22. if response.status_code != 200:
  23. raise ToolProviderCredentialValidationError((response.json()).get('message'))
  24. except Exception as e:
  25. raise ToolProviderCredentialValidationError("Gitlab Access Tokens is invalid. {}".format(e))
  26. except Exception as e:
  27. raise ToolProviderCredentialValidationError(str(e))