Mercurial > libervia-backend
diff src/memory/disco.py @ 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 | e1842ebcb2f3 |
children | 0e8c2414f89c |
line wrap: on
line diff
--- 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