plugin XEP-0048: added /bookmark text command

This commit is contained in:
Goffi 2014-04-07 16:22:35 +02:00
commit bdd0673a9d

View file

@ -19,6 +19,7 @@
from sat.core.i18n import _, D_
from sat.core import exceptions
from sat.core.constants import Const as C
from sat.memory.persistent import PersistentBinaryDict
from sat.tools import xml_tools
from logging import debug, info, warning, error
@ -60,6 +61,10 @@ class XEP_0048(object):
self.private_plg = self.host.plugins["XEP-0049"]
except KeyError:
self.private_plg = None
try:
self.host.plugins[C.TEXT_CMDS].registerTextCommands(self)
except KeyError:
info(_("Text commands not available"))
@defer.inlineCallbacks
def profileConnected(self, profile):
@ -234,8 +239,9 @@ class XEP_0048(object):
return d
@defer.inlineCallbacks
def addBookmark(self, type_, location, data, storage_type="auto", profile_key="@NONE@"):
""" Store a new bookmark
def addBookmark(self, type_, location, data, storage_type="auto", profile_key=C.PROF_KEY_NONE):
"""Store a new bookmark
@param type_: bookmark type, one of:
- XEP_0048.MUC_TYPE: Multi-User chat room
- XEP_0048.URL_TYPE: web page URL
@ -251,7 +257,6 @@ class XEP_0048(object):
- "private": Private XML storage (XEP-0049)
- "local": Store in SàT database
@param profile_key: %(doc_profile_key)s
"""
assert storage_type in ('auto', 'pubsub', 'private', 'local')
client = self.host.getClient(profile_key)
@ -274,7 +279,28 @@ class XEP_0048(object):
bookmark_elt = self._dict2BookmarkElt(type_, bookmarks)
yield self._setServerBookmarks(storage_type, bookmark_elt, client.profile)
def cmd_bookmark(self, mess_data, profile):
"""Bookmark a MUC room
@command (group): [autojoin]
- autojoin: join room automatically on connection
"""
debug("Catched bookmark command")
client = self.host.getClient(profile)
txt_cmd = self.host.plugins[C.TEXT_CMDS]
if mess_data['type'] != "groupchat":
#/bookmark command does nothing if we are not on a group chat
info("Ignoring /bookmark command on a non groupchat message")
return True
options = mess_data["unparsed"].strip().split()
room_jid = mess_data["to"].userhostJID()
data = { "name": room_jid.user,
"nick": client.jid.user,
"autojoin": "true" if "autojoin" in options else "false",
}
self.addBookmark(XEP_0048.MUC_TYPE, room_jid, data, profile_key=profile)
txt_cmd.feedBack(_("Bookmark added"), mess_data, profile)
return False