INNER CODE UNIT · Python
fetch_projects_data
sunithvs/devb.io · api/main.py:96
async def fetch_projects_data(username: Annotated[str, Depends(verify_username)]):
"""Fetch GitHub user's projects and languages data"""
try:
username = username.strip().lower()
cache_key = f"github_profile_projects:{username}"
if Settings.CACHE_ENABLED:
cached_response = await redis_client.get(cache_key)
if cached_response and not Settings.DEBUG:
return json.loads(cached_response)
project_data = GitHubProjectRanker().get_featured(username)
if Settings.CACHE_ENABLED:
await redis_client.setex(name=cache_key, value=json.dumps(project_data), time=Settings.DEFAULT_CACHE_TTL)
return project_data
except Exception as e:
raise HTTPException(status_code=404, detail=f"User {username} not found: {str(e)}")