import httpx from uuid import UUID from fastapi import HTTPException, status from typing import List, Dict from config import settings async def get_profile_by_user_id(user_id: UUID, token: str) -> dict: try: async with httpx.AsyncClient(timeout=5.0, verify=False) as client: response = await client.get( f"{settings.PROFILE_SERVICE}/user_id/{user_id}", headers={"Authorization": f"Bearer {token}"} ) if response.status_code != 200: raise HTTPException( status_code=response.status_code, detail=f"profile_service: {response.text}" ) return response.json() except httpx.RequestError as e: raise HTTPException(status_code=status.HTTP_503_SERVICE_UNAVAILABLE, detail=f"profile_service unreachable: {str(e)}") async def get_profiles_by_user_ids(user_ids: List[UUID], token: str, user_agent: str, ip: str) -> Dict[str, dict]: try: async with httpx.AsyncClient(timeout=5.0, verify=False) as client: response = await client.post( f"{settings.PROFILE_SERVICE}/user_ids/internal", headers={"Authorization": f"Bearer {token}"}, json={"user_ids": user_ids, "user_agent": user_agent, "ip": ip} ) if response.status_code != 200: raise HTTPException( status_code=response.status_code, detail=f"profile_service: {response.text}" ) return response.json() except httpx.RequestError as e: raise HTTPException(status_code=status.HTTP_503_SERVICE_UNAVAILABLE, detail=f"profile_service unreachable: {str(e)}")