add socket_internal
This commit is contained in:
parent
9b5ffcccce
commit
ca6be252ab
41
common_lib/services/socket_internal.py
Normal file
41
common_lib/services/socket_internal.py
Normal file
@ -0,0 +1,41 @@
|
||||
import httpx
|
||||
from uuid import UUID
|
||||
from fastapi import HTTPException, status
|
||||
from typing import Dict, Any
|
||||
from pydantic import BaseModel
|
||||
from config import settings
|
||||
from common_lib.utils.http_client import client
|
||||
|
||||
|
||||
async def send_internal_socket_msg(
|
||||
user_id: UUID,
|
||||
message: Dict[str, Any] | BaseModel,
|
||||
event: str,
|
||||
with_httpexception = False
|
||||
) -> dict:
|
||||
if isinstance(message, BaseModel):
|
||||
message = message.model_dump()
|
||||
|
||||
try:
|
||||
response = await client.post(
|
||||
f"{settings.SOCKET_SERVICE}/internal/send_to_user",
|
||||
json={"user_id": str(user_id),
|
||||
"message": message,
|
||||
"event": event
|
||||
})
|
||||
|
||||
if response.status_code != 200:
|
||||
if with_httpexception:
|
||||
raise HTTPException(
|
||||
status_code=response.status_code,
|
||||
detail=f"socket_service: {response.text}"
|
||||
)
|
||||
return response.status_code, f"socket_service: {response.text}"
|
||||
|
||||
wrapped = response.json()
|
||||
return wrapped["data"]
|
||||
|
||||
except httpx.RequestError as e:
|
||||
if with_httpexception:
|
||||
raise HTTPException(status_code=status.HTTP_503_SERVICE_UNAVAILABLE, detail=f"socket_service unreachable: {str(e)}")
|
||||
return 503, f"socket_service unreachable: {str(e)}"
|
||||
@ -1,6 +1,6 @@
|
||||
[project]
|
||||
name = "common-lib"
|
||||
version = "0.0.25"
|
||||
version = "0.0.26"
|
||||
description = "Библиотека общих компонентов для микросервисов yobble"
|
||||
authors = [{ name = "cheykrym", email = "you@example.com" }]
|
||||
license = "MIT"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user