from typing import Any import requests from core.tools.errors import ToolProviderCredentialValidationError from core.tools.provider.builtin_tool_provider import BuiltinToolProviderController class GitlabProvider(BuiltinToolProviderController): def _validate_credentials(self, credentials: dict[str, Any]) -> None: try: if "access_tokens" not in credentials or not credentials.get("access_tokens"): raise ToolProviderCredentialValidationError("Gitlab Access Tokens is required.") if "site_url" not in credentials or not credentials.get("site_url"): site_url = "https://gitlab.com" else: site_url = credentials.get("site_url") try: headers = { "Content-Type": "application/vnd.text+json", "Authorization": f"Bearer {credentials.get('access_tokens')}", } response = requests.get(url=f"{site_url}/api/v4/user", headers=headers) if response.status_code != 200: raise ToolProviderCredentialValidationError((response.json()).get("message")) except Exception as e: raise ToolProviderCredentialValidationError("Gitlab Access Tokens is invalid. {}".format(e)) except Exception as e: raise ToolProviderCredentialValidationError(str(e))