Changeset 55:a8cda961ee7e
- Timestamp:
- Apr 22, 2009, 4:50:28 PM (13 years ago)
- Branch:
- default
- Convert:
- svn:b33ecbfc-034c-dc11-8662-000475d9059e/trunk@167
- Location:
- wokkel
- Files:
-
- 2 added
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
wokkel/client.py
r42 r55 12 12 13 13 from twisted.application import service 14 from twisted.internet import defer, protocol,reactor14 from twisted.internet import reactor 15 15 from twisted.names.srvconnect import SRVConnector 16 16 from twisted.words.protocols.jabber import client, sasl, xmlstream 17 17 18 try: 19 from twisted.words.xish.xmlstream import BootstrapMixin 20 except ImportError: 21 from wokkel.compat import BootstrapMixin 22 23 from wokkel.subprotocols import StreamManager, XMPPHandler 18 from wokkel import generic 19 from wokkel.subprotocols import StreamManager 24 20 25 21 class CheckAuthInitializer(object): … … 128 124 129 125 130 class DeferredClientFactory(BootstrapMixin, protocol.ClientFactory): 131 protocol = xmlstream.XmlStream 126 class DeferredClientFactory(generic.DeferredXmlStreamFactory): 132 127 133 128 def __init__(self, jid, password): 134 BootstrapMixin.__init__(self) 135 136 self.jid = jid 137 self.password = password 138 139 deferred = defer.Deferred() 140 self.deferred = deferred 141 self.addBootstrap(xmlstream.INIT_FAILED_EVENT, deferred.errback) 142 143 class ConnectionInitializedHandler(XMPPHandler): 144 def connectionInitialized(self): 145 deferred.callback(None) 146 147 self.streamManager = StreamManager(self) 148 self.addHandler(ConnectionInitializedHandler()) 149 150 151 def buildProtocol(self, addr): 152 """ 153 Create an instance of XmlStream. 154 155 A new authenticator instance will be created and passed to the new 156 XmlStream. Registered bootstrap event observers are installed as well. 157 """ 158 self.authenticator = client.XMPPAuthenticator(self.jid, self.password) 159 xs = self.protocol(self.authenticator) 160 xs.factory = self 161 self.installBootstraps(xs) 162 return xs 163 164 165 def clientConnectionFailed(self, connector, reason): 166 self.deferred.errback(reason) 129 authenticator = client.XMPPAuthenticator(jid, password) 130 generic.DeferredXmlStreamFactory.__init__(self, authenticator) 167 131 168 132 … … 181 145 182 146 147 183 148 def clientCreator(factory): 184 domain = factory. jid.host149 domain = factory.authenticator.jid.host 185 150 c = SRVConnector(reactor, 'xmpp-client', domain, factory) 186 151 c.connect() -
wokkel/generic.py
r35 r55 10 10 from zope.interface import implements 11 11 12 from twisted.internet import defer 13 from twisted.words.protocols.jabber import error 12 from twisted.internet import defer, protocol 13 from twisted.words.protocols.jabber import error, xmlstream 14 14 from twisted.words.protocols.jabber.xmlstream import toResponse 15 15 from twisted.words.xish import domish, utility 16 17 try: 18 from twisted.words.xish.xmlstream import BootstrapMixin 19 except ImportError: 20 from wokkel.compat import BootstrapMixin 16 21 17 22 from wokkel import disco … … 156 161 self.source.send = lambda obj: self.sink.dispatch(obj) 157 162 self.sink.send = lambda obj: self.source.dispatch(obj) 163 164 165 class DeferredXmlStreamFactory(BootstrapMixin, protocol.ClientFactory): 166 protocol = xmlstream.XmlStream 167 168 def __init__(self, authenticator): 169 BootstrapMixin.__init__(self) 170 171 self.authenticator = authenticator 172 173 deferred = defer.Deferred() 174 self.deferred = deferred 175 self.addBootstrap(xmlstream.STREAM_AUTHD_EVENT, self.deferred.callback) 176 self.addBootstrap(xmlstream.INIT_FAILED_EVENT, deferred.errback) 177 178 179 def buildProtocol(self, addr): 180 """ 181 Create an instance of XmlStream. 182 183 A new authenticator instance will be created and passed to the new 184 XmlStream. Registered bootstrap event observers are installed as well. 185 """ 186 xs = self.protocol(self.authenticator) 187 xs.factory = self 188 self.installBootstraps(xs) 189 return xs 190 191 192 def clientConnectionFailed(self, connector, reason): 193 self.deferred.errback(reason)
Note: See TracChangeset
for help on using the changeset viewer.