ForcePilot/backend/package/yuxi/channels/adapters/signal/rpc_context.py

28 lines
691 B
Python
Raw Normal View History

from __future__ import annotations
from dataclasses import dataclass
from yuxi.channels.adapters.signal.client import RpcClient
@dataclass
class RpcContext:
client: RpcClient
base_url: str
account: str
@classmethod
async def resolve(cls, base_url: str, account: str) -> RpcContext:
client = RpcClient(base_url)
await client.connect()
return cls(client=client, base_url=base_url, account=account)
async def disconnect(self) -> None:
await self.client.disconnect()
async def __aenter__(self) -> RpcContext:
return self
async def __aexit__(self, exc_type, exc_val, exc_tb) -> None:
await self.disconnect()