core: plugins refactored according to bridge + updatedValue now use profile
This commit is contained in:
parent
b3322dabae
commit
ad29111416
15 changed files with 164 additions and 155 deletions
|
|
@ -21,12 +21,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
|
||||
from bridge_frontend import BridgeFrontend
|
||||
import dbus, dbus.glib
|
||||
from logging import debug
|
||||
from logging import debug, error
|
||||
|
||||
const_INT_PREFIX = "org.goffi.SAT" #Interface prefix
|
||||
const_OBJ_PATH = '/org/goffi/SAT/bridge'
|
||||
const_COMM_SUFFIX = ".communication"
|
||||
const_REQ_SUFFIX = ".request"
|
||||
const_CORE_SUFFIX = ".core"
|
||||
const_PLUGIN_SUFFIX = ".plugin"
|
||||
|
||||
class BridgeExceptionNoService(Exception):
|
||||
pass
|
||||
|
|
@ -37,194 +37,196 @@ class DBusBridgeFrontend(BridgeFrontend):
|
|||
self.sessions_bus = dbus.SessionBus()
|
||||
self.db_object = self.sessions_bus.get_object(const_INT_PREFIX,
|
||||
const_OBJ_PATH)
|
||||
self.db_comm_iface = dbus.Interface(self.db_object,
|
||||
dbus_interface=const_INT_PREFIX + const_COMM_SUFFIX)
|
||||
self.db_req_iface = dbus.Interface(self.db_object,
|
||||
dbus_interface=const_INT_PREFIX + const_REQ_SUFFIX)
|
||||
self.db_core_iface = dbus.Interface(self.db_object,
|
||||
dbus_interface=const_INT_PREFIX + const_CORE_SUFFIX)
|
||||
self.db_plugin_iface = dbus.Interface(self.db_object,
|
||||
dbus_interface=const_INT_PREFIX + const_PLUGIN_SUFFIX)
|
||||
except dbus.exceptions.DBusException,e:
|
||||
if e._dbus_error_name=='org.freedesktop.DBus.Error.ServiceUnknown':
|
||||
raise BridgeExceptionNoService
|
||||
else:
|
||||
raise e
|
||||
#props = self.db_comm_iface.getProperties()
|
||||
#props = self.db_core_iface.getProperties()
|
||||
|
||||
def register(self, functionName, handler, iface="communication"):
|
||||
if iface == "communication":
|
||||
self.db_comm_iface.connect_to_signal(functionName, handler)
|
||||
elif iface == "request":
|
||||
self.db_req_iface.connect_to_signal(functionName, handler)
|
||||
def register(self, functionName, handler, iface="core"):
|
||||
if iface == "core":
|
||||
self.db_core_iface.connect_to_signal(functionName, handler)
|
||||
elif iface == "plugin":
|
||||
self.db_plugin_iface.connect_to_signal(functionName, handler)
|
||||
else:
|
||||
error(_('Unknown interface'))
|
||||
|
||||
def addContact(self, entity, profile_key="@DEFAULT@"):
|
||||
return self.db_comm_iface.addContact(entity, profile_key)
|
||||
return self.db_core_iface.addContact(entity, profile_key)
|
||||
|
||||
def asyncConnect(self, profile_key="@DEFAULT@", callback=None, errback=None):
|
||||
return self.db_comm_iface.asyncConnect(profile_key, reply_handler=callback, error_handler=errback)
|
||||
return self.db_core_iface.asyncConnect(profile_key, reply_handler=callback, error_handler=errback)
|
||||
|
||||
def callMenu(self, category, name, menu_type, profile_key):
|
||||
return unicode(self.db_req_iface.callMenu(category, name, menu_type, profile_key))
|
||||
return unicode(self.db_core_iface.callMenu(category, name, menu_type, profile_key))
|
||||
|
||||
def confirmationAnswer(self, id, accepted, data):
|
||||
return self.db_req_iface.confirmationAnswer(id, accepted, data)
|
||||
return self.db_core_iface.confirmationAnswer(id, accepted, data)
|
||||
|
||||
def connect(self, profile_key="@DEFAULT@"):
|
||||
return self.db_comm_iface.connect(profile_key)
|
||||
return self.db_core_iface.connect(profile_key)
|
||||
|
||||
def createProfile(self, profile):
|
||||
return self.db_req_iface.createProfile(profile)
|
||||
return self.db_core_iface.createProfile(profile)
|
||||
|
||||
def delContact(self, entity, profile_key="@DEFAULT@"):
|
||||
return self.db_comm_iface.delContact(entity, profile_key)
|
||||
return self.db_core_iface.delContact(entity, profile_key)
|
||||
|
||||
def deleteProfile(self, profile):
|
||||
return self.db_req_iface.deleteProfile(profile)
|
||||
return self.db_core_iface.deleteProfile(profile)
|
||||
|
||||
def disconnect(self, profile_key="@DEFAULT@"):
|
||||
return self.db_comm_iface.disconnect(profile_key)
|
||||
return self.db_core_iface.disconnect(profile_key)
|
||||
|
||||
def getConfig(self, section, name):
|
||||
return unicode(self.db_comm_iface.getConfig(section, name))
|
||||
return unicode(self.db_core_iface.getConfig(section, name))
|
||||
|
||||
def getContacts(self, profile_key="@DEFAULT@"):
|
||||
return self.db_comm_iface.getContacts(profile_key)
|
||||
return self.db_core_iface.getContacts(profile_key)
|
||||
|
||||
def getHistory(self, from_jid, to_jid, size):
|
||||
return self.db_comm_iface.getHistory(from_jid, to_jid, size)
|
||||
return self.db_core_iface.getHistory(from_jid, to_jid, size)
|
||||
|
||||
def getMenuHelp(self, category, name, menu_type):
|
||||
return unicode(self.db_req_iface.getMenuHelp(category, name, menu_type))
|
||||
return unicode(self.db_core_iface.getMenuHelp(category, name, menu_type))
|
||||
|
||||
def getMenus(self, ):
|
||||
return self.db_req_iface.getMenus()
|
||||
return self.db_core_iface.getMenus()
|
||||
|
||||
def getParamA(self, name, category, attribute="value", profile_key="@DEFAULT@"):
|
||||
return unicode(self.db_comm_iface.getParamA(name, category, attribute, profile_key))
|
||||
return unicode(self.db_core_iface.getParamA(name, category, attribute, profile_key))
|
||||
|
||||
def getParams(self, profile_key="@DEFAULT@"):
|
||||
return unicode(self.db_comm_iface.getParams(profile_key))
|
||||
return unicode(self.db_core_iface.getParams(profile_key))
|
||||
|
||||
def getParamsCategories(self, ):
|
||||
return self.db_comm_iface.getParamsCategories()
|
||||
return self.db_core_iface.getParamsCategories()
|
||||
|
||||
def getParamsForCategory(self, category, profile_key="@DEFAULT@"):
|
||||
return unicode(self.db_comm_iface.getParamsForCategory(category, profile_key))
|
||||
return unicode(self.db_core_iface.getParamsForCategory(category, profile_key))
|
||||
|
||||
def getParamsUI(self, profile_key="@DEFAULT@"):
|
||||
return unicode(self.db_comm_iface.getParamsUI(profile_key))
|
||||
return unicode(self.db_core_iface.getParamsUI(profile_key))
|
||||
|
||||
def getPresenceStatus(self, profile_key="@DEFAULT@"):
|
||||
return self.db_comm_iface.getPresenceStatus(profile_key)
|
||||
return self.db_core_iface.getPresenceStatus(profile_key)
|
||||
|
||||
def getProfileName(self, profile_key="@DEFAULT@"):
|
||||
return unicode(self.db_req_iface.getProfileName(profile_key))
|
||||
return unicode(self.db_core_iface.getProfileName(profile_key))
|
||||
|
||||
def getProfilesList(self, ):
|
||||
return self.db_req_iface.getProfilesList()
|
||||
return self.db_core_iface.getProfilesList()
|
||||
|
||||
def getProgress(self, id):
|
||||
return self.db_req_iface.getProgress(id)
|
||||
return self.db_core_iface.getProgress(id)
|
||||
|
||||
def getVersion(self, ):
|
||||
return unicode(self.db_req_iface.getVersion())
|
||||
return unicode(self.db_core_iface.getVersion())
|
||||
|
||||
def getWaitingSub(self, profile_key="@DEFAULT@"):
|
||||
return self.db_comm_iface.getWaitingSub(profile_key)
|
||||
return self.db_core_iface.getWaitingSub(profile_key)
|
||||
|
||||
def isConnected(self, profile_key="@DEFAULT@"):
|
||||
return self.db_comm_iface.isConnected(profile_key)
|
||||
return self.db_core_iface.isConnected(profile_key)
|
||||
|
||||
def launchAction(self, action_type, data, profile_key="@DEFAULT@"):
|
||||
return unicode(self.db_req_iface.launchAction(action_type, data, profile_key))
|
||||
return unicode(self.db_core_iface.launchAction(action_type, data, profile_key))
|
||||
|
||||
def registerNewAccount(self, login, password, email, host, port=5222):
|
||||
return unicode(self.db_comm_iface.registerNewAccount(login, password, email, host, port))
|
||||
return unicode(self.db_core_iface.registerNewAccount(login, password, email, host, port))
|
||||
|
||||
def sendMessage(self, to_jid, message, subject='', mess_type="chat", profile_key="@DEFAULT@"):
|
||||
return self.db_comm_iface.sendMessage(to_jid, message, subject, mess_type, profile_key)
|
||||
return self.db_core_iface.sendMessage(to_jid, message, subject, mess_type, profile_key)
|
||||
|
||||
def setParam(self, name, value, category, profile_key="@DEFAULT@"):
|
||||
return self.db_comm_iface.setParam(name, value, category, profile_key)
|
||||
return self.db_core_iface.setParam(name, value, category, profile_key)
|
||||
|
||||
def setPresence(self, to_jid='', show='', priority=0, statuses={}, profile_key="@DEFAULT@"):
|
||||
return self.db_comm_iface.setPresence(to_jid, show, priority, statuses, profile_key)
|
||||
return self.db_core_iface.setPresence(to_jid, show, priority, statuses, profile_key)
|
||||
|
||||
def subscription(self, sub_type, entity, profile_key="@DEFAULT@"):
|
||||
return self.db_comm_iface.subscription(sub_type, entity, profile_key)
|
||||
return self.db_core_iface.subscription(sub_type, entity, profile_key)
|
||||
|
||||
def updateContact(self, entity, name, groups, profile_key="@DEFAULT@"):
|
||||
return self.db_comm_iface.updateContact(entity, name, groups, profile_key)
|
||||
return self.db_core_iface.updateContact(entity, name, groups, profile_key)
|
||||
|
||||
|
||||
#methods from plugins
|
||||
def getRoomJoined(self, profile_key='@DEFAULT@'):
|
||||
return self.db_comm_iface.getRoomJoined(profile_key)
|
||||
return self.db_plugin_iface.getRoomJoined(profile_key)
|
||||
|
||||
def getRoomSubjects(self, profile_key='@DEFAULT@'):
|
||||
return self.db_comm_iface.getRoomSubjects(profile_key)
|
||||
return self.db_plugin_iface.getRoomSubjects(profile_key)
|
||||
|
||||
def joinMUC(self, service, roomId, nick, profile_key='@DEFAULT@'):
|
||||
return self.db_comm_iface.joinMUC(service, roomId, nick, profile_key)
|
||||
return self.db_plugin_iface.joinMUC(service, roomId, nick, profile_key)
|
||||
|
||||
def tarotGameLaunch(self, players, profile_key='@DEFAULT@'):
|
||||
return self.db_comm_iface.tarotGameLaunch(players, profile_key)
|
||||
return self.db_plugin_iface.tarotGameLaunch(players, profile_key)
|
||||
|
||||
def tarotGameCreate(self, room_jid, players, profile_key='@DEFAULT@'):
|
||||
return self.db_comm_iface.tarotGameCreate(room_jid, players, profile_key)
|
||||
return self.db_plugin_iface.tarotGameCreate(room_jid, players, profile_key)
|
||||
|
||||
def tarotGameReady(self, player, referee, profile_key='@DEFAULT@'):
|
||||
return self.db_comm_iface.tarotGameReady(player, referee, profile_key)
|
||||
return self.db_plugin_iface.tarotGameReady(player, referee, profile_key)
|
||||
|
||||
def tarotGameContratChoosed(self, player, referee, contrat, profile_key='@DEFAULT@'):
|
||||
return self.db_comm_iface.tarotGameContratChoosed(player, referee, contrat, profile_key)
|
||||
return self.db_plugin_iface.tarotGameContratChoosed(player, referee, contrat, profile_key)
|
||||
|
||||
def tarotGamePlayCards(self, player, referee, cards, profile_key='@DEFAULT@'):
|
||||
return self.db_comm_iface.tarotGamePlayCards(player, referee, cards, profile_key)
|
||||
return self.db_plugin_iface.tarotGamePlayCards(player, referee, cards, profile_key)
|
||||
|
||||
def quizGameLaunch(self, players, profile_key='@DEFAULT@'):
|
||||
return self.db_comm_iface.quizGameLaunch(players, profile_key)
|
||||
return self.db_plugin_iface.quizGameLaunch(players, profile_key)
|
||||
|
||||
def quizGameCreate(self, room_jid, players, profile_key='@DEFAULT@'):
|
||||
return self.db_comm_iface.quizGameCreate(room_jid, players, profile_key)
|
||||
return self.db_plugin_iface.quizGameCreate(room_jid, players, profile_key)
|
||||
|
||||
def quizGameReady(self, player, referee, profile_key='@DEFAULT@'):
|
||||
return self.db_comm_iface.quizGameReady(player, referee, profile_key)
|
||||
return self.db_plugin_iface.quizGameReady(player, referee, profile_key)
|
||||
|
||||
def quizGameAnswer(self, player, referee, answer, profile_key='@DEFAULT@'):
|
||||
return self.db_comm_iface.quizGameAnswer(player, referee, answer, profile_key)
|
||||
return self.db_plugin_iface.quizGameAnswer(player, referee, answer, profile_key)
|
||||
|
||||
def sendFile(self, to, path, profile_key='@DEFAULT@'):
|
||||
return self.db_comm_iface.sendFile(to, path, profile_key)
|
||||
return self.db_plugin_iface.sendFile(to, path, profile_key)
|
||||
|
||||
def findGateways(self, target, profile_key='@DEFAULT@'):
|
||||
return self.db_comm_iface.findGateways(target, profile_key)
|
||||
return self.db_plugin_iface.findGateways(target, profile_key)
|
||||
|
||||
def getCard(self, target, profile_key='@DEFAULT@'):
|
||||
return self.db_comm_iface.getCard(target, profile_key)
|
||||
return self.db_plugin_iface.getCard(target, profile_key)
|
||||
|
||||
def getCardCache(self, target):
|
||||
return self.db_comm_iface.getCardCache(target)
|
||||
return self.db_plugin_iface.getCardCache(target)
|
||||
|
||||
def getAvatarFile(self, hash):
|
||||
return self.db_comm_iface.getAvatarFile(hash)
|
||||
return self.db_plugin_iface.getAvatarFile(hash)
|
||||
|
||||
def in_band_register(self, target, profile_key='@DEFAULT@'):
|
||||
return self.db_comm_iface.in_band_register(target, profile_key)
|
||||
return self.db_plugin_iface.in_band_register(target, profile_key)
|
||||
|
||||
def gatewayRegister(self, action, target, data, profile_key='@DEFAULT@'):
|
||||
if data == None:
|
||||
data = [('', '')] #XXX: we have to do this awful hack because python dbus need to guess the signature
|
||||
return self.db_req_iface.gatewayRegister(action, target, data, profile_key)
|
||||
return self.db_plugin_iface.gatewayRegister(action, target, data, profile_key)
|
||||
|
||||
def getLastMicroblogs(self, jid, max_items, profile_key='@DEFAULT@', callback=None, errback=None):
|
||||
return self.db_comm_iface.getLastMicroblogs(jid, max_items, profile_key, reply_handler=callback, error_handler=errback)
|
||||
return self.db_plugin_iface.getLastMicroblogs(jid, max_items, profile_key, reply_handler=callback, error_handler=errback)
|
||||
|
||||
def getMblogNodes(self, profile_key='@DEFAULT@', callback=None, errback=None):
|
||||
return self.db_comm_iface.getMblogNodes(profile_key, reply_handler=callback, error_handler=errback)
|
||||
return self.db_plugin_iface.getMblogNodes(profile_key, reply_handler=callback, error_handler=errback)
|
||||
|
||||
def sendGroupBlog(self, groups, message, profile_key='@DEFAULT@'):
|
||||
return self.db_comm_iface.sendGroupBlog(groups, message, profile_key)
|
||||
return self.db_plugin_iface.sendGroupBlog(groups, message, profile_key)
|
||||
|
||||
def sendPersonalEvent(self, event_type, data, profile_key='@DEFAULT@'):
|
||||
return self.db_comm_iface.sendPersonalEvent(event_type, data, profile_key)
|
||||
return self.db_plugin_iface.sendPersonalEvent(event_type, data, profile_key)
|
||||
|
||||
def setMicroblogAccess(self, access="presence", profile_key='@DEFAULT@', callback=None, errback=None):
|
||||
return self.db_comm_iface.setMicroblogAccess(access, profile_key, reply_handler=callback, error_handler=errback)
|
||||
return self.db_plugin_iface.setMicroblogAccess(access, profile_key, reply_handler=callback, error_handler=errback)
|
||||
|
|
|
|||
|
|
@ -51,33 +51,33 @@ class QuickApp():
|
|||
self.bridge.register("newMessage", self.newMessage)
|
||||
self.bridge.register("newAlert", self.newAlert)
|
||||
self.bridge.register("presenceUpdate", self.presenceUpdate)
|
||||
self.bridge.register("roomJoined", self.roomJoined)
|
||||
self.bridge.register("roomUserJoined", self.roomUserJoined)
|
||||
self.bridge.register("roomUserLeft", self.roomUserLeft)
|
||||
self.bridge.register("roomNewSubject", self.roomNewSubject)
|
||||
self.bridge.register("tarotGameStarted", self.tarotGameStarted)
|
||||
self.bridge.register("tarotGameNew", self.tarotGameNew)
|
||||
self.bridge.register("tarotGameChooseContrat", self.tarotChooseContrat)
|
||||
self.bridge.register("tarotGameShowCards", self.tarotShowCards)
|
||||
self.bridge.register("tarotGameYourTurn", self.tarotMyTurn)
|
||||
self.bridge.register("tarotGameScore", self.tarotScore)
|
||||
self.bridge.register("tarotGameCardsPlayed", self.tarotCardsPlayed)
|
||||
self.bridge.register("tarotGameInvalidCards", self.tarotInvalidCards)
|
||||
self.bridge.register("quizGameStarted", self.quizGameStarted)
|
||||
self.bridge.register("quizGameNew", self.quizGameNew)
|
||||
self.bridge.register("quizGameQuestion", self.quizGameQuestion)
|
||||
self.bridge.register("quizGamePlayerBuzzed", self.quizGamePlayerBuzzed)
|
||||
self.bridge.register("quizGamePlayerSays", self.quizGamePlayerSays)
|
||||
self.bridge.register("quizGameAnswerResult", self.quizGameAnswerResult)
|
||||
self.bridge.register("quizGameTimerExpired", self.quizGameTimerExpired)
|
||||
self.bridge.register("quizGameTimerRestarted", self.quizGameTimerRestarted)
|
||||
self.bridge.register("subscribe", self.subscribe)
|
||||
self.bridge.register("paramUpdate", self.paramUpdate)
|
||||
self.bridge.register("contactDeleted", self.contactDeleted)
|
||||
self.bridge.register("updatedValue", self.updatedValue, "request")
|
||||
self.bridge.register("askConfirmation", self.askConfirmation, "request")
|
||||
self.bridge.register("actionResult", self.actionResult, "request")
|
||||
self.bridge.register("actionResultExt", self.actionResult, "request")
|
||||
self.bridge.register("updatedValue", self.updatedValue)
|
||||
self.bridge.register("askConfirmation", self.askConfirmation)
|
||||
self.bridge.register("actionResult", self.actionResult)
|
||||
self.bridge.register("actionResultExt", self.actionResult)
|
||||
self.bridge.register("roomJoined", self.roomJoined, "plugin")
|
||||
self.bridge.register("roomUserJoined", self.roomUserJoined, "plugin")
|
||||
self.bridge.register("roomUserLeft", self.roomUserLeft, "plugin")
|
||||
self.bridge.register("roomNewSubject", self.roomNewSubject, "plugin")
|
||||
self.bridge.register("tarotGameStarted", self.tarotGameStarted, "plugin")
|
||||
self.bridge.register("tarotGameNew", self.tarotGameNew, "plugin")
|
||||
self.bridge.register("tarotGameChooseContrat", self.tarotChooseContrat, "plugin")
|
||||
self.bridge.register("tarotGameShowCards", self.tarotShowCards, "plugin")
|
||||
self.bridge.register("tarotGameYourTurn", self.tarotMyTurn, "plugin")
|
||||
self.bridge.register("tarotGameScore", self.tarotScore, "plugin")
|
||||
self.bridge.register("tarotGameCardsPlayed", self.tarotCardsPlayed, "plugin")
|
||||
self.bridge.register("tarotGameInvalidCards", self.tarotInvalidCards, "plugin")
|
||||
self.bridge.register("quizGameStarted", self.quizGameStarted, "plugin")
|
||||
self.bridge.register("quizGameNew", self.quizGameNew, "plugin")
|
||||
self.bridge.register("quizGameQuestion", self.quizGameQuestion, "plugin")
|
||||
self.bridge.register("quizGamePlayerBuzzed", self.quizGamePlayerBuzzed, "plugin")
|
||||
self.bridge.register("quizGamePlayerSays", self.quizGamePlayerSays, "plugin")
|
||||
self.bridge.register("quizGameAnswerResult", self.quizGameAnswerResult, "plugin")
|
||||
self.bridge.register("quizGameTimerExpired", self.quizGameTimerExpired, "plugin")
|
||||
self.bridge.register("quizGameTimerRestarted", self.quizGameTimerRestarted, "plugin")
|
||||
|
||||
self.current_action_ids = set()
|
||||
self.current_action_ids_cb = {}
|
||||
|
|
@ -488,7 +488,9 @@ class QuickApp():
|
|||
except KeyError:
|
||||
pass
|
||||
|
||||
def updatedValue(self, name, data):
|
||||
def updatedValue(self, name, data, profile):
|
||||
if not self.check_profile(profile):
|
||||
return
|
||||
if name == "card_nick":
|
||||
target = JID(data['jid'])
|
||||
if target in self.contactList:
|
||||
|
|
|
|||
|
|
@ -69,12 +69,12 @@ class GroupBlog():
|
|||
for i in range(1,21):
|
||||
self.host.plugins["XEP-0163"].addPEPEvent("MICROBLOG_%02d" % i, NS_MICROBLOG % i, self.groupblogCB, None)
|
||||
|
||||
host.bridge.addMethod("cleanBlogCollection", ".communication", in_sign='s', out_sign='',
|
||||
host.bridge.addMethod("cleanBlogCollection", ".plugin", in_sign='s', out_sign='',
|
||||
method=self.cleanBlogCollection,
|
||||
doc = {
|
||||
})
|
||||
|
||||
host.bridge.addMethod("getMblogNodes", ".communication", in_sign='s', out_sign='a{sas}',
|
||||
host.bridge.addMethod("getMblogNodes", ".plugin", in_sign='s', out_sign='a{sas}',
|
||||
method=self.getMblogNodes,
|
||||
async = True,
|
||||
doc = { 'summary':"retrieve mblog node, and their association with roster's groups",
|
||||
|
|
@ -82,7 +82,7 @@ class GroupBlog():
|
|||
'return':'list of microblog data (dict)'
|
||||
})
|
||||
|
||||
host.bridge.addMethod("sendGroupBlog", ".communication", in_sign='asss', out_sign='',
|
||||
host.bridge.addMethod("sendGroupBlog", ".plugin", in_sign='asss', out_sign='',
|
||||
method=self.sendGroupBlog,
|
||||
doc = { 'summary':"Send a microblog to a list of groups",
|
||||
'param_0':'list of groups which can read the microblog',
|
||||
|
|
@ -90,7 +90,7 @@ class GroupBlog():
|
|||
'param_2':'%(doc_profile)s'
|
||||
})
|
||||
|
||||
host.bridge.addMethod("subscribeGroupBlog", ".communication", in_sign='ss', out_sign='',
|
||||
host.bridge.addMethod("subscribeGroupBlog", ".plugin", in_sign='ss', out_sign='',
|
||||
method=self.subscribeGroupBlog,
|
||||
doc = { 'summary':"Subscribe to the group blog of somebody",
|
||||
'param_0':'jid of the group node published',
|
||||
|
|
|
|||
|
|
@ -64,18 +64,18 @@ class Quiz():
|
|||
self.host = host
|
||||
self.games={}
|
||||
self.waiting_inv = {} #Invitation waiting for people to join to launch a game
|
||||
host.bridge.addMethod("quizGameLaunch", ".communication", in_sign='ass', out_sign='', method=self.quizGameLaunch) #args: room_jid, players, profile
|
||||
host.bridge.addMethod("quizGameCreate", ".communication", in_sign='sass', out_sign='', method=self.quizGameCreate) #args: room_jid, players, profile
|
||||
host.bridge.addMethod("quizGameReady", ".communication", in_sign='sss', out_sign='', method=self.newPlayerReady) #args: player, referee, profile
|
||||
host.bridge.addMethod("quizGameAnswer", ".communication", in_sign='ssss', out_sign='', method=self.playerAnswer)
|
||||
host.bridge.addSignal("quizGameStarted", ".communication", signature='ssass') #args: room_jid, referee, players, profile
|
||||
host.bridge.addSignal("quizGameNew", ".communication",
|
||||
host.bridge.addMethod("quizGameLaunch", ".plugin", in_sign='ass', out_sign='', method=self.quizGameLaunch) #args: room_jid, players, profile
|
||||
host.bridge.addMethod("quizGameCreate", ".plugin", in_sign='sass', out_sign='', method=self.quizGameCreate) #args: room_jid, players, profile
|
||||
host.bridge.addMethod("quizGameReady", ".plugin", in_sign='sss', out_sign='', method=self.newPlayerReady) #args: player, referee, profile
|
||||
host.bridge.addMethod("quizGameAnswer", ".plugin", in_sign='ssss', out_sign='', method=self.playerAnswer)
|
||||
host.bridge.addSignal("quizGameStarted", ".plugin", signature='ssass') #args: room_jid, referee, players, profile
|
||||
host.bridge.addSignal("quizGameNew", ".plugin",
|
||||
signature='sa{ss}s',
|
||||
doc = { 'summary': 'Start a new game',
|
||||
'param_0': "room_jid: jid of game's room",
|
||||
'param_1': "game_data: data of the game",
|
||||
'param_2': '%(doc_profile)s'})
|
||||
host.bridge.addSignal("quizGameQuestion", ".communication",
|
||||
host.bridge.addSignal("quizGameQuestion", ".plugin",
|
||||
signature = 'sssis',
|
||||
doc = { 'summary': "Send the current question",
|
||||
'param_0': "room_jid: jid of game's room",
|
||||
|
|
@ -83,14 +83,14 @@ class Quiz():
|
|||
'param_2': "question: question to ask",
|
||||
'param_3': "timer: timer",
|
||||
'param_4': '%(doc_profile)s'})
|
||||
host.bridge.addSignal("quizGamePlayerBuzzed", ".communication",
|
||||
host.bridge.addSignal("quizGamePlayerBuzzed", ".plugin",
|
||||
signature = 'ssbs',
|
||||
doc = { 'summary': "A player just pressed the buzzer",
|
||||
'param_0': "room_jid: jid of game's room",
|
||||
'param_1': "player: player who pushed the buzzer",
|
||||
'param_2': "pause: should the game be paused ?",
|
||||
'param_3': '%(doc_profile)s'})
|
||||
host.bridge.addSignal("quizGamePlayerSays", ".communication",
|
||||
host.bridge.addSignal("quizGamePlayerSays", ".plugin",
|
||||
signature = 'sssis',
|
||||
doc = { 'summary': "A player just pressed the buzzer",
|
||||
'param_0': "room_jid: jid of game's room",
|
||||
|
|
@ -98,7 +98,7 @@ class Quiz():
|
|||
'param_2': "text: what the player say",
|
||||
'param_3': "delay: how long, in seconds, the text must appear",
|
||||
'param_4': '%(doc_profile)s'})
|
||||
host.bridge.addSignal("quizGameAnswerResult", ".communication",
|
||||
host.bridge.addSignal("quizGameAnswerResult", ".plugin",
|
||||
signature = 'ssba{si}s',
|
||||
doc = { 'summary': "Result of the just given answer",
|
||||
'param_0': "room_jid: jid of game's room",
|
||||
|
|
@ -106,12 +106,12 @@ class Quiz():
|
|||
'param_2': "good_answer: True if the answer is right",
|
||||
'param_3': "score: dict of score with player as key",
|
||||
'param_4': '%(doc_profile)s'})
|
||||
host.bridge.addSignal("quizGameTimerExpired", ".communication",
|
||||
host.bridge.addSignal("quizGameTimerExpired", ".plugin",
|
||||
signature = 'ss',
|
||||
doc = { 'summary': "Nobody answered the question in time",
|
||||
'param_0': "room_jid: jid of game's room",
|
||||
'param_1': '%(doc_profile)s'})
|
||||
host.bridge.addSignal("quizGameTimerRestarted", ".communication",
|
||||
host.bridge.addSignal("quizGameTimerRestarted", ".plugin",
|
||||
signature = 'sis',
|
||||
doc = { 'summary': "Nobody answered the question in time",
|
||||
'param_0': "room_jid: jid of game's room",
|
||||
|
|
|
|||
|
|
@ -65,19 +65,19 @@ class Tarot():
|
|||
self.games={}
|
||||
self.waiting_inv = {} #Invitation waiting for people to join to launch a game
|
||||
self.contrats = [_('Passe'), _('Petite'), _('Garde'), _('Garde Sans'), _('Garde Contre')]
|
||||
host.bridge.addMethod("tarotGameLaunch", ".communication", in_sign='ass', out_sign='', method=self.launchGame) #args: room_jid, players, profile
|
||||
host.bridge.addMethod("tarotGameCreate", ".communication", in_sign='sass', out_sign='', method=self.createGame) #args: room_jid, players, profile
|
||||
host.bridge.addMethod("tarotGameReady", ".communication", in_sign='sss', out_sign='', method=self.newPlayerReady) #args: player, referee, profile
|
||||
host.bridge.addMethod("tarotGameContratChoosed", ".communication", in_sign='ssss', out_sign='', method=self.contratChoosed) #args: player, referee, contrat, profile
|
||||
host.bridge.addMethod("tarotGamePlayCards", ".communication", in_sign='ssa(ss)s', out_sign='', method=self.play_cards) #args: player, referee, cards, profile
|
||||
host.bridge.addSignal("tarotGameStarted", ".communication", signature='ssass') #args: room_jid, referee, players, profile
|
||||
host.bridge.addSignal("tarotGameNew", ".communication", signature='sa(ss)s') #args: room_jid, hand, profile
|
||||
host.bridge.addSignal("tarotGameChooseContrat", ".communication", signature='sss') #args: room_jid, xml_data, profile
|
||||
host.bridge.addSignal("tarotGameShowCards", ".communication", signature='ssa(ss)a{ss}s') #args: room_jid, type ["chien", "poignée",...], cards, data[dict], profile
|
||||
host.bridge.addSignal("tarotGameCardsPlayed", ".communication", signature='ssa(ss)s') #args: room_jid, player, type ["chien", "poignée",...], cards, data[dict], profile
|
||||
host.bridge.addSignal("tarotGameYourTurn", ".communication", signature='ss') #args: room_jid, profile
|
||||
host.bridge.addSignal("tarotGameScore", ".communication", signature='ssasass') #args: room_jid, xml_data, winners (list of nicks), loosers (list of nicks), profile
|
||||
host.bridge.addSignal("tarotGameInvalidCards", ".communication", signature='ssa(ss)a(ss)s') #args: room_jid, game phase, played_cards, invalid_cards, profile
|
||||
host.bridge.addMethod("tarotGameLaunch", ".plugin", in_sign='ass', out_sign='', method=self.launchGame) #args: room_jid, players, profile
|
||||
host.bridge.addMethod("tarotGameCreate", ".plugin", in_sign='sass', out_sign='', method=self.createGame) #args: room_jid, players, profile
|
||||
host.bridge.addMethod("tarotGameReady", ".plugin", in_sign='sss', out_sign='', method=self.newPlayerReady) #args: player, referee, profile
|
||||
host.bridge.addMethod("tarotGameContratChoosed", ".plugin", in_sign='ssss', out_sign='', method=self.contratChoosed) #args: player, referee, contrat, profile
|
||||
host.bridge.addMethod("tarotGamePlayCards", ".plugin", in_sign='ssa(ss)s', out_sign='', method=self.play_cards) #args: player, referee, cards, profile
|
||||
host.bridge.addSignal("tarotGameStarted", ".plugin", signature='ssass') #args: room_jid, referee, players, profile
|
||||
host.bridge.addSignal("tarotGameNew", ".plugin", signature='sa(ss)s') #args: room_jid, hand, profile
|
||||
host.bridge.addSignal("tarotGameChooseContrat", ".plugin", signature='sss') #args: room_jid, xml_data, profile
|
||||
host.bridge.addSignal("tarotGameShowCards", ".plugin", signature='ssa(ss)a{ss}s') #args: room_jid, type ["chien", "poignée",...], cards, data[dict], profile
|
||||
host.bridge.addSignal("tarotGameCardsPlayed", ".plugin", signature='ssa(ss)s') #args: room_jid, player, type ["chien", "poignée",...], cards, data[dict], profile
|
||||
host.bridge.addSignal("tarotGameYourTurn", ".plugin", signature='ss') #args: room_jid, profile
|
||||
host.bridge.addSignal("tarotGameScore", ".plugin", signature='ssasass') #args: room_jid, xml_data, winners (list of nicks), loosers (list of nicks), profile
|
||||
host.bridge.addSignal("tarotGameInvalidCards", ".plugin", signature='ssa(ss)a(ss)s') #args: room_jid, game phase, played_cards, invalid_cards, profile
|
||||
host.trigger.add("MUC user joined", self.userJoinedTrigger)
|
||||
self.deck_ordered = []
|
||||
for value in ['excuse']+map(str,range(1,22)):
|
||||
|
|
|
|||
|
|
@ -72,7 +72,7 @@ class XmlLog():
|
|||
host.memory.importParams(self.params)
|
||||
|
||||
#bridge
|
||||
host.bridge.addSignal("xmlLog", ".communication", signature='sss') #args: direction("IN" or "OUT"), xml_data, profile
|
||||
host.bridge.addSignal("xmlLog", ".plugin", signature='sss') #args: direction("IN" or "OUT"), xml_data, profile
|
||||
|
||||
do_log = bool(self.host.memory.getParamA("Xml log", "Debug"))
|
||||
if do_log:
|
||||
|
|
|
|||
|
|
@ -58,14 +58,14 @@ class XEP_0045():
|
|||
info(_("Plugin XEP_0045 initialization"))
|
||||
self.host = host
|
||||
self.clients={}
|
||||
host.bridge.addMethod("joinMUC", ".communication", in_sign='ssss', out_sign='', method=self._join)
|
||||
host.bridge.addMethod("getRoomJoined", ".communication", in_sign='s', out_sign='a(ssass)', method=self.getRoomJoined)
|
||||
host.bridge.addMethod("getRoomSubjects", ".communication", in_sign='s', out_sign='a(sss)', method=self.getRoomSubjects)
|
||||
host.bridge.addMethod("getUniqueRoomName", ".communication", in_sign='s', out_sign='s', method=self.getUniqueName)
|
||||
host.bridge.addSignal("roomJoined", ".communication", signature='ssasss') #args: room_id, room_service, room_nicks, user_nick, profile
|
||||
host.bridge.addSignal("roomUserJoined", ".communication", signature='sssa{ss}s') #args: room_id, room_service, user_nick, user_data, profile
|
||||
host.bridge.addSignal("roomUserLeft", ".communication", signature='sssa{ss}s') #args: room_id, room_service, user_nick, user_data, profile
|
||||
host.bridge.addSignal("roomNewSubject", ".communication", signature='ssss') #args: room_id, room_service, subject, profile
|
||||
host.bridge.addMethod("joinMUC", ".plugin", in_sign='ssss', out_sign='', method=self._join)
|
||||
host.bridge.addMethod("getRoomJoined", ".plugin", in_sign='s', out_sign='a(ssass)', method=self.getRoomJoined)
|
||||
host.bridge.addMethod("getRoomSubjects", ".plugin", in_sign='s', out_sign='a(sss)', method=self.getRoomSubjects)
|
||||
host.bridge.addMethod("getUniqueRoomName", ".plugin", in_sign='s', out_sign='s', method=self.getUniqueName)
|
||||
host.bridge.addSignal("roomJoined", ".plugin", signature='ssasss') #args: room_id, room_service, room_nicks, user_nick, profile
|
||||
host.bridge.addSignal("roomUserJoined", ".plugin", signature='sssa{ss}s') #args: room_id, room_service, user_nick, user_data, profile
|
||||
host.bridge.addSignal("roomUserLeft", ".plugin", signature='sssa{ss}s') #args: room_id, room_service, user_nick, user_data, profile
|
||||
host.bridge.addSignal("roomNewSubject", ".plugin", signature='ssss') #args: room_id, room_service, subject, profile
|
||||
|
||||
def __check_profile(self, profile):
|
||||
"""check if profile is used and connected
|
||||
|
|
|
|||
|
|
@ -71,17 +71,21 @@ class XEP_0054():
|
|||
self.vcard_cache = host.memory.getPrivate("vcard_cache") or {} #used to store nicknames and avatar, key = jid
|
||||
if not os.path.exists(self.avatar_path):
|
||||
os.makedirs(self.avatar_path)
|
||||
host.bridge.addMethod("getCard", ".communication", in_sign='ss', out_sign='s', method=self.getCard)
|
||||
host.bridge.addMethod("getAvatarFile", ".communication", in_sign='s', out_sign='s', method=self.getAvatarFile)
|
||||
host.bridge.addMethod("getCardCache", ".communication", in_sign='s', out_sign='a{ss}', method=self.getCardCache)
|
||||
host.bridge.addMethod("getCard", ".plugin", in_sign='ss', out_sign='s', method=self.getCard)
|
||||
host.bridge.addMethod("getAvatarFile", ".plugin", in_sign='s', out_sign='s', method=self.getAvatarFile)
|
||||
host.bridge.addMethod("getCardCache", ".plugin", in_sign='s', out_sign='a{ss}', method=self.getCardCache)
|
||||
|
||||
def getHandler(self, profile):
|
||||
return XEP_0054_handler(self)
|
||||
|
||||
def update_cache(self, jid, name, value):
|
||||
def update_cache(self, jid, name, value, profile):
|
||||
"""update cache value
|
||||
- save value in memory in case of change
|
||||
- send updatedValue signal if the value is new or updated
|
||||
@param jid: jid of the owner of the vcard
|
||||
@param name: name of the item which changed
|
||||
@param value: new value of the item
|
||||
@param profile: profile which received the update
|
||||
"""
|
||||
if not self.vcard_cache.has_key(jid.userhost()):
|
||||
self.vcard_cache[jid.userhost()] = {}
|
||||
|
|
@ -91,7 +95,7 @@ class XEP_0054():
|
|||
if not old_value or value != old_value:
|
||||
cache[name] = value
|
||||
self.host.memory.setPrivate("vcard_cache", self.vcard_cache)
|
||||
self.host.bridge.updatedValue('card_'+name, {'jid':jid.userhost(), name:value})
|
||||
self.host.bridge.updatedValue('card_'+name, {'jid':jid.userhost(), name:value}, profile)
|
||||
|
||||
def get_cache(self, jid, name):
|
||||
"""return cached value for jid
|
||||
|
|
@ -123,7 +127,7 @@ class XEP_0054():
|
|||
return hash
|
||||
|
||||
@defer.deferredGenerator
|
||||
def vCard2Dict(self, vcard, target):
|
||||
def vCard2Dict(self, vcard, target, profile):
|
||||
"""Convert a VCard to a dict, and save binaries"""
|
||||
debug (_("parsing vcard"))
|
||||
dictionary = {}
|
||||
|
|
@ -134,7 +138,7 @@ class XEP_0054():
|
|||
dictionary['fullname'] = unicode(elem)
|
||||
elif elem.name == 'NICKNAME':
|
||||
dictionary['nick'] = unicode(elem)
|
||||
self.update_cache(target, 'nick', dictionary['nick'])
|
||||
self.update_cache(target, 'nick', dictionary['nick'], profile)
|
||||
elif elem.name == 'URL':
|
||||
dictionary['website'] = unicode(elem)
|
||||
elif elem.name == 'EMAIL':
|
||||
|
|
@ -149,18 +153,18 @@ class XEP_0054():
|
|||
if not dictionary["avatar"]: #can happen in case of e.g. empty photo elem
|
||||
del dictionary['avatar']
|
||||
else:
|
||||
self.update_cache(target, 'avatar', dictionary['avatar'])
|
||||
self.update_cache(target, 'avatar', dictionary['avatar'], profile)
|
||||
else:
|
||||
info (_('FIXME: [%s] VCard tag is not managed yet') % elem.name)
|
||||
|
||||
yield dictionary
|
||||
|
||||
def vcard_ok(self, answer):
|
||||
def vcard_ok(self, answer, profile):
|
||||
"""Called after the first get IQ"""
|
||||
debug (_("VCard found"))
|
||||
|
||||
if answer.firstChildElement().name == "vCard":
|
||||
d = self.vCard2Dict(answer.firstChildElement(), jid.JID(answer["from"]))
|
||||
d = self.vCard2Dict(answer.firstChildElement(), jid.JID(answer["from"]), profile)
|
||||
d.addCallback(lambda data: self.host.bridge.actionResult("RESULT", answer['id'], data))
|
||||
else:
|
||||
error (_("FIXME: vCard not found as first child element"))
|
||||
|
|
@ -179,13 +183,14 @@ class XEP_0054():
|
|||
if not xmlstream:
|
||||
error (_('Asking vcard for an non-existant or not connected profile'))
|
||||
return ""
|
||||
profile = self.host.memory.getProfileName(profile_key)
|
||||
to_jid = jid.JID(target)
|
||||
debug(_("Asking for %s's VCard") % to_jid.userhost())
|
||||
reg_request=IQ(xmlstream,'get')
|
||||
reg_request["from"]=current_jid.full()
|
||||
reg_request["to"] = to_jid.userhost()
|
||||
query=reg_request.addElement('vCard', NS_VCARD)
|
||||
reg_request.send(to_jid.userhost()).addCallbacks(self.vcard_ok, self.vcard_err)
|
||||
reg_request.send(to_jid.userhost()).addCallbacks(self.vcard_ok, self.vcard_err, [profile])
|
||||
return reg_request["id"]
|
||||
|
||||
def getAvatarFile(self, hash):
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ class XEP_0060():
|
|||
self.host = host
|
||||
self.managedNodes=[]
|
||||
self.clients={}
|
||||
"""host.bridge.addMethod("getItems", ".communication", in_sign='ssa{ss}s', out_sign='as', method=self.getItems,
|
||||
"""host.bridge.addMethod("getItems", ".plugin", in_sign='ssa{ss}s', out_sign='as', method=self.getItems,
|
||||
async = True,
|
||||
doc = { 'summary':'retrieve items',
|
||||
'param_0':'service: pubsub service',
|
||||
|
|
|
|||
|
|
@ -47,8 +47,8 @@ class XEP_0077():
|
|||
info(_("Plugin XEP_0077 initialization"))
|
||||
self.host = host
|
||||
self.triggers = {} #used by other protocol (e.g. XEP-0100) to finish registration. key = target_jid
|
||||
host.bridge.addMethod("in_band_register", ".communication", in_sign='ss', out_sign='s', method=self.in_band_register)
|
||||
host.bridge.addMethod("in_band_submit", ".request", in_sign='sa(ss)', out_sign='s', method=self.in_band_submit)
|
||||
host.bridge.addMethod("in_band_register", ".plugin", in_sign='ss', out_sign='s', method=self.in_band_register)
|
||||
host.bridge.addMethod("in_band_submit", ".plugin", in_sign='sa(ss)', out_sign='s', method=self.in_band_submit)
|
||||
|
||||
def addTrigger(self, target, cb, profile):
|
||||
"""Add a callback which is called when registration to target is successful"""
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@ class XEP_0096():
|
|||
info(_("Plugin XEP_0096 initialization"))
|
||||
self.host = host
|
||||
self._waiting_for_approval = {}
|
||||
host.bridge.addMethod("sendFile", ".communication", in_sign='sss', out_sign='s', method=self.sendFile)
|
||||
host.bridge.addMethod("sendFile", ".plugin", in_sign='sss', out_sign='s', method=self.sendFile)
|
||||
|
||||
def getHandler(self, profile):
|
||||
return XEP_0096_handler(self)
|
||||
|
|
|
|||
|
|
@ -44,8 +44,8 @@ class XEP_0100():
|
|||
info(_("Gateways plugin initialization"))
|
||||
self.host = host
|
||||
self.__gateways = {} #dict used to construct the answer to findGateways. Key = target jid
|
||||
host.bridge.addMethod("findGateways", ".communication", in_sign='ss', out_sign='s', method=self.findGateways)
|
||||
host.bridge.addMethod("gatewayRegister", ".request", in_sign='ssa(ss)s', out_sign='s', method=self.gatewayRegister)
|
||||
host.bridge.addMethod("findGateways", ".plugin", in_sign='ss', out_sign='s', method=self.findGateways)
|
||||
host.bridge.addMethod("gatewayRegister", ".plugin", in_sign='ssa(ss)s', out_sign='s', method=self.gatewayRegister)
|
||||
|
||||
def __inc_handled_items(self, request_id):
|
||||
self.__gateways[request_id]['__handled_items']+=1
|
||||
|
|
|
|||
|
|
@ -50,8 +50,8 @@ class XEP_0163():
|
|||
self.pep_events=set()
|
||||
self.pep_out_cb={}
|
||||
host.trigger.add("PubSub Disco Info", self.disoInfoTrigger)
|
||||
host.bridge.addSignal("personalEvent", ".communication", signature='ssa{ss}s') #args: from (jid), type(MOOD, TUNE, etc), data, profile
|
||||
host.bridge.addMethod("sendPersonalEvent", ".communication", in_sign='sa{ss}s', out_sign='i', method=self.sendPersonalEvent) #args: type(MOOD, TUNE, etc), data, profile_key; return 0 or error_code
|
||||
host.bridge.addSignal("personalEvent", ".plugin", signature='ssa{ss}s') #args: from (jid), type(MOOD, TUNE, etc), data, profile
|
||||
host.bridge.addMethod("sendPersonalEvent", ".plugin", in_sign='sa{ss}s', out_sign='i', method=self.sendPersonalEvent) #args: type(MOOD, TUNE, etc), data, profile_key; return 0 or error_code
|
||||
self.addPEPEvent("MOOD", NS_USER_MOOD, self.userMoodCB, self.sendMood)
|
||||
|
||||
def disoInfoTrigger(self, disco_info, profile):
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ class XEP_0249():
|
|||
def __init__(self, host):
|
||||
info(_("Plugin XEP_0249 initialization"))
|
||||
self.host = host
|
||||
host.bridge.addMethod("inviteMUC", ".communication", in_sign='sssa{ss}s', out_sign='', method=self._invite)
|
||||
host.bridge.addMethod("inviteMUC", ".plugin", in_sign='sssa{ss}s', out_sign='', method=self._invite)
|
||||
|
||||
def getHandler(self, profile):
|
||||
return XEP_0249_handler(self)
|
||||
|
|
|
|||
|
|
@ -59,7 +59,7 @@ class XEP_0277():
|
|||
info(_("Microblogging plugin initialization"))
|
||||
self.host = host
|
||||
self.host.plugins["XEP-0163"].addPEPEvent("MICROBLOG", NS_MICROBLOG, self.microblogCB, self.sendMicroblog)
|
||||
host.bridge.addMethod("getLastMicroblogs", ".communication",
|
||||
host.bridge.addMethod("getLastMicroblogs", ".plugin",
|
||||
in_sign='sis', out_sign='aa{ss}',
|
||||
method=self.getLastMicroblogs,
|
||||
async = True,
|
||||
|
|
@ -69,7 +69,7 @@ class XEP_0277():
|
|||
'param_2':'%(doc_profile)s',
|
||||
'return':'list of microblog data (dict)'
|
||||
})
|
||||
host.bridge.addMethod("setMicroblogAccess", ".communication", in_sign='ss', out_sign='',
|
||||
host.bridge.addMethod("setMicroblogAccess", ".plugin", in_sign='ss', out_sign='',
|
||||
method=self.setMicroblogAccess,
|
||||
async = True,
|
||||
doc = {
|
||||
|
|
|
|||
Loading…
Reference in a new issue