mirror of
https://github.com/OpenHands/OpenHands.git
synced 2025-12-26 05:48:36 +08:00
38 lines
1.0 KiB
Python
38 lines
1.0 KiB
Python
from pydantic import SecretStr
|
|
|
|
from openhands.integrations.github.github_service import GitHubService
|
|
from openhands.integrations.gitlab.gitlab_service import GitLabService
|
|
from openhands.integrations.provider import ProviderType
|
|
|
|
|
|
async def validate_provider_token(token: SecretStr) -> ProviderType | None:
|
|
"""
|
|
Determine whether a token is for GitHub or GitLab by attempting to get user info
|
|
from both services.
|
|
|
|
Args:
|
|
token: The token to check
|
|
|
|
Returns:
|
|
'github' if it's a GitHub token
|
|
'gitlab' if it's a GitLab token
|
|
None if the token is invalid for both services
|
|
"""
|
|
# Try GitHub first
|
|
try:
|
|
github_service = GitHubService(token=token)
|
|
await github_service.get_user()
|
|
return ProviderType.GITHUB
|
|
except Exception:
|
|
pass
|
|
|
|
# Try GitLab next
|
|
try:
|
|
gitlab_service = GitLabService(token=token)
|
|
await gitlab_service.get_user()
|
|
return ProviderType.GITLAB
|
|
except Exception:
|
|
pass
|
|
|
|
return None
|