| 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 | |