diff --git a/mcaio/client.py b/mcaio/client.py new file mode 100644 index 0000000..f5940a9 --- /dev/null +++ b/mcaio/client.py @@ -0,0 +1,31 @@ +from asyncio import open_connection as aiocon, StreamReader, StreamWriter + + +class AIOConnection(object): + + reader: StreamReader + writer: StreamWriter + + def __init__(self, host: str, port: int) -> None: + self.host = host + self.port = port + + async def __aenter__(self) -> "AIOConnection": + self.reader, self.writer = await aiocon(self.host, self.port) + return self + + async def __aexit__(self) -> None: + self.writer.close() + await self.writer.wait_closed() + + async def send(self, msg: str) -> None: + if self.writer: + self.writer.write(msg.encode()) + await self.writer.drain() + raise ConnectionRefusedError + + async def receive(self) -> str: + if self.reader: + resp = await self.reader.read(100) + return resp.decode() + raise ConnectionRefusedError