Mercurial > libervia-backend
changeset 951:027a054c6dda
core (disco): added checkFeature method + fixed hasFeature test
author | Goffi <goffi@goffi.org> |
---|---|
date | Mon, 31 Mar 2014 12:23:13 +0200 |
parents | 5e8e8a034411 |
children | 91836a647515 |
files | src/core/sat_main.py src/memory/disco.py |
diffstat | 2 files changed, 20 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/core/sat_main.py Mon Mar 31 12:23:13 2014 +0200 +++ b/src/core/sat_main.py Mon Mar 31 12:23:13 2014 +0200 @@ -611,6 +611,9 @@ def hasFeature(self, *args, **kwargs): return self.memory.disco.hasFeature(*args, **kwargs) + def checkFeature(self, *args, **kwargs): + return self.memory.disco.checkFeature(*args, **kwargs) + def getDiscoInfos(self, *args, **kwargs): return self.memory.disco.getInfos(*args, **kwargs)
--- a/src/memory/disco.py Mon Mar 31 12:23:13 2014 +0200 +++ b/src/memory/disco.py Mon Mar 31 12:23:13 2014 +0200 @@ -18,6 +18,7 @@ # along with this program. If not, see <http://www.gnu.org/licenses/>. from sat.core.i18n import _ +from sat.core import exceptions from logging import debug, info, warning, error from twisted.words.protocols.jabber import jid from twisted.internet import defer @@ -67,6 +68,22 @@ @return: a Deferred which fire a boolean (True if feature is available) """ disco_info = yield self.getInfos(jid_, profile_key) + defer.returnValue(feature in disco_info.features) + + @defer.inlineCallbacks + def checkFeature(self, feature, jid_=None, profile_key=C.PROF_KEY_NONE): + """Like hasFeature, but raise an exception is feature is not Found + + @param feature: feature namespace + @param jid_: jid of the target, or None for profile's server + @param profile_key: %(doc_profile_key)s + @return: None if feature is found + + @raise: exceptions.FeatureNotFound + """ + disco_info = yield self.getInfos(jid_, profile_key) + if not feature in disco_info.features: + raise exceptions.FeatureNotFound defer.returnValue(feature in disco_info) @defer.inlineCallbacks