import aiofiles
import asyncio
-import base64
import errno
import logging
import posix
+from inputparser import InputParser
+
class Presence:
def __init__(self, room_name, fifo_path):
+ self._input_parser = InputParser()
self._room_name = room_name
self._fifo_path = fifo_path
self._joined_room_id = None
break
if self._joined_room_id != None:
try:
- msgB64Bytes = line.rstrip("\n").encode("UTF-8")
- msgBytes = base64.b64decode(msgB64Bytes)
- except:
- self._log(logging.WARNING, "Error decoding message")
+ self._input_parser.feed_line(line)
+ except Exception as e:
+ self._log(logging.WARNING, "Error parsing input: %s" % str(e))
continue
- await client.room_send(
- room_id=self._joined_room_id,
- message_type="m.room.message",
- content={
- "msgtype": "m.text",
- "body": msgBytes.decode("UTF-8")
- }
- )
+ for content in self._input_parser.fetch_decoded():
+ await client.room_send(
+ room_id=self._joined_room_id,
+ message_type="m.room.message",
+ content=content
+ )
else:
self._log(logging.WARNING, "Dropping message cause no room joined")