diff options
Diffstat (limited to 'signald/main.py')
-rw-r--r-- | signald/main.py | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/signald/main.py b/signald/main.py index 61ae1a5..2c07d39 100644 --- a/signald/main.py +++ b/signald/main.py @@ -3,7 +3,7 @@ import random import socket from typing import Iterator, List # noqa -from .types import Message +from .types import Attachment, Message def readlines(s: socket.socket) -> Iterator[bytes]: @@ -78,7 +78,26 @@ class Signal: if message.get("type") != "message": continue - yield message + message = message["data"] + + yield Message( + username=message["username"], + source=message["source"], + message=message["dataMessage"]["message"], + source_device=message["sourceDevice"], + timestamp=message["dataMessage"]["timestamp"], + timestamp_iso=message["timestampISO"], + expiration_secs=message["dataMessage"]["expiresInSeconds"], + attachments=[ + Attachment( + content_type=attachment["contentType"], + id=attachment["id"], + size=attachment["size"], + stored_filename=attachment["storedFilename"], + ) + for attachment in message["dataMessage"]["attachments"] + ], + ) def send_message(self, recipient: str, message: str) -> None: payload = {"type": "send", "username": self.username, "recipientNumber": recipient, "messageBody": message} |