示例#1
0
    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"))
示例#2
0
 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)
示例#3
0
文件: senders.py 项目: sgricci/digsby
 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)
示例#4
0
 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)
示例#5
0
 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)
示例#6
0
    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
示例#7
0
    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
示例#8
0
    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)