From 48313c54755a147e58f014fcb1bf69305166d5f0 Mon Sep 17 00:00:00 2001 From: moyamo Date: Sun, 30 Aug 2015 22:18:03 +0200 Subject: [PATCH] Minor fixes --- session.py | 44 +++++++++++++++++++++++--------------------- yowsupwrapper.py | 18 +++++++++++++++--- 2 files changed, 38 insertions(+), 24 deletions(-) diff --git a/session.py b/session.py index e7cd9b6..8eec4a9 100644 --- a/session.py +++ b/session.py @@ -91,6 +91,8 @@ class Session(YowsupApp): self.backend = backend self.user = user self.legacyName = legacyName + self.buddies = BuddyList(self.legacyName, self.db) + self.bot = Bot(self) self.status = protocol_pb2.STATUS_NONE self.statusMessage = '' @@ -191,7 +193,7 @@ class Session(YowsupApp): ) # Called by superclass - def onMessageReceived(self, messageEntity): + def onMessage(self, messageEntity): self.logger.debug(str(messageEntity)) buddy = messageEntity.getFrom().split('@')[0] messageContent = utils.softToUni(messageEntity.getBody()) @@ -226,26 +228,26 @@ class Session(YowsupApp): self.logger.info("Message sent from %s to %s: %s", self.legacyName, sender, message) message = message.encode("utf-8") - if sender == "bot": - self.bot.parse(message) - elif "-" in sender: # group msg - if "/" in sender: - room, buddy = sender.split("/") - self.sendTextMessage(buddy + '@s.whatsapp.net', message) - else: - room = sender - group = self.groups[room] - - self.backend.handleMessage(self.user, room, message, group.nick) - self.sendTextMessage(room + '@g.us', message) - - else: # private msg - buddy = sender - if message == "\\lastseen": - self.presenceRequested.append(buddy) - self.call("presence_request", buddy = (buddy + "@s.whatsapp.net",)) - else: - self.sendTextMessage(buddy + '@s.whatsapp.net', message) +# if sender == "bot": +# self.bot.parse(message) +# elif "-" in sender: # group msg +# if "/" in sender: +# room, buddy = sender.split("/") +# self.sendTextMessage(buddy + '@s.whatsapp.net', message) +# else: +# room = sender +# group = self.groups[room] +# +# self.backend.handleMessage(self.user, room, message, group.nick) +# self.sendTextMessage(room + '@g.us', message) +# +# else: # private msg +# buddy = sender +# if message == "\\lastseen": +# self.presenceRequested.append(buddy) +# self.call("presence_request", buddy = (buddy + "@s.whatsapp.net",)) +# else: + self.sendTextMessage(sender + '@s.whatsapp.net', message) def sendMessageToXMPP(self, buddy, messageContent, timestamp = ""): if timestamp: diff --git a/yowsupwrapper.py b/yowsupwrapper.py index bc7e592..576fa31 100644 --- a/yowsupwrapper.py +++ b/yowsupwrapper.py @@ -3,8 +3,10 @@ from yowsup import env from yowsup.stacks import YowStack from yowsup.common import YowConstants from yowsup.layers import YowLayerEvent, YowParallelLayer +from yowsup.layers.auth import AuthError # Layers +from yowsup.layers.axolotl import YowAxolotlLayer from yowsup.layers.auth import YowCryptLayer, YowAuthenticationProtocolLayer from yowsup.layers.coder import YowCoderLayer from yowsup.layers.logger import YowLoggerLayer @@ -36,7 +38,7 @@ class YowsupApp(object): def __init__(self): env.CURRENT_ENV = env.S40YowsupEnv() - layers = (SpectrumLayer, + layers = (YowsupAppLayer, YowParallelLayer((YowAuthenticationProtocolLayer, YowMessagesProtocolLayer, YowReceiptProtocolLayer, @@ -123,7 +125,7 @@ class YowsupApp(object): - message: (str) the body of the message """ messageEntity = TextMessageProtocolEntity(message, to = to) - self.stack.toLower(messageEntity) + self.sendEntity(messageEntity) def onAuthSuccess(self, status, kind, creation, expiration, props, nonce, t): """ @@ -181,11 +183,18 @@ class YowsupApp(object): """ Called when disconnected from whatsapp """ + + def sendEntity(self, entity): + """Sends an entity down the stack (as if YowsupAppLayer called toLower)""" + self.stack.broadcastEvent(YowLayerEvent(YowsupAppLayer.TO_LOWER_EVENT, + entity = entity + )) from yowsup.layers.interface import YowInterfaceLayer, ProtocolEntityCallback class YowsupAppLayer(YowInterfaceLayer): - EVENT_START = 'transwhat.event.SpectrumLayer.start' + EVENT_START = 'transwhat.event.YowsupAppLayer.start' + TO_LOWER_EVENT = 'transwhat.event.YowsupAppLayer.to_lower' def onEvent(self, layerEvent): # We cannot pass instance varaibles in through init, so we use an event @@ -198,6 +207,9 @@ class YowsupAppLayer(YowInterfaceLayer): elif layerEvent.getName() == YowNetworkLayer.EVENT_STATE_DISCONNECTED: self.caller.onDisconnect() return True + elif layerEvent.getName() == YowsupAppLayer.TO_LOWER_EVENT: + self.toLower(layerEvent.getArg('entity')) + return True @ProtocolEntityCallback('success') def onAuthSuccess(self, entity):