From 52f6b14838965ce5e60f03539bd0064083caa961 Mon Sep 17 00:00:00 2001 From: Joscha Date: Mon, 23 May 2016 22:56:44 +0200 Subject: [PATCH] Add error handling --- yaboli/connection.py | 9 ++++-- yaboli/room.py | 70 +++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 76 insertions(+), 3 deletions(-) diff --git a/yaboli/connection.py b/yaboli/connection.py index 6d6081d..57731b8 100644 --- a/yaboli/connection.py +++ b/yaboli/connection.py @@ -189,10 +189,15 @@ class Connection(): else: data = None - self._callbacks.call(packet["type"], data) + if "error" in packet: + error = packet["error"] + else: + error = None + + self._callbacks.call(packet["type"], data, error) if "id" in packet: - self._id_callbacks.call(packet["id"], data) + self._id_callbacks.call(packet["id"], data, error) self._id_callbacks.remove(packet["id"]) def _send_json(self, data): diff --git a/yaboli/room.py b/yaboli/room.py index e9bcc35..3b4cb7e 100644 --- a/yaboli/room.py +++ b/yaboli/room.py @@ -347,10 +347,12 @@ class Room(): self._callbacks.call("stop") - def _handle_bounce_event(self, data): + def _handle_bounce_event(self, data, error): """ TODO """ + if error: + self.stop() if self.password is not None: self.authenticate(self.password) @@ -369,6 +371,11 @@ class Room(): TODO """ + if error: + self._callbacks.call("error", "hello-event", error) + self.stop() + return + self.session = session.Session.from_data(data["session"]) self._sessions.add(self.session) self._callbacks.call("identity") @@ -382,6 +389,11 @@ class Room(): TODO """ + if error: + self._callbacks.call("error", "join-event", error) + self.update_sessions() + return + ses = session.Session.from_data(data) self._sessions.add(ses) self._callbacks.call("join", ses) @@ -392,6 +404,10 @@ class Room(): TODO """ + if error: + self._callbacks.call("error", "network-event", error) + return + if data["type"] == "partition": self._sessions.remove_on_network_partition(data["server_id"], data["server_era"]) self._callbacks.call("sessions") @@ -401,6 +417,11 @@ class Room(): TODO """ + if error: + self._callbacks.call("error", "nick-event", error) + self.update_sessions() + return + ses = self.get_session(data["session_id"]) if ses: ses.name = data["to"] @@ -412,6 +433,10 @@ class Room(): TODO """ + if error: + self._callbacks.call("error", "edit-message-event", error) + return + msg = message.Message.from_data(data) if msg: self._messages.add(msg) @@ -428,6 +453,11 @@ class Room(): TODO """ + if error: + self._callbacks.call("error", "part-event", error) + self.update_sessions() + return + ses = session.Session.from_data(data) if ses: self._sessions.remove(ses.session_id) @@ -440,6 +470,10 @@ class Room(): TODO """ + if error: + self._callbacks.call("error", "ping-event", error) + return + self.ping_last = data["time"] self.ping_next = data["next"] self.ping_offset = self.ping_last - time.time() @@ -452,6 +486,10 @@ class Room(): TODO """ + if error: + self._callbacks.call("error", "send-event", error) + return + msg = message.Message.from_data(data) self._callbacks.call("message", msg) @@ -463,6 +501,11 @@ class Room(): TODO """ + if error: + self._callbacks.call("error", "snapshot-event", error) + self.stop() + return + self.set_nick(self.nick) if "pm_with_nick" in data or "pm_with_user_id" in data: @@ -489,6 +532,11 @@ class Room(): TODO """ + if error: + self._callbacks.call("error", "auth-reply", error) + self.stop() + return + if not data["success"]: self._con.stop() @@ -497,6 +545,10 @@ class Room(): TODO """ + if error: + self._callbacks.call("error", "get-message-reply", error) + return + self._messages.add_from_data(data) self._callbacks.call("messages") @@ -505,6 +557,10 @@ class Room(): TODO """ + if error: + self._callbacks.call("error", "log-reply", error) + return + for msgdata in data["log"]: self._messages.add_from_data(msgdata) self._callbacks.call("messages") @@ -514,6 +570,10 @@ class Room(): TODO """ + if error: + self._callbacks.call("error", "nick-reply", error) + return + if "to" in data: self.session.name = self.nick self._callbacks.call("identity") @@ -528,6 +588,10 @@ class Room(): TODO """ + if error: + self._callbacks.call("error", "send-reply", error) + return + self._messages.add_from_data(data) self._callbacks.call("messages") @@ -536,6 +600,10 @@ class Room(): TODO """ + if error: + self._callbacks.call("error", "who-reply", error) + return + self._sessions.remove_all() for sesdata in data["listing"]: self._sessions.add_from_data(sesdata)