From 16044207969cfcde0c73f6689ba3e77afaf47289 Mon Sep 17 00:00:00 2001 From: cheykrym Date: Sun, 29 Jun 2025 03:44:17 +0300 Subject: [PATCH] add profile --- common_lib/services/profile.py | 46 ++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 common_lib/services/profile.py diff --git a/common_lib/services/profile.py b/common_lib/services/profile.py new file mode 100644 index 0000000..81f9e62 --- /dev/null +++ b/common_lib/services/profile.py @@ -0,0 +1,46 @@ +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) -> 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} + ) + + 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)}")