import httpx, uuid, os from typing import Optional, Union from dotenv import load_dotenv from src.libs.logger import logger load_dotenv() rpc_server_url = os.getenv('CHATXBT_RPC_SERVER_URL') async def rpc_call(method_name, params: Optional[Union[dict, list]] = {}, url: str = rpc_server_url): headers = { 'Content-Type': 'application/json', } payload = { 'method': method_name, 'params': params, 'jsonrpc': '2.0', 'id': str(uuid.uuid4()), } try: async with httpx.AsyncClient() as client: response = await client.post(url, json=payload, headers=headers) response.raise_for_status() return response.json() except httpx.RequestError as e: print(f"Error making RPC call: {e}") return None