aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStavros Korokithakis <hi@stavros.io>2018-12-07 16:49:14 +0200
committerStavros Korokithakis <hi@stavros.io>2018-12-07 16:49:14 +0200
commit45f3618fb9cde3031f106582f2e8d6d317397a48 (patch)
tree8e8d03b5258768a8dd6cbbc513346e5a5a687959
parent7659e3898fd772204a221679ee4ce032424ab485 (diff)
downloadpysignald-45f3618fb9cde3031f106582f2e8d6d317397a48.tar.gz
pysignald-45f3618fb9cde3031f106582f2e8d6d317397a48.zip
Add optional non-blocking
-rw-r--r--signald/main.py27
1 files changed, 24 insertions, 3 deletions
diff --git a/signald/main.py b/signald/main.py
index 2c07d39..2c12322 100644
--- a/signald/main.py
+++ b/signald/main.py
@@ -36,13 +36,16 @@ class Signal:
s.connect(self.socket_path)
return s
- def _send_command(self, payload: dict):
+ def _send_command(self, payload: dict, block: bool = False):
s = self._get_socket()
msg_id = self._get_id()
payload["id"] = msg_id
s.recv(1024) # Flush the buffer.
s.send(json.dumps(payload).encode("utf8") + b"\n")
+ if not block:
+ return
+
response = s.recv(4 * 1024)
for line in response.split(b"\n"):
if msg_id.encode("utf8") not in line:
@@ -57,10 +60,20 @@ class Signal:
raise ValueError("unexpected error occurred")
def register(self, voice=False):
+ """
+ Register the given number.
+
+ voice: Whether to receive a voice call or an SMS for verification.
+ """
payload = {"type": "register", "username": self.username, "voice": voice}
self._send_command(payload)
def verify(self, code: str):
+ """
+ Verify the given number by entering the code you received.
+
+ code: The code Signal sent you.
+ """
payload = {"type": "verify", "username": self.username, "code": code}
self._send_command(payload)
@@ -99,6 +112,14 @@ class Signal:
],
)
- def send_message(self, recipient: str, message: str) -> None:
+ def send_message(self, recipient: str, message: str, block: bool = True) -> None:
+ """
+ Send a message.
+
+ recipient: The recipient's phone number, in E.123 format.
+ message: The message to send.
+ block: Whether to block while sending. If you choose not to block, you won't get an exception if there
+ are any errors.
+ """
payload = {"type": "send", "username": self.username, "recipientNumber": recipient, "messageBody": message}
- self._send_command(payload)
+ self._send_command(payload, block)