github.py 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. import requests
  2. from core.tools.entities.values import ToolLabelEnum
  3. from core.tools.errors import ToolProviderCredentialValidationError
  4. from core.tools.provider.builtin_tool_provider import BuiltinToolProviderController
  5. class GihubProvider(BuiltinToolProviderController):
  6. def _validate_credentials(self, credentials: dict) -> None:
  7. try:
  8. if 'access_tokens' not in credentials or not credentials.get('access_tokens'):
  9. raise ToolProviderCredentialValidationError("Github API Access Tokens is required.")
  10. if 'api_version' not in credentials or not credentials.get('api_version'):
  11. api_version = '2022-11-28'
  12. else:
  13. api_version = credentials.get('api_version')
  14. try:
  15. headers = {
  16. "Content-Type": "application/vnd.github+json",
  17. "Authorization": f"Bearer {credentials.get('access_tokens')}",
  18. "X-GitHub-Api-Version": api_version
  19. }
  20. response = requests.get(
  21. url="https://api.github.com/search/users?q={account}".format(account='charli117'),
  22. headers=headers)
  23. if response.status_code != 200:
  24. raise ToolProviderCredentialValidationError((response.json()).get('message'))
  25. except Exception as e:
  26. raise ToolProviderCredentialValidationError("Github API Key and Api Version is invalid. {}".format(e))
  27. except Exception as e:
  28. raise ToolProviderCredentialValidationError(str(e))
  29. def _get_tool_labels(self) -> list[ToolLabelEnum]:
  30. return [
  31. ToolLabelEnum.UTILITIES
  32. ]