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 +++++++++++++++++- tests/test_signald.py | 9 ++++++--- 3 files changed, 44 insertions(+), 6 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} 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) diff --git a/tests/test_signald.py b/tests/test_signald.py index 8824272..801192b 100644 --- a/tests/test_signald.py +++ b/tests/test_signald.py @@ -1,5 +1,8 @@ -from signald import Signal - - def test_signal(): + from signald import Signal + from signald.types import Message, Attachment + + # Smoke tests. Signal("+1234567890") + Message("+1234567890", "+1234567891", "Hello!") + Attachment("application/json", "123", 123, "/var/123") -- cgit v1.2.3-54-g00ecf