view jabberbot/oob.py @ 5132:df8f5b4546ca

mailimport: fix endless looping while trying to import a forwarded mail This is just a fix to solve the endless looping / crash. It needs further improvement, currently the From/To/... header data of the forwarded mail is not processed at all and thus not visible later in the wiki. The body of it is visible, though, but just appears appended to the main mail body.
author Thomas Waldmann <tw AT waldmann-edv DOT de>
date Sun, 06 Sep 2009 22:35:50 +0200
parents 8ec6cc1a909f
children
line wrap: on
line source
# -*- coding: iso-8859-1 -*-
"""
    MoinMoin - Out Of Band Data (XEP-066) implementation

    This is used by the xmpp thread to send URIs to clients
    in a structured manner.

    @copyright: 2007 by Karol Nowak <grywacz@gmail.com>
    @license: GNU GPL, see COPYING for details.
"""

from pyxmpp.message import Message
from pyxmpp.presence import Presence

def add_urls(stanza, data):
    """Adds a URL to a message or presence stanza

    Adds an <x> element qualified by the jabber:x:oob namespace
    to the stanza's payload

    @param stanza: message or presence stanza to add the URL info to
    @type stanza: pyxmpp.message.Message or pyxmpp.presence.Presence
    @param data: a list of dictionaries containing (url, description), as unicode
    @type data: list

    """
    if not (isinstance(stanza, Presence) or isinstance(stanza, Message)):
        raise TypeError("Stanza must be either of type Presence or Message!")

    for piece in data:
        x_elem = stanza.add_new_content(u"jabber:x:oob", u"x")
        url = x_elem.newChild(None, u"url", None)
        desc = x_elem.newChild(None, u"desc", None)
        url.addContent(piece['url'].encode("utf-8"))
        desc.addContent(piece['description'].encode("utf-8"))