Mercurial > libervia-pubsub
comparison idavoll/backend.py @ 80:ec354aab3949
Implemented ItemRetrievalService.
author | Ralph Meijer <ralphm@ik.nu> |
---|---|
date | Tue, 09 Nov 2004 14:51:32 +0000 |
parents | a914cad421c5 |
children | 34be83a0bd2e |
comparison
equal
deleted
inserted
replaced
79:c40ccc30dfb7 | 80:ec354aab3949 |
---|---|
119 """ Removes all items in node from persistent storage """ | 119 """ Removes all items in node from persistent storage """ |
120 | 120 |
121 class IItemRetrievalService(components.Interface): | 121 class IItemRetrievalService(components.Interface): |
122 """ A service for retrieving previously published items. """ | 122 """ A service for retrieving previously published items. """ |
123 | 123 |
124 def get_items(self, node_id, max_items=None, item_ids=[], | 124 def get_items(self, node_id, requestor, max_items=None, item_ids=[]): |
125 requestor=None): | |
126 """ Retrieve items from persistent storage | 125 """ Retrieve items from persistent storage |
127 | 126 |
128 If C{max_items} is given, return the C{max_items} last published | 127 If C{max_items} is given, return the C{max_items} last published |
129 items, else if C{item_ids} is not empty, return the items requested. | 128 items, else if C{item_ids} is not empty, return the items requested. |
130 If neither is given, return all items. | 129 If neither is given, return all items. |
316 'jid': subscriber, | 315 'jid': subscriber, |
317 'affiliation': None, | 316 'affiliation': None, |
318 'subscription': subscription} | 317 'subscription': subscription} |
319 | 318 |
320 return new_affiliations.values() | 319 return new_affiliations.values() |
320 | |
321 class ItemRetrievalService(service.Service): | |
322 | |
323 __implements__ = IItemRetrievalService | |
324 | |
325 def get_items(self, node_id, requestor, max_items=None, item_ids=[]): | |
326 d = self.parent.storage.is_subscribed(node_id, requestor) | |
327 d.addCallback(self._do_get_items, node_id, max_items, item_ids) | |
328 return d | |
329 | |
330 def _do_get_items(self, result, node_id, max_items, item_ids): | |
331 def q(r): | |
332 print r | |
333 return r | |
334 | |
335 if not result: | |
336 raise NotAuthorized | |
337 | |
338 if item_ids: | |
339 d = self.parent.storage.get_items_by_ids(node_id, item_ids) | |
340 d.addCallback(q) | |
341 d.addErrback(q) | |
342 return d | |
343 else: | |
344 return self.parent.storage.get_items(node_id, max_items) |