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 )
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 )