71 lines
2.8 KiB
Python
71 lines
2.8 KiB
Python
import httpx
|
|
from uuid import UUID
|
|
from fastapi import HTTPException, status
|
|
from typing import List, Dict
|
|
from config import settings
|
|
from common_lib.utils.ssl_transport import ssl_transport
|
|
|
|
|
|
# async def get_profile_by_user_id(user_id: UUID, token: str) -> dict:
|
|
# try:
|
|
# async with httpx.AsyncClient(transport=ssl_transport, timeout=5.0) 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}"
|
|
# )
|
|
|
|
# wrapped = response.json()
|
|
# return wrapped["data"]
|
|
|
|
# except httpx.RequestError:
|
|
# raise HTTPException(status_code=status.HTTP_503_SERVICE_UNAVAILABLE, detail="Token service unavailable")
|
|
|
|
async def get_profile_by_user_id(user_id: UUID, current_user: UUID, token: str) -> dict:
|
|
try:
|
|
async with httpx.AsyncClient(transport=ssl_transport, timeout=5.0) as client:
|
|
response = await client.post(
|
|
f"{settings.PROFILE_SERVICE}/user_id/internal",
|
|
headers={"Authorization": f"Bearer {token}"},
|
|
json={"user_id": str(user_id),
|
|
"current_user": str(current_user)})
|
|
|
|
if response.status_code != 200:
|
|
raise HTTPException(
|
|
status_code=response.status_code,
|
|
detail=f"profile_service: {response.text}"
|
|
)
|
|
|
|
wrapped = response.json()
|
|
return wrapped["data"]
|
|
|
|
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_id: UUID) -> Dict[str, dict]:
|
|
try:
|
|
async with httpx.AsyncClient(transport=ssl_transport, timeout=5.0) as client:
|
|
response = await client.post(
|
|
f"{settings.PROFILE_SERVICE}/user_ids/internal",
|
|
headers={"Authorization": f"Bearer {token}"},
|
|
json={"user_ids": [str(uid) for uid in user_ids],
|
|
"user_id": str(user_id)})
|
|
|
|
if response.status_code != 200:
|
|
raise HTTPException(
|
|
status_code=response.status_code,
|
|
detail=f"profile_service: {response.text}"
|
|
)
|
|
|
|
wrapped = response.json()
|
|
return wrapped["data"]
|
|
|
|
except httpx.RequestError as e:
|
|
raise HTTPException(status_code=status.HTTP_503_SERVICE_UNAVAILABLE, detail=f"profile_service unreachable: {str(e)}")
|