plugin XEP-0359: handle origin-id
This commit is contained in:
parent
7dd0df7f41
commit
a1ee6fedc1
1 changed files with 30 additions and 3 deletions
|
|
@ -18,13 +18,14 @@
|
|||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
import uuid
|
||||
from zope.interface import implementer
|
||||
from twisted.words.protocols.jabber import xmlstream
|
||||
from wokkel import disco
|
||||
from sat.core.constants import Const as C
|
||||
from sat.core import exceptions
|
||||
from sat.core.i18n import _
|
||||
from sat.core.log import getLogger
|
||||
from twisted.words.protocols.jabber import xmlstream
|
||||
from zope.interface import implementer
|
||||
from wokkel import disco
|
||||
|
||||
log = getLogger(__name__)
|
||||
|
||||
|
|
@ -88,6 +89,32 @@ class XEP_0359(object):
|
|||
sid_elt["by"] = client.jid.userhost() if by is None else by.userhost()
|
||||
sid_elt["id"] = stanza_id
|
||||
|
||||
def getOriginId(self, element):
|
||||
"""Return origin-id if found in element
|
||||
|
||||
@param element(domish.Element): element to parse
|
||||
@return (unicode, None): origin-id if found
|
||||
"""
|
||||
try:
|
||||
origin_elt = next(element.elements(NS_SID, "origin-id"))
|
||||
except StopIteration:
|
||||
return None
|
||||
else:
|
||||
return origin_elt.getAttribute("id")
|
||||
|
||||
def addOriginId(self, element, origin_id=None):
|
||||
"""Add a <origin-id/> to a stanza
|
||||
|
||||
@param element(domish.Element): stanza where the <origin-id/> must be added
|
||||
@param origin_id(str): id to use, None to automatically generate
|
||||
@return (str): origin_id
|
||||
"""
|
||||
if origin_id is None:
|
||||
origin_id = str(uuid.uuid4())
|
||||
sid_elt = element.addElement((NS_SID, "origin-id"))
|
||||
sid_elt["id"] = origin_id
|
||||
return origin_id
|
||||
|
||||
def getHandler(self, client):
|
||||
return XEP_0359_handler()
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue