Exemplo n.º 1
0
def upgradeWithIQResponseTracker(xmlstream):
    """ Enhances an XmlStream for iq response tracking.

    This makes an L{XmlStream} object provide L{IIQResponseTracker}. When a
    response is an error iq stanza, the deferred has its errback invoked with a
    failure that holds a L{StanzaException<error.StanzaException>} that is
    easier to examine.
    """

    def callback(iq):
        if getattr(iq, 'handled', False):
            return

        try:
            d = xmlstream.iqDeferreds[iq["id"]]
        except KeyError:
            pass
        else:
            del iq["id"]
            iq.handled = True
            if iq['type'] == 'error':
                d.errback(failure.Failure(error.exceptionFromStanza(iq)))
            else:
                d.callback(iq)

    xmlstream.iqDeferreds = {}
    xmlstream.addObserver('/iq[@type="result"]', callback)
    xmlstream.addObserver('/iq[@type="error"]', callback)
    directlyProvides(xmlstream, IIQResponseTracker)
Exemplo n.º 2
0
def upgradeWithIQResponseTracker(xmlstream):
    """ Enhances an XmlStream for iq response tracking.

    This makes an L{XmlStream} object provide L{IIQResponseTracker}. When a
    response is an error iq stanza, the deferred has its errback invoked with a
    failure that holds a L{StanzaException<error.StanzaException>} that is
    easier to examine.
    """
    def callback(iq):
        if getattr(iq, 'handled', False):
            return

        try:
            d = xmlstream.iqDeferreds[iq["id"]]
        except KeyError:
            pass
        else:
            del iq["id"]
            iq.handled = True
            if iq['type'] == 'error':
                d.errback(failure.Failure(error.exceptionFromStanza(iq)))
            else:
                d.callback(iq)

    xmlstream.iqDeferreds = {}
    xmlstream.addObserver('/iq[@type="result"]', callback)
    xmlstream.addObserver('/iq[@type="error"]', callback)
    directlyProvides(xmlstream, IIQResponseTracker)
Exemplo n.º 3
0
 def authd(self, xmlstream):
     self.logger.log("INFO", "Authenticating with Jabber server.")
     self.xmlstream = xmlstream
     presence = domish.Element(('jabber:client','presence'))
     xmlstream.send(presence)
     xmlstream.addObserver('/message',  self.debug)
     xmlstream.addObserver('/presence', self.debug)
     xmlstream.addObserver('/iq',       self.debug)
     xmlstream.addObserver('/iq',       self.pong)
     xmlstream.addObserver('/message', self.gotMessage)
Exemplo n.º 4
0
 def authd(self, xmlstream):
     self.logger.log("INFO", "Authenticating with Jabber server.")
     self.xmlstream = xmlstream
     presence = domish.Element(('jabber:client', 'presence'))
     xmlstream.send(presence)
     xmlstream.addObserver('/message', self.debug)
     xmlstream.addObserver('/presence', self.debug)
     xmlstream.addObserver('/iq', self.debug)
     xmlstream.addObserver('/iq', self.pong)
     xmlstream.addObserver('/message', self.gotMessage)
Exemplo n.º 5
0
Arquivo: bot.py Projeto: Opelor/baas
    def authd(self, xmlstream):
        # need to send presence so clients know we're
        # actually online.
        presence = domish.Element(('jabber:client', 'presence'))
        presence.addElement('status').addContent('Online')

        xmlstream.send(presence)

        # add a callback for the messages
        xmlstream.addObserver('/message', self.gotMessage)
        self.xmlstream = xmlstream
Exemplo n.º 6
0
def authd(xmlstream):
  global _xmlstream 
  logger.debug("authenticated")
  _xmlstream = xmlstream
  presence = domish.Element(('jabber:client', 'presence'))
  presence.addElement('status').addContent('Online')
  xmlstream.send(presence)
  
  # add a callback for the messages -- need to handle subscribe
  xmlstream.addObserver('/presence', gotPresence)
  
  reactor.stop() # stop the reactor.. so we can use iterate instead.
Exemplo n.º 7
0
def authd(xmlstream):
    global _xmlstream
    logger.debug("authenticated")
    _xmlstream = xmlstream
    presence = domish.Element(('jabber:client', 'presence'))
    presence.addElement('status').addContent('Online')
    xmlstream.send(presence)

    # add a callback for the messages -- need to handle subscribe
    xmlstream.addObserver('/presence', gotPresence)

    reactor.stop()  # stop the reactor.. so we can use iterate instead.
Exemplo n.º 8
0
        def authd(self, xmlstream):
                self.thexmlstream = xmlstream
                self.statusListener("System", "Logged in")

                #need to send presence so clients know we're
                #actually online
                presence = domish.Element(('jabber:client', 'presence'))
                presence.addElement('status').addContent('Online')
                xmlstream.send(presence)

                xmlstream.addObserver('/message', self.gotMessage)
                xmlstream.addObserver('/presence', self.gotPresence)
                xmlstream.addObserver('/iq', self.gotIq)
                xmlstream.addObserver('/*', self.debug)

		self.joinChatroom(self.teamChat)
		self.joinChatroom(self.globalChat)
	def onConnect(self,xmlstream):
		print "auth"
		self.active = True

		self.xs=xmlstream
		self.informer._addClient(self)
		presence = domish.Element(('jabber:client','presence'))
		presence.addElement('priority').addContent("100")

		presence.addElement("show", None, ":)")
		presence.addElement('status').addContent('Online')
		xmlstream.send(presence)
		xmlstream.addObserver('/iq',       self.onIq) 
		xmlstream.addObserver('/message',  self.onMessage)
		xmlstream.addObserver('/presence', self.onPresence)

		xmlstream.addObserver('/presence[@type="unsubscribe"]', self.onPresenceUnsubscribe)
		xmlstream.addObserver('/presence[@type="unsubscribed"]', self.onPresenceUnsubscribed)
		xmlstream.addObserver('/presence[@type="subscribe"]', self.onPresenceSubscribe)
		xmlstream.addObserver('/iq/query[@xmlns="jabber:iq:roster"]',self.onRoster)
		xmlstream.addObserver('/iq/query[@xmlns="jabber:iq:version"]',self.onVersion)
		xmlstream.addObserver('/iq/time[@xmlns="urn:xmpp:time"]', self.onTime) 
		xmlstream.addObserver('/iq/query/item[@subscription="remove"]', self.onRemove) 
		xmlstream.addObserver('/message[@type="chat"]/body', self.onChat) 
		xmlstream.addObserver('/message[@type="error"]/error', self.onError) 
		
		iq = component.xmlstream.IQ(xmlstream, 'get')
		iq['type'] = 'get'
		query = iq.addElement('query')
		query['xmlns']='jabber:iq:roster'
		iq.send()
		
		
		""" keep-alive """
		lc = LoopingCall(xmlstream.send, ' ')
		xmlstream.addObserver('//event/stream/end', lambda _: lc.stop())
		lc.start(60)