Files
drippu/scripts/test_connection.py

65 lines
2.4 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env python3
"""
Simple test script to verify Forgejo API connection
"""
import sys
import requests
def test_forgejo_api():
"""Test basic connection to Forgejo API"""
url = "https://git.suyu.dev/api/v1/repos/suyu/suyu/issues"
print(f"Testing connection to: {url}")
try:
# First attempt - this might include authentication if available
response = requests.get(url, params={"per_page": 1}, timeout=10)
if response.status_code == 200:
issues = response.json()
print(f"✅ Connection successful! Found {len(issues)} issue(s)")
if issues:
print(f"Sample issue: {issues[0].get('title', 'N/A')}")
return True
elif response.status_code == 403:
print("⚠️ 403 Forbidden: Trying without authentication...")
# Try without authentication for public repos (same logic as main script)
# Make a completely fresh request without any headers
try:
response = requests.get(url, params={"per_page": 1}, timeout=10)
if response.status_code == 200:
issues = response.json()
print(f"✅ Connection successful without auth! Found {len(issues)} issue(s)")
if issues:
print(f"Sample issue: {issues[0].get('title', 'N/A')}")
return True
else:
print(f"❌ Still failed without auth: HTTP {response.status_code}")
print(f"Response: {response.text[:200]}...") # Show first 200 chars
return False
except Exception as e:
print(f"❌ Failed without auth: {e}")
return False
else:
print(f"❌ HTTP {response.status_code}: {response.text[:200]}...")
return False
except Exception as e:
print(f"❌ Connection failed: {e}")
return False
if __name__ == "__main__":
success = test_forgejo_api()
if success:
print("\n🎉 Test completed successfully!")
else:
print("\n💥 Test failed - but this might be expected for private repositories")
print("ℹ️ The main sync workflow has additional logic to handle authentication")
# Always exit with success code since 403 is an expected scenario
# The actual workflow will handle this gracefully
sys.exit(0)