Changeset 36:f2953cadca90 in ralphm-patches


Ignore:
Timestamp:
Feb 12, 2010, 8:07:12 PM (10 years ago)
Author:
Ralph Meijer <ralphm@…>
Branch:
default
Message:

Work on roster item representation.

Files:
1 added
3 edited

Legend:

Unmodified
Added
Removed
  • client_service_example.patch

    r35 r36  
    1 diff -r 0a3d1655a3e5 doc/examples/client_service.tac
     1diff -r 22c292560ce9 doc/examples/client_service.tac
    22--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
    3 +++ b/doc/examples/client_service.tac   Fri Feb 12 11:55:08 2010 +0100
    4 @@ -0,0 +1,41 @@
     3+++ b/doc/examples/client_service.tac   Fri Feb 12 20:06:47 2010 +0100
     4@@ -0,0 +1,56 @@
    55+from twisted.application import service
    66+from twisted.internet import defer
     
    88+from wokkel.client import ClientService
    99+from wokkel.generic import FallbackHandler
    10 +from wokkel.xmppim import RosterServerProtocol
     10+from wokkel.subprotocols import XMPPHandler
     11+from wokkel.xmppim import RosterItem, RosterServerProtocol
     12+
     13+from twisted.words.protocols.jabber.jid import internJID as JID
    1114+
    1215+import socket
     
    1720+    def __init__(self):
    1821+        RosterServerProtocol.__init__(self)
    19 +        self.roster = {'ralphm':
    20 +                           [{'jid': 'intosi@' + domain,
    21 +                             'name': 'Intosi',
    22 +                             'subscription': 'both',
    23 +                             'ask': None,
    24 +                             'groups': ['Friends']
    25 +                            },
    26 +                            {'jid': 'termie@' + domain,
    27 +                             'name': 'termie',
    28 +                             'subscription': 'both',
    29 +                             'ask': None,
    30 +                             'groups': []
    31 +                            }],
    32 +                       'test':
    33 +                            [
    34 +                            ]}
     22+        self.roster = {'ralphm': [
     23+                           RosterItem(JID('intosi@'+domain),
     24+                                      subscriptionTo=True,
     25+                                      subscriptionFrom=True,
     26+                                      name='Intosi',
     27+                                      groups=set(['Friends'])),
     28+                           RosterItem(JID('termie@'+domain),
     29+                                      subscriptionTo=True,
     30+                                      subscriptionFrom=True,
     31+                                      name='termie'),
     32+                           ],
     33+                       'test': [],
     34+                       }
    3535+
    3636+    def getRoster(self, entity):
    3737+        return defer.succeed(self.roster[entity.user])
     38+
     39+
     40+class Hello(XMPPHandler):
     41+
     42+    def q(self):
     43+        from wokkel.xmppim import AvailabilityPresence
     44+        p = AvailabilityPresence(JID('ralphm@'+domain+'/default'), JID('termie@'+domain+'/Home'), show='chat')
     45+        self.parent.send(p.toElement())
     46+
     47+
     48+    def connectionInitialized(self):
     49+        from twisted.internet import reactor
     50+        reactor.callLater(5, self.q)
     51+
    3852+
    3953+
     
    4357+FallbackHandler().setHandlerParent(clientService)
    4458+StaticRoster().setHandlerParent(clientService)
     59+Hello().setHandlerParent(clientService)
    4560+clientService.setServiceParent(application)
  • roster_server.patch

    r34 r36  
    1 diff -r 09858bbc7f56 wokkel/xmppim.py
    2 --- a/wokkel/xmppim.py  Fri Feb 12 09:37:28 2010 +0100
    3 +++ b/wokkel/xmppim.py  Fri Feb 12 09:40:15 2010 +0100
     1diff -r 7b9f484b0b44 wokkel/xmppim.py
     2--- a/wokkel/xmppim.py  Fri Feb 12 19:49:36 2010 +0100
     3+++ b/wokkel/xmppim.py  Fri Feb 12 19:53:42 2010 +0100
    44@@ -12,6 +12,7 @@
    55 All of it should eventually move to Twisted.
     
    2020     def __init__(self, to=None, type=None):
    2121         domish.Element.__init__(self, (None, "presence"))
    22 @@ -605,6 +609,7 @@
    23          self.groups = set()
     22@@ -636,6 +640,7 @@
     23 
    2424 
    2525 
     
    2828     """
    2929     Client side XMPP roster protocol.
    30 @@ -614,6 +619,7 @@
     30@@ -645,6 +650,7 @@
    3131         ROSTER_SET = "/iq[@type='set']/query[@xmlns='%s']" % NS_ROSTER
    3232         self.xmlstream.addObserver(ROSTER_SET, self._onRosterSet)
     
    3636         jid = JID(element['jid'])
    3737         item = RosterItem(jid)
    38 @@ -628,6 +634,7 @@
     38@@ -659,6 +665,7 @@
    3939 
    4040         return item
     
    4444         """
    4545         Retrieve contact list.
    46 @@ -683,6 +690,7 @@
     46@@ -713,6 +720,7 @@
    4747             item = self._parseRosterItem(iq.query.item)
    4848             self.onRosterSet(item)
     
    5252         """
    5353         Called when a roster push for a new or update item was received.
    54 @@ -691,6 +699,7 @@
     54@@ -721,6 +729,7 @@
    5555         @type item: L{RosterItem}
    5656         """
     
    6060         """
    6161         Called when a roster push for the removal of an item was received.
    62 @@ -699,6 +708,57 @@
     62@@ -729,6 +738,48 @@
    6363         @type entity: L{JID}
    6464         """
     
    7676+
    7777+
    78 +    def _toRosterReply(self, items, iq):
     78+    def _toRosterReply(self, roster, iq):
    7979+        response = xmlstream.toResponse(iq, 'result')
    8080+        response.addElement((NS_ROSTER, 'query'))
    8181+
    82 +        for item in items:
    83 +            element = response.query.addElement('item')
    84 +            element['jid'] = item['jid']
    85 +            if item['name']:
    86 +                element['name'] = item['name']
    87 +            element['subscription'] = item['subscription']
    88 +            if item['ask']:
    89 +                element['ask'] = item['ask']
    90 +
    91 +            for group in item['groups']:
    92 +                element.addElement('group', content=group)
     82+        for item in roster:
     83+            response.query.addChild(item.toElement())
    9384+
    9485+        return response
  • series

    r34 r36  
     1roster_item.patch
     2roster_server.patch
    13xmpp_client_listener.patch
    24xmpp_client_service.patch
    3 roster_server.patch
    45client_service_example.patch
    56component_server.patch
Note: See TracChangeset for help on using the changeset viewer.