From 272e82aa76552030e8aa0c6a3f8294ec371a216d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?poljar=20=28Damir=20Jeli=C4=87=29?= Date: Wed, 14 Feb 2018 14:52:21 +0100 Subject: [PATCH] Add invite event class. --- matrix/api.py | 13 ++++++++++++- matrix/events.py | 25 +++++++++++++++++++++++++ matrix/messages.py | 8 ++++++++ 3 files changed, 45 insertions(+), 1 deletion(-) diff --git a/matrix/api.py b/matrix/api.py index 62a490d..e29fcc4 100644 --- a/matrix/api.py +++ b/matrix/api.py @@ -471,9 +471,10 @@ class MatrixPartMessage(MatrixMessage): class MatrixInviteMessage(MatrixMessage): def __init__(self, client, room_id, user_id): self.room_id = room_id + self.user_id = user_id data = {"room_id": self.room_id, - "user_id": user_id} + "user_id": self.user_id} MatrixMessage.__init__( self, @@ -482,6 +483,16 @@ class MatrixInviteMessage(MatrixMessage): data ) + def decode_body(self, server): + object_hook = partial( + MatrixEvents.MatrixInviteEvent.from_dict, + server, + self.room_id, + self.user_id + ) + + return self._decode(server, object_hook) + class MatrixUser: def __init__(self, name, display_name): diff --git a/matrix/events.py b/matrix/events.py index 5417bf5..b4ee6fc 100644 --- a/matrix/events.py +++ b/matrix/events.py @@ -252,3 +252,28 @@ class MatrixPartEvent(MatrixEvent): False, parsed_dict ) + + +class MatrixInviteEvent(MatrixEvent): + def __init__(self, server, room_id, user_id): + self.room_id = room_id + self.user_id = user_id + MatrixEvent.__init__(self, server) + + @classmethod + def from_dict(cls, server, room_id, user_id, parsed_dict): + try: + if parsed_dict == {}: + return cls( + server, + room_id, + user_id) + + raise KeyError + except KeyError: + return MatrixErrorEvent.from_dict( + server, + "Error inviting user", + False, + parsed_dict + ) diff --git a/matrix/messages.py b/matrix/messages.py index b20450e..9cd9fe3 100644 --- a/matrix/messages.py +++ b/matrix/messages.py @@ -695,6 +695,10 @@ def matrix_handle_message( event = message.event event.execute() + elif message_type is MessageType.INVITE: + event = message.event + event.execute() + elif message_type is MessageType.SEND: event = message.event event.execute() @@ -795,6 +799,10 @@ def handle_http_response(server, message): event = message.event event.execute() + elif message.type == MessageType.INVITE: + event = message.event + event.execute() + else: error_message = ("{prefix}Unhandled 403 error, please inform the " "developers about this: {error}").format(