github.py 1.5 KB

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