Beispiel #1
0
    def subscribeReceived(self, subscriber):

        rtr_client = CommonClientManager.getHandler( 'roster', self.my_client )

        def rosterAddResponse( response ):
            log.msg( 'rosterAddResponse', level = logging.DEBUG )

            self.subscribed( subscriber )

            # subscribe to subscriber
            user_status = rtr_client.getUserStatus( subscriber )
            if not user_status or ( not user_status == 'both' and not user_status == 'to' ):
                rtr_client.addItem( subscriber.userhostJID() ).addCallback( addSubscriberToRosterResponse ).addErrback( log.err )

        def addSubscriberToRosterResponse( response ):
            log.msg( 'addSubscriberToRosterResponse', level = logging.DEBUG )

            if response.attributes['type'] == 'result':
                self.subscribe( subscriber.userhostJID() )

        rtr_client.addItem( subscriber ).addCallback( rosterAddResponse )
Beispiel #2
0
    def run(self, *args, **kwargs):
        log.msg( 'MessageAction: run', level = logging.DEBUG )

        if self.recipient == "##event_source##":
            print kwargs.keys()

            if not 'triggering_element' in kwargs:
                raise MessageActionExceptionNoTriggeringElement()

            triggering_element = kwargs[ 'triggering_element' ]
            log.msg( 'Triggering Element: %s' % triggering_element, level = logging.DEBUG )

            my_recipient_jid = jid.JID( triggering_element[ 'from' ] )
        else:
            my_recipient_jid = jid.JID( self.recipient )

        if self.message_type == "groupchat":
            log.msg( 'MessageAction Type: groupchat')
            muc_client = CommonClientManager.getHandler( 'muc', self.trigger.handler.my_client )

            if not muc_client._getRoom( my_recipient_jid ):
                log.msg( 'not in room', level = logging.DEBUG )
                return False

        def getContentResponse( response ):
            log.msg( 'MessageAction: getContentResponse', level = logging.DEBUG )
            msg = domish.Element( (None, 'message') )
            msg['type'] = self.message_type
            msg['to'] = my_recipient_jid.full()

            processed_response = response
            if 'check_response' in kwargs:
                print kwargs['check_response']
                processed_response = response.format( **kwargs[ 'check_response' ].groupdict() )

            log.msg( 'processed_response: %s' % processed_response )
            msg.addElement('body', None, processed_response )
            self.trigger.handler.xmlstream.send( msg )

        self.content_handler.getContent().addCallback( getContentResponse )