Changeset 52:a6ed3b9703cb in ralphm-patches


Ignore:
Timestamp:
Jun 2, 2011, 8:05:36 PM (9 years ago)
Author:
Ralph Meijer <ralphm@…>
Branch:
default
Message:

Bring client service patch in line with API changes in switch to wokkel.im.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • xmpp_client_service.patch

    r51 r52  
    1 diff -r d7fa09914b70 doc/examples/client_service.tac
     1diff -r 5c11baa0ef4c doc/examples/client_service.tac
    22--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
    3 +++ b/doc/examples/client_service.tac   Wed May 25 09:46:06 2011 +0200
    4 @@ -0,0 +1,74 @@
     3+++ b/doc/examples/client_service.tac   Thu Jun 02 19:48:45 2011 +0200
     4@@ -0,0 +1,75 @@
    55+from twisted.application import service, strports
    66+from twisted.internet import defer
    77+
    8 +from wokkel import client, xmppim
     8+from wokkel import client, im
    99+from wokkel.component import InternalComponent, Router
    1010+from wokkel.generic import FallbackHandler
    1111+from wokkel.ping import PingHandler
    12 +from wokkel.xmppim import RosterItem
     12+from wokkel.im import RosterItem
    1313+
    1414+from twisted.words.protocols.jabber.jid import internJID as JID
     
    4444+
    4545+
    46 +class StaticRoster(xmppim.RosterServerProtocol):
     46+class StaticRoster(im.RosterServerProtocol):
    4747+
    4848+    def __init__(self, roster):
    49 +        xmppim.RosterServerProtocol.__init__(self)
     49+        im.RosterServerProtocol.__init__(self)
    5050+        self.roster = roster
    5151+
    52 +    def getRoster(self, entity):
    53 +        return defer.succeed(self.roster[entity.user].values())
     52+    def getRoster(self, request):
     53+        user = request.sender.user
     54+        return defer.succeed(self.roster[user].values())
    5455+
    5556+
     
    6465+sessionManager.setHandlerParent(component)
    6566+
    66 +xmppim.AccountIQHandler(sessionManager).setHandlerParent(component)
    67 +xmppim.AccountMessageHandler(sessionManager).setHandlerParent(component)
    68 +xmppim.PresenceServerHandler(sessionManager, domain, roster).setHandlerParent(component)
     67+im.AccountIQHandler(sessionManager).setHandlerParent(component)
     68+im.AccountMessageHandler(sessionManager).setHandlerParent(component)
     69+im.PresenceServerHandler(sessionManager, domain, roster).setHandlerParent(component)
    6970+FallbackHandler().setHandlerParent(component)
    7071+StaticRoster(roster).setHandlerParent(component)
     
    7778+
    7879+sessionManager.connectionManager = c2sFactory
    79 diff -r d7fa09914b70 wokkel/client.py
    80 --- a/wokkel/client.py  Wed May 25 09:40:28 2011 +0200
    81 +++ b/wokkel/client.py  Wed May 25 09:46:06 2011 +0200
     80diff -r 5c11baa0ef4c wokkel/client.py
     81--- a/wokkel/client.py  Thu Jun 02 17:35:28 2011 +0200
     82+++ b/wokkel/client.py  Thu Jun 02 19:48:45 2011 +0200
    8283@@ -10,13 +10,27 @@
    8384 that should probably eventually move there.
     
    470471+        else:
    471472+            raise Exception("No connection manager set")
    472 diff -r d7fa09914b70 wokkel/component.py
    473 --- a/wokkel/component.py       Wed May 25 09:40:28 2011 +0200
    474 +++ b/wokkel/component.py       Wed May 25 09:46:06 2011 +0200
     473diff -r 5c11baa0ef4c wokkel/component.py
     474--- a/wokkel/component.py       Thu Jun 02 17:35:28 2011 +0200
     475+++ b/wokkel/component.py       Thu Jun 02 19:48:45 2011 +0200
    475476@@ -313,12 +313,25 @@
    476477         """
     
    501502 
    502503 
    503 diff -r d7fa09914b70 wokkel/im.py
    504 --- a/wokkel/im.py      Wed May 25 09:40:28 2011 +0200
    505 +++ b/wokkel/im.py      Wed May 25 09:46:06 2011 +0200
    506 @@ -170,7 +170,10 @@
     504diff -r 5c11baa0ef4c wokkel/im.py
     505--- a/wokkel/im.py      Thu Jun 02 17:35:28 2011 +0200
     506+++ b/wokkel/im.py      Thu Jun 02 19:48:45 2011 +0200
     507@@ -10,7 +10,10 @@
     508 U{RFC 6121<http://www.xmpp.org/rfcs/rfc6121.html>} (XMPP IM).
     509 """
     510 
     511+import copy
     512+
     513 from twisted.internet import defer
     514+from twisted.python import log
     515 from twisted.words.protocols.jabber import jid
     516 from twisted.words.protocols.jabber import error
     517 from twisted.words.xish import domish
     518@@ -168,7 +171,10 @@
    507519         self.xmlstream.addObserver("/presence", self._onPresence)
    508520 
     
    516528 
    517529         presenceType = stanza.stanzaType or 'available'
    518 @@ -180,14 +183,19 @@
     530@@ -178,14 +184,19 @@
    519531         except KeyError:
    520532             return
     
    538550 
    539551     def errorReceived(self, presence):
    540 @@ -583,6 +591,436 @@
     552@@ -553,6 +564,440 @@
    541553 
    542554 
     
    568580+
    569581+        try:
    570 +            recipient = internJID(iq['to'])
     582+            recipient = jid.internJID(iq['to'])
    571583+        except KeyError:
    572584+            return
     
    618630+
    619631+        try:
    620 +            recipient = internJID(message['to'])
     632+            recipient = jid.internJID(message['to'])
    621633+        except KeyError:
    622634+            return
     
    751763+                continue
    752764+
    753 +            resourceJID = JID(tuple=(fromJID.user, fromJID.host, otherResource))
     765+            resourceJID = jid.JID(tuple=(fromJID.user,
     766+                                         fromJID.host,
     767+                                         otherResource))
    754768+            outPresence = clonePresence(presence)
    755769+            outPresence['to'] = resourceJID.full()
     
    769783+
    770784+            outPresence = clonePresence(presence)
    771 +            outPresence['to'] = item.jid.full()
    772 +
    773 +            if item.jid.host == self.domain:
     785+            outPresence['to'] = item.entity.full()
     786+
     787+            if item.entity.host == self.domain:
    774788+                # local contact
    775 +                if item.jid.user in self.presences:
     789+                if item.entity.user in self.presences:
    776790+                    # broadcast to contact's available resources
    777 +                    for itemResource in self.presences[item.jid.user]:
    778 +                        resourceJID = JID(tuple=(item.jid.user,
    779 +                                                 item.jid.host,
    780 +                                                 itemResource))
     791+                    for itemResource in self.presences[item.entity.user]:
     792+                        resourceJID = jid.JID(tuple=(item.entity.user,
     793+                                                     item.entity.host,
     794+                                                     itemResource))
    781795+                        self.sessionManager.deliverStanza(outPresence,
    782796+                                                          resourceJID)
     
    798812+            # send out probes
    799813+            for item in roster.itervalues():
    800 +                if item.subscriptionTo and item.jid.host != self.domain:
    801 +                    self.probe(item.jid, fromJID)
     814+                if item.subscriptionTo and item.entity.host != self.domain:
     815+                    self.probe(item.entity, fromJID)
    802816+        else:
    803817+            if resource not in self.presences[user]:
     
    817831+            for item in roster.itervalues():
    818832+                if item.subscriptionTo and \
    819 +                   item.jid.host == self.domain and \
    820 +                   item.jid.user in self.presences:
     833+                   item.entity.host == self.domain and \
     834+                   item.entity.user in self.presences:
    821835+                    for contactPresence in \
    822 +                            self.presences[item.jid.user].itervalues():
     836+                            self.presences[item.entity.user].itervalues():
    823837+                        outPresence = clonePresence(contactPresence)
    824838+                        outPresence['to'] = fromJID.userhost()
     
    856870+        if toJID.user in self.presences:
    857871+            for resource in self.presences[toJID.user]:
    858 +                resourceJID = JID(tuple=(toJID.user, toJID.host, resource))
     872+                resourceJID = jid.JID(tuple=(toJID.user,
     873+                                             toJID.host,
     874+                                             resource))
    859875+                self.sessionManager.deliverStanza(presence.element, resourceJID)
    860876+            self.remotePresences[toJID.user][fromJID] = presence
     
    975991     """
    976992     XMPP subprotocol handler for the roster, server side.
     993diff -r 5c11baa0ef4c wokkel/test/test_im.py
     994--- a/wokkel/test/test_im.py    Thu Jun 02 17:35:28 2011 +0200
     995+++ b/wokkel/test/test_im.py    Thu Jun 02 19:48:45 2011 +0200
     996@@ -13,7 +13,7 @@
     997 from twisted.words.xish import domish, utility
     998 
     999 from wokkel import im
     1000-from wokkel.generic import ErrorStanza, parseXml
     1001+from wokkel.generic import ErrorStanza, Stanza, parseXml
     1002 from wokkel.test.helpers import TestableRequestHandlerMixin, XmlStreamStub
     1003 
     1004 NS_XML = 'http://www.w3.org/XML/1998/namespace'
     1005@@ -846,6 +846,82 @@
     1006 
     1007 
     1008 
     1009+class AccountIQHandlerTest(unittest.TestCase):
     1010+    """
     1011+    Tests for L{im.AccountIQHandler}.
     1012+    """
     1013+
     1014+    def setUp(self):
     1015+        self.stub = XmlStreamStub()
     1016+        self.protocol = im.AccountIQHandler(None)
     1017+        self.protocol.makeConnection(self.stub.xmlstream)
     1018+        self.protocol.connectionInitialized()
     1019+
     1020+
     1021+    def test_onIQNotUser(self):
     1022+        """
     1023+        IQs to JIDs without local part are ignored.
     1024+        """
     1025+        xml = """
     1026+          <iq to='example.org'>
     1027+            <query xmlns='jabber:iq:version'/>
     1028+          </iq>
     1029+        """
     1030+
     1031+        iq = parseXml(xml)
     1032+        self.stub.send(iq)
     1033+
     1034+        self.assertFalse(getattr(iq, 'handled'))
     1035+
     1036+
     1037+
     1038+class AccountMessageHandlerTest(unittest.TestCase):
     1039+    """
     1040+    Tests for L{im.AccountMessageHandler}.
     1041+    """
     1042+
     1043+    def setUp(self):
     1044+        self.stub = XmlStreamStub()
     1045+        self.protocol = im.AccountMessageHandler(None)
     1046+        self.protocol.makeConnection(self.stub.xmlstream)
     1047+        self.protocol.connectionInitialized()
     1048+
     1049+
     1050+    def test_onMessageNotUser(self):
     1051+        """
     1052+        Messages to JIDs without local part are ignored.
     1053+        """
     1054+        xml = """
     1055+          <message to='example.org'>
     1056+            <body>Hello</body>
     1057+          </message>
     1058+        """
     1059+
     1060+        message = parseXml(xml)
     1061+        self.stub.send(message)
     1062+
     1063+        self.assertFalse(getattr(message, 'handled'))
     1064+
     1065+
     1066+
     1067+class ClonePresenceTest(unittest.TestCase):
     1068+    """
     1069+    Tests for L{im.clonePresence}.
     1070+    """
     1071+
     1072+    def test_rootElement(self):
     1073+        """
     1074+        The copied presence stanza is not identical, but renders identically.
     1075+        """
     1076+        originalElement = domish.Element((None, 'presence'))
     1077+        stanza = Stanza.fromElement(originalElement)
     1078+        copyElement = im.clonePresence(stanza)
     1079+
     1080+        self.assertNotIdentical(copyElement, originalElement)
     1081+        self.assertEquals(copyElement.toXml(), originalElement.toXml())
     1082+
     1083+
     1084+
     1085 class RosterServerProtocolTest(unittest.TestCase, TestableRequestHandlerMixin):
     1086     """
     1087     Tests for L{im.RosterServerProtocol}.
Note: See TracChangeset for help on using the changeset viewer.