Mercurial > libervia-backend
comparison src/plugins/plugin_misc_groupblog.py @ 944:e1842ebcb2f3
core, plugin XEP-0115: discovery refactoring:
- hashing algorithm of XEP-0115 has been including in core
- our own hash is still calculated by XEP-0115 and can be regenerated with XEP_0115.recalculateHash
- old discovery methods have been removed. Now the following methods are used:
- hasFeature: tell if a feature is available for an entity
- getDiscoInfos: self explaining
- getDiscoItems: self explaining
- findServiceEntities: return all available items of an entity which given (category, type)
- findFeaturesSet: search for a set of features in entity + entity's items
all these methods are asynchronous, and manage cache automatically
- XEP-0115 manage in a better way hashes, and now use a trigger for presence instead of monkey patch
- new FeatureNotFound exception, when we want to do something which is not available
- refactored client initialisation sequence, removed client.initialized Deferred
- added constant APP_URL
- test_plugin_xep_0033.py has been temporarly deactivated, the time to adapt it
- lot of cleaning
author | Goffi <goffi@goffi.org> |
---|---|
date | Fri, 28 Mar 2014 18:07:22 +0100 |
parents | c6d8fc63b1db |
children | 301b342c697a |
comparison
equal
deleted
inserted
replaced
943:71926ec2114d | 944:e1842ebcb2f3 |
---|---|
152 profile = self.host.memory.getProfileName(profile_key) | 152 profile = self.host.memory.getProfileName(profile_key) |
153 if not profile: | 153 if not profile: |
154 raise exceptions.ProfileUnknownError | 154 raise exceptions.ProfileUnknownError |
155 | 155 |
156 client = self.host.getClient(profile) | 156 client = self.host.getClient(profile) |
157 yield client.client_initialized # we want to be sure that the client is initialized | |
158 | 157 |
159 #we first check that we have a item-access pubsub server | 158 #we first check that we have a item-access pubsub server |
160 if not hasattr(client, "item_access_pubsub"): | 159 if not hasattr(client, "item_access_pubsub"): |
161 debug(_('Looking for item-access power pubsub server')) | 160 debug(_('Looking for item-access powered pubsub server')) |
162 #we don't have any pubsub server featuring item access yet | 161 #we don't have any pubsub server featuring item access yet |
163 client.item_access_pubsub = None | 162 item_access_pubsubs = yield self.host.findFeaturesSet((NS_PUBSUB_AUTO_CREATE, NS_PUBSUB_CREATOR_JID_CHECK), "pubsub", "service", profile_key=profile) |
164 client._item_access_pubsub_pending = defer.Deferred() | 163 # item_access_pubsubs = yield self.host.findFeaturesSet((NS_PUBSUB_ITEM_ACCESS, NS_PUBSUB_AUTO_CREATE, NS_PUBSUB_CREATOR_JID_CHECK), "pubsub", "service", profile_key=profile) |
165 for entity in self.host.memory.getServerServiceEntities("pubsub", "service", profile=profile): | 164 try: |
166 _disco = yield client.disco.requestInfo(entity) | 165 client.item_access_pubsub = item_access_pubsubs.pop() |
167 #if set([NS_PUBSUB_ITEM_ACCESS, NS_PUBSUB_AUTO_CREATE, NS_PUBSUB_CREATOR_JID_CHECK]).issubset(_disco.features): | 166 info(_("item-access powered pubsub service found: [%s]") % client.item_access_pubsub.full()) |
168 if set([NS_PUBSUB_AUTO_CREATE, NS_PUBSUB_CREATOR_JID_CHECK]).issubset(_disco.features): | 167 except KeyError: |
169 info(_("item-access powered pubsub service found: [%s]") % entity.full()) | 168 client.item_access_pubsub = None |
170 client.item_access_pubsub = entity | |
171 client._item_access_pubsub_pending.callback(None) | |
172 | |
173 if hasattr(client, "_item_access_pubsub_pending"): | |
174 #XXX: we need to wait for item access pubsub service check | |
175 yield client._item_access_pubsub_pending | |
176 del client._item_access_pubsub_pending | |
177 | 169 |
178 if not client.item_access_pubsub: | 170 if not client.item_access_pubsub: |
179 error(_("No item-access powered pubsub server found, can't use group blog")) | 171 error(_("No item-access powered pubsub server found, can't use group blog")) |
180 raise NoCompatiblePubSubServerFound | 172 raise NoCompatiblePubSubServerFound |
181 | 173 |