source:
ralphm-patches/deprecate_xmpphandler.patch
Last change on this file was 47:f6d222b68f1c, checked in by Ralph Meijer <ralphm@…>, 11 years ago | |
---|---|
File size: 14.7 KB |
-
wokkel/disco.py
# HG changeset patch # Parent ebdb7afc619efdbb2a6ec82470a7e635634efbad diff -r ebdb7afc619e wokkel/disco.py
a b 12 12 13 13 from twisted.internet import defer 14 14 from twisted.words.protocols.jabber import error, jid 15 from twisted.words.protocols.jabber.xmlstream import XMPPHandler 15 16 from twisted.words.xish import domish 16 17 17 18 from wokkel import data_form 18 19 from wokkel.compat import IQ 19 20 from wokkel.iwokkel import IDisco 20 from wokkel.subprotocols import IQHandlerMixin , XMPPHandler21 from wokkel.subprotocols import IQHandlerMixin 21 22 22 23 NS_DISCO = 'http://jabber.org/protocol/disco' 23 24 NS_DISCO_INFO = NS_DISCO + '#info' -
wokkel/generic.py
diff -r ebdb7afc619e wokkel/generic.py
a b 22 22 23 23 from wokkel import disco 24 24 from wokkel.iwokkel import IDisco 25 from wokkel.subprotocols import XMPPHandler26 25 27 26 IQ_GET = '/iq[@type="get"]' 28 27 IQ_SET = '/iq[@type="set"]' … … 68 67 69 68 70 69 71 class FallbackHandler( XMPPHandler):70 class FallbackHandler(xmlstream.XMPPHandler): 72 71 """ 73 72 XMPP subprotocol handler that catches unhandled iq requests. 74 73 … … 89 88 90 89 91 90 92 class VersionHandler( XMPPHandler):91 class VersionHandler(xmlstream.XMPPHandler): 93 92 """ 94 93 XMPP subprotocol handler for XMPP Software Version. 95 94 -
wokkel/iwokkel.py
diff -r ebdb7afc619e wokkel/iwokkel.py
a b 5 5 Wokkel interfaces. 6 6 """ 7 7 8 from zope.interface import Attribute, Interface 9 10 class IXMPPHandler(Interface): 11 """ 12 Interface for XMPP protocol handlers. 13 14 Objects that provide this interface can be added to a stream manager to 15 handle of (part of) an XMPP extension protocol. 16 """ 17 18 parent = Attribute("""XML stream manager for this handler""") 19 xmlstream = Attribute("""The managed XML stream""") 20 21 def setHandlerParent(parent): 22 """ 23 Set the parent of the handler. 24 25 @type parent: L{IXMPPHandlerCollection} 26 """ 27 28 29 def disownHandlerParent(parent): 30 """ 31 Remove the parent of the handler. 32 33 @type parent: L{IXMPPHandlerCollection} 34 """ 35 36 37 def makeConnection(xs): 38 """ 39 A connection over the underlying transport of the XML stream has been 40 established. 41 42 At this point, no traffic has been exchanged over the XML stream 43 given in C{xs}. 44 45 This should setup L{xmlstream} and call L{connectionMade}. 46 47 @type xs: L{XmlStream<twisted.words.protocols.jabber.XmlStream>} 48 """ 49 50 51 def connectionMade(): 52 """ 53 Called after a connection has been established. 54 55 This method can be used to change properties of the XML Stream, its 56 authenticator or the stream manager prior to stream initialization 57 (including authentication). 58 """ 59 60 61 def connectionInitialized(): 62 """ 63 The XML stream has been initialized. 64 65 At this point, authentication was successful, and XML stanzas can be 66 exchanged over the XML stream L{xmlstream}. This method can be 67 used to setup observers for incoming stanzas. 68 """ 69 70 71 def connectionLost(reason): 72 """ 73 The XML stream has been closed. 74 75 Subsequent use of L{parent.send} will result in data being queued 76 until a new connection has been established. 77 78 @type reason: L{twisted.python.failure.Failure} 79 """ 80 81 82 83 class IXMPPHandlerCollection(Interface): 84 """ 85 Collection of handlers. 86 87 Contain several handlers and manage their connection. 88 """ 89 90 def __iter__(): 91 """ 92 Get an iterator over all child handlers. 93 """ 94 95 96 def addHandler(handler): 97 """ 98 Add a child handler. 99 100 @type handler: L{IXMPPHandler} 101 """ 102 103 104 def removeHandler(handler): 105 """ 106 Remove a child handler. 107 108 @type handler: L{IXMPPHandler} 109 """ 110 111 8 from zope.interface import Interface 112 9 113 10 class IDisco(Interface): 114 11 """ -
wokkel/ping.py
diff -r ebdb7afc619e wokkel/ping.py
a b 14 14 15 15 from twisted.words.protocols.jabber.error import StanzaError 16 16 from twisted.words.protocols.jabber.xmlstream import IQ, toResponse 17 18 try: 19 from twisted.words.protocols.xmlstream import XMPPHandler 20 except ImportError: 21 from wokkel.subprotocols import XMPPHandler 17 from twisted.words.protocols.jabber.xmlstream import XMPPHandler 22 18 23 19 from wokkel import disco, iwokkel 24 20 -
wokkel/pubsub.py
diff -r ebdb7afc619e wokkel/pubsub.py
a b 15 15 from twisted.internet import defer 16 16 from twisted.python import log 17 17 from twisted.words.protocols.jabber import jid, error 18 from twisted.words.protocols.jabber.xmlstream import XMPPHandler 18 19 from twisted.words.xish import domish 19 20 20 21 from wokkel import disco, data_form, generic, shim 21 22 from wokkel.compat import IQ 22 from wokkel.subprotocols import IQHandlerMixin , XMPPHandler23 from wokkel.subprotocols import IQHandlerMixin 23 24 from wokkel.iwokkel import IPubSubClient, IPubSubService, IPubSubResource 24 25 25 26 # Iq get and set XPath queries -
wokkel/subprotocols.py
diff -r ebdb7afc619e wokkel/subprotocols.py
a b 7 7 XMPP subprotocol support. 8 8 """ 9 9 10 from zope.interface import implements11 12 10 from twisted.internet import defer 13 from twisted.python import log11 from twisted.python import deprecate, log, versions 14 12 from twisted.words.protocols.jabber import error, xmlstream 15 13 from twisted.words.protocols.jabber.xmlstream import toResponse 14 from twisted.words.protocols.jabber.xmlstream import XMPPHandler 15 from twisted.words.protocols.jabber.xmlstream import XMPPHandlerCollection 16 16 from twisted.words.xish import xpath 17 17 from twisted.words.xish.domish import IElement 18 18 19 from wokkel.iwokkel import IXMPPHandler, IXMPPHandlerCollection 19 _deprecatedVersion = versions.Version("wokkel", 0, 7, 0) 20 20 21 class XMPPHandler(object): 22 """ 23 XMPP protocol handler. 21 deprecate.deprecatedModuleAttribute( 22 _deprecatedVersion, 23 "use twisted.words.protocols.jabber.xmlstream.XMPPHandler instead.", 24 __name__, 25 'XMPPHandler') 24 26 25 Classes derived from this class implement (part of) one or more XMPP 26 extension protocols, and are referred to as a subprotocol implementation. 27 """ 28 29 implements(IXMPPHandler) 30 31 def __init__(self): 32 self.parent = None 33 self.xmlstream = None 34 35 36 def setHandlerParent(self, parent): 37 self.parent = parent 38 self.parent.addHandler(self) 39 40 41 def disownHandlerParent(self, parent): 42 self.parent.removeHandler(self) 43 self.parent = None 44 45 46 def makeConnection(self, xs): 47 self.xmlstream = xs 48 self.connectionMade() 49 50 51 def connectionMade(self): 52 """ 53 Called after a connection has been established. 54 55 Can be overridden to perform work before stream initialization. 56 """ 57 58 59 def connectionInitialized(self): 60 """ 61 The XML stream has been initialized. 62 63 Can be overridden to perform work after stream initialization, e.g. to 64 set up observers and start exchanging XML stanzas. 65 """ 66 67 68 def connectionLost(self, reason): 69 """ 70 The XML stream has been closed. 71 72 This method can be extended to inspect the C{reason} argument and 73 act on it. 74 """ 75 self.xmlstream = None 76 77 78 def send(self, obj): 79 """ 80 Send data over the managed XML stream. 81 82 @note: The stream manager maintains a queue for data sent using this 83 method when there is no current initialized XML stream. This 84 data is then sent as soon as a new stream has been established 85 and initialized. Subsequently, L{connectionInitialized} will be 86 called again. If this queueing is not desired, use C{send} on 87 C{self.xmlstream}. 88 89 @param obj: data to be sent over the XML stream. This is usually an 90 object providing L{domish.IElement}, or serialized XML. See 91 L{xmlstream.XmlStream} for details. 92 """ 93 self.parent.send(obj) 94 95 96 97 class XMPPHandlerCollection(object): 98 """ 99 Collection of XMPP subprotocol handlers. 100 101 This allows for grouping of subprotocol handlers, but is not an 102 L{XMPPHandler} itself, so this is not recursive. 103 104 @ivar handlers: List of protocol handlers. 105 @type handlers: L{list} of objects providing 106 L{IXMPPHandler} 107 """ 108 109 implements(IXMPPHandlerCollection) 110 111 def __init__(self): 112 self.handlers = [] 113 114 115 def __iter__(self): 116 """ 117 Act as a container for handlers. 118 """ 119 return iter(self.handlers) 120 121 122 def addHandler(self, handler): 123 """ 124 Add protocol handler. 125 126 Protocol handlers are expected to provide L{IXMPPHandler}. 127 """ 128 self.handlers.append(handler) 129 130 131 def removeHandler(self, handler): 132 """ 133 Remove protocol handler. 134 """ 135 self.handlers.remove(handler) 136 137 27 deprecate.deprecatedModuleAttribute( 28 _deprecatedVersion, 29 "use twisted.words.protocols.jabber.xmlstream.XMPPHandlerCollection " 30 "instead.", 31 __name__, 32 'XMPPHandlerCollection') 138 33 139 34 class StreamManager(XMPPHandlerCollection): 140 35 """ -
wokkel/test/test_disco.py
diff -r ebdb7afc619e wokkel/test/test_disco.py
a b 11 11 from twisted.trial import unittest 12 12 from twisted.words.protocols.jabber.error import StanzaError 13 13 from twisted.words.protocols.jabber.jid import JID 14 from twisted.words.protocols.jabber.xmlstream import toResponse14 from twisted.words.protocols.jabber.xmlstream import XMPPHandler, toResponse 15 15 from twisted.words.xish import domish, utility 16 16 17 17 from wokkel import data_form, disco 18 18 from wokkel.generic import parseXml 19 from wokkel.subprotocols import XMPPHandler20 19 from wokkel.test.helpers import TestableRequestHandlerMixin, XmlStreamStub 21 20 22 21 NS_DISCO_INFO = 'http://jabber.org/protocol/disco#info' -
wokkel/test/test_subprotocols.py
diff -r ebdb7afc619e wokkel/test/test_subprotocols.py
a b 5 5 Tests for L{wokkel.subprotocols} 6 6 """ 7 7 8 from zope.interface.verify import verifyObject9 10 8 from twisted.trial import unittest 11 9 from twisted.test import proto_helpers 12 10 from twisted.internet import defer 13 11 from twisted.words.xish import domish 14 12 from twisted.words.protocols.jabber import error, xmlstream 15 13 16 from wokkel import iwokkel,subprotocols14 from wokkel import subprotocols 17 15 18 16 class DummyFactory(object): 19 17 """ … … 28 26 29 27 30 28 31 class DummyXMPPHandler( subprotocols.XMPPHandler):29 class DummyXMPPHandler(xmlstream.XMPPHandler): 32 30 """ 33 31 Dummy XMPP subprotocol handler to count the methods are called on it. 34 32 """ … … 55 53 56 54 57 55 58 class XMPPHandlerTest(unittest.TestCase):59 """60 Tests for L{subprotocols.XMPPHandler}.61 """62 63 def test_interface(self):64 """65 L{xmlstream.XMPPHandler} implements L{iwokkel.IXMPPHandler}.66 """67 verifyObject(iwokkel.IXMPPHandler, subprotocols.XMPPHandler())68 69 70 def test_send(self):71 """72 Test that data is passed on for sending by the stream manager.73 """74 class DummyStreamManager(object):75 def __init__(self):76 self.outlist = []77 78 def send(self, data):79 self.outlist.append(data)80 81 handler = subprotocols.XMPPHandler()82 handler.parent = DummyStreamManager()83 handler.send('<presence/>')84 self.assertEquals(['<presence/>'], handler.parent.outlist)85 86 87 def test_makeConnection(self):88 """89 Test that makeConnection saves the XML stream and calls connectionMade.90 """91 class TestXMPPHandler(subprotocols.XMPPHandler):92 def connectionMade(self):93 self.doneMade = True94 95 handler = TestXMPPHandler()96 xs = xmlstream.XmlStream(xmlstream.Authenticator())97 handler.makeConnection(xs)98 self.assertTrue(handler.doneMade)99 self.assertIdentical(xs, handler.xmlstream)100 101 102 def test_connectionLost(self):103 """104 Test that connectionLost forgets the XML stream.105 """106 handler = subprotocols.XMPPHandler()107 xs = xmlstream.XmlStream(xmlstream.Authenticator())108 handler.makeConnection(xs)109 handler.connectionLost(Exception())110 self.assertIdentical(None, handler.xmlstream)111 112 113 114 class XMPPHandlerCollectionTest(unittest.TestCase):115 """116 Tests for L{subprotocols.XMPPHandlerCollection}.117 """118 119 def setUp(self):120 self.collection = subprotocols.XMPPHandlerCollection()121 122 123 def test_interface(self):124 """125 L{subprotocols.StreamManager} implements L{iwokkel.IXMPPHandlerCollection}.126 """127 verifyObject(iwokkel.IXMPPHandlerCollection, self.collection)128 129 130 def test_addHandler(self):131 """132 Test the addition of a protocol handler.133 """134 handler = DummyXMPPHandler()135 handler.setHandlerParent(self.collection)136 self.assertIn(handler, self.collection)137 self.assertIdentical(self.collection, handler.parent)138 139 140 def test_removeHandler(self):141 """142 Test removal of a protocol handler.143 """144 handler = DummyXMPPHandler()145 handler.setHandlerParent(self.collection)146 handler.disownHandlerParent(self.collection)147 self.assertNotIn(handler, self.collection)148 self.assertIdentical(None, handler.parent)149 150 151 152 56 class StreamManagerTest(unittest.TestCase): 153 57 """ 154 58 Tests for L{subprotocols.StreamManager}. -
wokkel/xmppim.py
diff -r ebdb7afc619e wokkel/xmppim.py
a b 13 13 """ 14 14 15 15 from twisted.words.protocols.jabber.jid import JID 16 from twisted.words.protocols.jabber.xmlstream import XMPPHandler 16 17 from twisted.words.xish import domish 17 18 18 19 from wokkel.compat import IQ 19 20 from wokkel.generic import ErrorStanza, Stanza 20 from wokkel.subprotocols import XMPPHandler21 21 22 22 NS_XML = 'http://www.w3.org/XML/1998/namespace' 23 23 NS_ROSTER = 'jabber:iq:roster'
Note: See TracBrowser
for help on using the repository browser.