Mercurial > libervia-pubsub
diff 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 |
line wrap: on
line diff
--- a/idavoll/backend.py Tue Nov 09 14:50:18 2004 +0000 +++ b/idavoll/backend.py Tue Nov 09 14:51:32 2004 +0000 @@ -121,8 +121,7 @@ class IItemRetrievalService(components.Interface): """ A service for retrieving previously published items. """ - def get_items(self, node_id, max_items=None, item_ids=[], - requestor=None): + def get_items(self, node_id, requestor, max_items=None, item_ids=[]): """ Retrieve items from persistent storage If C{max_items} is given, return the C{max_items} last published @@ -318,3 +317,28 @@ 'subscription': subscription} return new_affiliations.values() + +class ItemRetrievalService(service.Service): + + __implements__ = IItemRetrievalService + + def get_items(self, node_id, requestor, max_items=None, item_ids=[]): + d = self.parent.storage.is_subscribed(node_id, requestor) + d.addCallback(self._do_get_items, node_id, max_items, item_ids) + return d + + def _do_get_items(self, result, node_id, max_items, item_ids): + def q(r): + print r + return r + + if not result: + raise NotAuthorized + + if item_ids: + d = self.parent.storage.get_items_by_ids(node_id, item_ids) + d.addCallback(q) + d.addErrback(q) + return d + else: + return self.parent.storage.get_items(node_id, max_items)