def __from_xml(self, node): if node.type!="element": raise ValueError,"XML node is not a %s element (not en element)" % self.xml_element_name ns=get_node_ns_uri(node) if ns and ns!=self.xml_element_namespace or node.name!=self.xml_element_name: raise ValueError,"XML node is not an %s element" % self.xml_element_name labelss = xpath_eval(node, 'g:labels',{'g':GOOGLE_MAIL_NOTIFY_NS}) labels = labelss[0].getContent() if labelss else None self.labels = from_utf8(labels).split('|') if labels else [] senderss = xpath_eval(node, 'g:senders',{'g':GOOGLE_MAIL_NOTIFY_NS}) self.senders = Senders(senderss[0]) if senderss else [] subjects = xpath_eval(node, 'g:subject',{'g':GOOGLE_MAIL_NOTIFY_NS}) self.subject = from_utf8(subjects[0].getContent()) if subjects else None snippets = xpath_eval(node, 'g:snippet',{'g':GOOGLE_MAIL_NOTIFY_NS}) self.snippet = from_utf8(snippets[0].getContent()) if snippets else None self.tid = int(from_utf8(node.prop("tid"))) self.participation = int(from_utf8(node.prop("participation"))) self.messages = int(from_utf8(node.prop("messages"))) self.date = int(from_utf8(node.prop("date"))) self.url = from_utf8(node.prop("date"))
def __from_xml(self, node): if node.type!="element": raise ValueError,"XML node is not a Stats Counter element (not en element)" ns=get_node_ns_uri(node) if ns and ns!=DIGSBY_STATS_COUNTER_NS or node.name!="query": raise ValueError,"XML node is not a Stats Counter element" actions = xpath_eval(node, 'sc:action',{'sc':DIGSBY_STATS_COUNTER_NS}) self.extend(Action(action) for action in actions)
def __from_xml(self, node): if node.type != "element": raise ValueError, "XML node is not a %s element (not en element)" % self.xml_element_name ns = get_node_ns_uri(node) if ns and ns != self.xml_element_namespace or node.name != self.xml_element_name: raise ValueError, "XML node is not an %s element" % self.xml_element_name senders = xpath_eval(node, 's:sender', {'s': GOOGLE_MAIL_NOTIFY_NS}) self.extend(Sender(sender) for sender in senders)
def __from_xml(self, node): if node.type!="element": raise ValueError,"XML node is not a %s element (not en element)" % self.xml_element_name ns=get_node_ns_uri(node) if ns and ns!=self.xml_element_namespace or node.name!=self.xml_element_name: raise ValueError,"XML node is not an %s element" % self.xml_element_name senders = xpath_eval(node, 's:sender',{'s':GOOGLE_MAIL_NOTIFY_NS}) self.extend(Sender(sender) for sender in senders)
def __from_xml(self, node): if node.type != "element": raise ValueError, "XML node is not a Stats Counter element (not en element)" ns = get_node_ns_uri(node) if ns and ns != DIGSBY_STATS_COUNTER_NS or node.name != "query": raise ValueError, "XML node is not a Stats Counter element" actions = xpath_eval(node, 'sc:action', {'sc': DIGSBY_STATS_COUNTER_NS}) self.extend(Action(action) for action in actions)
def handle_message(self, stanza): ''' <message from='*****@*****.**' to='*****@*****.**'> <x xmlns='http://jabber.org/protocol/muc#user'> <invite from='[email protected]/desktop'> <reason> Hey Hecate, this is the place for all good witches! </reason> </invite> <password>cauldronburn</password> </x> </message> ''' self.stanza = stanza try: roomjid = JID(stanza.get_from()) roomname = roomjid.node except Exception: traceback.print_exc() return False else: if not roomname: return False for invite in stanza.xpath_eval('user:x/user:invite', {'user': MUC_USER_NS}): frm = invite.prop('from') if not frm: continue try: frm = JID(from_utf8(frm)) except Exception: continue else: break else: return False reason = None for rsn in xpath_eval(invite, 'user:reason/text()', {'user': MUC_USER_NS}): if rsn: reason = reason reason = reason or '' self.protocol.hub.on_invite( protocol=self.protocol, buddy=frm, room_name=roomname, message=reason, on_yes=lambda: self.protocol.join_chat_jid( roomjid, self.protocol.self_buddy.jid.node)) return True
def handle_message(self, stanza): ''' <message from='*****@*****.**' to='*****@*****.**'> <x xmlns='http://jabber.org/protocol/muc#user'> <invite from='[email protected]/desktop'> <reason> Hey Hecate, this is the place for all good witches! </reason> </invite> <password>cauldronburn</password> </x> </message> ''' self.stanza = stanza try: roomjid = JID(stanza.get_from()) roomname = roomjid.node except Exception: traceback.print_exc() return False else: if not roomname: return False for invite in stanza.xpath_eval('user:x/user:invite', {'user':MUC_USER_NS}): frm = invite.prop('from') if not frm: continue try: frm = JID(from_utf8(frm)) except Exception: continue else: break else: return False reason = None for rsn in xpath_eval(invite, 'user:reason/text()', {'user':MUC_USER_NS}): if rsn: reason = reason reason = reason or '' self.protocol.hub.on_invite(protocol = self.protocol, buddy = frm, room_name = roomname, message = reason, on_yes = lambda: self.protocol.join_chat_jid(roomjid, self.protocol.self_buddy.jid.node)) return True
def __from_xml(self, node): if node.type!="element": raise ValueError,"XML node is not a %s element (not en element)" % self.xml_element_name ns=get_node_ns_uri(node) if ns and ns!=self.xml_element_namespace or node.name!=self.xml_element_name: raise ValueError,"XML node is not an %s element" % self.xml_element_name self.result_time = int(from_utf8(node.prop("result-time"))) self.total_matched = int(from_utf8(node.prop("total-matched"))) self.url = from_utf8(node.prop("url")) total_estimate = node.prop("messages") self.total_estimate = int(from_utf8(total_estimate)) if total_estimate else 0 threads = xpath_eval(node, 'g:mail-thread-info',{'g':GOOGLE_MAIL_NOTIFY_NS}) self.extend(MailThreadInfo(thread) for thread in threads)