From 757d1bd7754487e3228bb1aee23ec92e513afead Mon Sep 17 00:00:00 2001 From: Jonathan Frederickson Date: Mon, 22 May 2017 18:25:01 -0400 Subject: [PATCH 1/3] Add status/presence list support --- matrix_client/api.py | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/matrix_client/api.py b/matrix_client/api.py index 82e06bda..103157d4 100644 --- a/matrix_client/api.py +++ b/matrix_client/api.py @@ -581,6 +581,46 @@ def set_avatar_url(self, user_id, avatar_url): content = {"avatar_url": avatar_url} self._send("PUT", "/profile/%s/avatar_url" % user_id, content) + def get_status(self, user_id): + content = self._send("GET", "/presence/%s/status" % user_id) + return content + + def set_status(self, user_id, status_msg=None, presence="online"): + if(presence != "online" + and presence != "offline" + and presence != "unavailable"): + raise ValueError("Presence must be one of: online, offline, unavailable") + if status_msg is not None: + content = {"presence": presence} + content = {"status_msg": status_msg, "presence": presence} + self._send("PUT", "/presence/%s/status" % user_id, content) + + def get_presence_list(self, user_id): + content = self._send("GET", "/presence/list/%s" % user_id) + return content + + def presence_list_invite_users(self, user_id, invite_list): + """Invite users to your presence list + + Args: + user_id(str): Your Matrix ID + invite_list(list(str)): List of Matrix IDs to add to your presence list + + """ + content = {"invite": invite_list} + self._send("POST", "/presence/list/%s" % user_id, content) + + def presence_list_drop_users(self, user_id, drop_list): + """Drop users from your presence list + + Args: + user_id(str): Your Matrix ID + drop_list(list(str)): List of Matrix IDs to remove from your presence list + + """ + content = {"drop": drop_list} + self._send("POST", "/presence/list/%s" % user_id, content) + def get_download_url(self, mxcurl): if mxcurl.startswith('mxc://'): return self.base_url + "/_matrix/media/r0/download/" + mxcurl[6:] From e1ab24d6e526ec088a653352887962ff64f9c1fb Mon Sep 17 00:00:00 2001 From: Jonathan Frederickson Date: Tue, 23 May 2017 06:58:20 -0400 Subject: [PATCH 2/3] Only include a status_msg if one is passed to set_presence --- matrix_client/api.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/matrix_client/api.py b/matrix_client/api.py index 103157d4..17e3109c 100644 --- a/matrix_client/api.py +++ b/matrix_client/api.py @@ -592,7 +592,8 @@ def set_status(self, user_id, status_msg=None, presence="online"): raise ValueError("Presence must be one of: online, offline, unavailable") if status_msg is not None: content = {"presence": presence} - content = {"status_msg": status_msg, "presence": presence} + else: + content = {"status_msg": status_msg, "presence": presence} self._send("PUT", "/presence/%s/status" % user_id, content) def get_presence_list(self, user_id): From 71788f17d43a3d50e48f913e3fd4711fe42e1e0f Mon Sep 17 00:00:00 2001 From: Jonathan Frederickson Date: Tue, 23 May 2017 07:01:04 -0400 Subject: [PATCH 3/3] Reverse status_msg check Mixed up the logic, whoops... --- matrix_client/api.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/matrix_client/api.py b/matrix_client/api.py index 17e3109c..1a30f384 100644 --- a/matrix_client/api.py +++ b/matrix_client/api.py @@ -591,9 +591,9 @@ def set_status(self, user_id, status_msg=None, presence="online"): and presence != "unavailable"): raise ValueError("Presence must be one of: online, offline, unavailable") if status_msg is not None: - content = {"presence": presence} - else: content = {"status_msg": status_msg, "presence": presence} + else: + content = {"presence": presence} self._send("PUT", "/presence/%s/status" % user_id, content) def get_presence_list(self, user_id):