- core: 2 new convenient methods: getJidNStream and getClient - new param in plugin info: "handler" to know if there is a handler to plug on profiles clients - plugins with handler now use an other class which is returned to profile client with the new method "getHandler" and pluged when connecting
124 lines
4.4 KiB
Python
Executable file
124 lines
4.4 KiB
Python
Executable file
#!/usr/bin/python
|
|
#-*- coding: utf-8 -*-
|
|
|
|
"""
|
|
SAT communication bridge
|
|
Copyright (C) 2009, 2010 Jérôme Poisson (goffi@goffi.org)
|
|
|
|
This program is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
"""
|
|
|
|
from bridge_frontend import BridgeFrontend
|
|
import dbus, dbus.glib
|
|
|
|
|
|
class DBusBridgeFrontend(BridgeFrontend):
|
|
def __init__(self):
|
|
self.sessions_bus = dbus.SessionBus()
|
|
self.db_object = self.sessions_bus.get_object('org.goffi.SAT',
|
|
'/org/goffi/SAT/bridge')
|
|
self.db_comm_iface = dbus.Interface(self.db_object,
|
|
dbus_interface='org.goffi.SAT.communication')
|
|
self.db_req_iface = dbus.Interface(self.db_object,
|
|
dbus_interface='org.goffi.SAT.request')
|
|
#props = self.db_comm_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 connect(self):
|
|
return self.db_comm_iface.connect()
|
|
|
|
def disconnect(self):
|
|
return self.db_comm_iface.disconnect()
|
|
|
|
def getContacts(self):
|
|
return self.db_comm_iface.getContacts()
|
|
|
|
def getPresenceStatus(self):
|
|
return self.db_comm_iface.getPresenceStatus()
|
|
|
|
def getWaitingSub(self):
|
|
return self.db_comm_iface.getWaitingSub()
|
|
|
|
def sendMessage(self, to, message):
|
|
return self.db_comm_iface.sendMessage(to, message)
|
|
|
|
def sendFile(self, to, path, profile_key='@DEFAULT@'):
|
|
return self.db_comm_iface.sendFile(to, path, profile_key)
|
|
|
|
def findGateways(self, target):
|
|
return self.db_comm_iface.findGateways(target)
|
|
|
|
def getCard(self, target, profile_key='@DEFAULT@'):
|
|
return self.db_comm_iface.getCard(target, profile_key)
|
|
|
|
def getCardCache(self, target):
|
|
return self.db_comm_iface.getCardCache(target)
|
|
|
|
def getAvatarFile(self, hash):
|
|
return self.db_comm_iface.getAvatarFile(hash)
|
|
|
|
def in_band_register(self, target, profile_key='@DEFAULT@'):
|
|
return self.db_comm_iface.in_band_register(target, profile_key)
|
|
|
|
def setPresence(self, to="", show="", priority=0, statuses={}):
|
|
return self.db_comm_iface.setPresence(to, show, priority, statuses)
|
|
|
|
def subscription(self, type, entity):
|
|
return self.db_comm_iface.subscription(type, entity)
|
|
|
|
def setParam(self, name, value, category):
|
|
return self.db_comm_iface.setParam(name, value, category)
|
|
|
|
def getParamA(self, name, category):
|
|
return self.db_comm_iface.getParamA(name, category)
|
|
|
|
def getParams(self):
|
|
return self.db_comm_iface.getParams()
|
|
|
|
def getParamsForCategory(self, category):
|
|
return self.db_comm_iface.getParamsForCategory(category)
|
|
|
|
def getParamsCategories(self):
|
|
return self.db_comm_iface.getParamsCategories()
|
|
|
|
def getHistory(self, from_jid, to_jid, size):
|
|
return self.db_comm_iface.getHistory(from_jid, to_jid, size)
|
|
|
|
def addContact(self, jid):
|
|
return self.db_comm_iface.addContact(jid)
|
|
|
|
def delContact(self, jid):
|
|
return self.db_comm_iface.delContact(jid)
|
|
|
|
def isConnected(self):
|
|
return self.db_comm_iface.isConnected()
|
|
|
|
def launchAction(self, type, data):
|
|
return self.db_req_iface.launchAction(type, data)
|
|
|
|
def confirmationAnswer(self, id, accepted, data):
|
|
return self.db_req_iface.confirmationAnswer(id, accepted, data)
|
|
|
|
def gatewayRegister(self, action, target, data):
|
|
if data == None:
|
|
data = [('', '')] #XXX: we have to this awful hack because python dbus need to guess the signature
|
|
return self.db_req_iface.gatewayRegister(action, target, data)
|
|
|
|
def getProgress(self, id):
|
|
return self.db_req_iface.getProgress(id)
|