From ebcdbfa987cfd0434a0915e22905a471d7fbd31b Mon Sep 17 00:00:00 2001 From: Stavros Korokithakis Date: Thu, 6 Dec 2018 17:14:15 +0200 Subject: Add message type --- signald/main.py | 23 +++++++++++++++++++++-- signald/types.py | 18 +++++++++++++++++- 2 files changed, 38 insertions(+), 3 deletions(-) (limited to 'signald') 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} diff --git a/signald/types.py b/signald/types.py index 814b967..75cdcbd 100644 --- a/signald/types.py +++ b/signald/types.py @@ -1,6 +1,22 @@ import attr +@attr.s +class Attachment: + content_type = attr.ib(type=str) + id = attr.ib(type=str) + size = attr.ib(type=int) + stored_filename = attr.ib(type=str) + + @attr.s class Message: - pass + username = attr.ib(type=str) + source = attr.ib(type=str) + message = attr.ib(type=str) + source_device = attr.ib(type=int, default=0) + timestamp = attr.ib(type=int, default=None) + timestamp_iso = attr.ib(type=str, default=None) + expiration_secs = attr.ib(type=int, default=0) + attachments = attr.ib(type=list, default=[]) + quote = attr.ib(type=str, default=None) -- cgit v1.2.3-54-g00ecf