plugin XEP-0060: getItem(s), publish and (un)subscribe are now coroutines
This commit is contained in:
parent
a3e6425eb2
commit
bab851006f
1 changed files with 165 additions and 161 deletions
|
|
@ -189,23 +189,22 @@ class forums(object):
|
|||
service = None
|
||||
if not node.strip():
|
||||
node = None
|
||||
d=self.get(client, service, node, forums_key or None)
|
||||
d = defer.ensureDeferred(self.get(client, service, node, forums_key or None))
|
||||
d.addCallback(lambda data: json.dumps(data))
|
||||
return d
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def get(self, client, service=None, node=None, forums_key=None):
|
||||
async def get(self, client, service=None, node=None, forums_key=None):
|
||||
if service is None:
|
||||
service = client.pubsub_service
|
||||
if node is None:
|
||||
node = NS_FORUMS
|
||||
if forums_key is None:
|
||||
forums_key = 'default'
|
||||
items_data = yield self._p.getItems(client, service, node, item_ids=[forums_key])
|
||||
items_data = await self._p.getItems(client, service, node, item_ids=[forums_key])
|
||||
item = items_data[0][0]
|
||||
# we have the item and need to convert it to json
|
||||
forums = self._parseForums(item)
|
||||
defer.returnValue(forums)
|
||||
return forums
|
||||
|
||||
def _set(self, forums, service=None, node=None, forums_key=None, profile_key=C.PROF_KEY_NONE):
|
||||
client = self.host.getClient(profile_key)
|
||||
|
|
@ -216,10 +215,11 @@ class forums(object):
|
|||
service = None
|
||||
if not node.strip():
|
||||
node = None
|
||||
return self.set(client, forums, service, node, forums_key or None)
|
||||
return defer.ensureDeferred(
|
||||
self.set(client, forums, service, node, forums_key or None)
|
||||
)
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def set(self, client, forums, service=None, node=None, forums_key=None):
|
||||
async def set(self, client, forums, service=None, node=None, forums_key=None):
|
||||
"""Create or replace forums structure
|
||||
|
||||
@param forums(list): list of dictionary as follow:
|
||||
|
|
@ -242,25 +242,33 @@ class forums(object):
|
|||
node = NS_FORUMS
|
||||
if forums_key is None:
|
||||
forums_key = 'default'
|
||||
forums_elt = yield self._createForums(client, forums, service, node)
|
||||
yield self._p.sendItem(client, service, node, forums_elt, item_id=forums_key)
|
||||
forums_elt = await self._createForums(client, forums, service, node)
|
||||
return await self._p.sendItem(
|
||||
client, service, node, forums_elt, item_id=forums_key
|
||||
)
|
||||
|
||||
def _getTopics(self, service, node, extra=None, profile_key=C.PROF_KEY_NONE):
|
||||
client = self.host.getClient(profile_key)
|
||||
extra = self._p.parseExtra(extra)
|
||||
d = self.getTopics(client, jid.JID(service), node, rsm_request=extra.rsm_request, extra=extra.extra)
|
||||
d = defer.ensureDeferred(
|
||||
self.getTopics(
|
||||
client, jid.JID(service), node, rsm_request=extra.rsm_request,
|
||||
extra=extra.extra
|
||||
)
|
||||
)
|
||||
d.addCallback(
|
||||
lambda topics_data: (topics_data[0], data_format.serialise(topics_data[1]))
|
||||
)
|
||||
return d
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def getTopics(self, client, service, node, rsm_request=None, extra=None):
|
||||
async def getTopics(self, client, service, node, rsm_request=None, extra=None):
|
||||
"""Retrieve topics data
|
||||
|
||||
Topics are simple microblog URIs with some metadata duplicated from first post
|
||||
"""
|
||||
topics_data = yield self._p.getItems(client, service, node, rsm_request=rsm_request, extra=extra)
|
||||
topics_data = await self._p.getItems(
|
||||
client, service, node, rsm_request=rsm_request, extra=extra
|
||||
)
|
||||
topics = []
|
||||
item_elts, metadata = topics_data
|
||||
for item_elt in item_elts:
|
||||
|
|
@ -270,7 +278,7 @@ class forums(object):
|
|||
'author': topic_elt['author'],
|
||||
'title': str(title_elt)}
|
||||
topics.append(topic)
|
||||
defer.returnValue((topics, metadata))
|
||||
return (topics, metadata)
|
||||
|
||||
def _createTopic(self, service, node, mb_data, profile_key):
|
||||
client = self.host.getClient(profile_key)
|
||||
|
|
|
|||
Loading…
Reference in a new issue