comparison idavoll/generic_backend.py @ 118:7d83fe9bdb65

Change storage.INode.add_subscription() to return a Failure when a subscription already exists. Added storage.INode.get_subscription() for retrieving the subscription state.
author Ralph Meijer <ralphm@ik.nu>
date Tue, 12 Apr 2005 12:15:44 +0000
parents d252d793f0ed
children 43102fecb14b
comparison
equal deleted inserted replaced
117:bc872c33e88c 118:7d83fe9bdb65
151 151
152 if affiliation == 'outcast': 152 if affiliation == 'outcast':
153 raise backend.NotAuthorized 153 raise backend.NotAuthorized
154 154
155 d = node.add_subscription(subscriber, 'subscribed') 155 d = node.add_subscription(subscriber, 'subscribed')
156 d.addCallback(self._return_subscription, affiliation) 156 d.addCallback(lambda _: 'subscribed')
157 return d 157 d.addErrback(self._get_subscription, node)
158 158 d.addCallback(self._return_subscription, affiliation, node.id)
159 def _return_subscription(self, result, affiliation): 159 return d
160 result['affiliation'] = affiliation 160
161 return result 161 def _get_subscription(self, failure, node):
162 failure.Trap(storage.SubscriptionExists)
163 return node.get_subscription(subscriber)
164
165 def _return_subscription(self, result, affiliation, node_id):
166 return {'affiliation': affiliation,
167 'node': node_id,
168 'state': result}
162 169
163 def unsubscribe(self, node_id, subscriber, requestor): 170 def unsubscribe(self, node_id, subscriber, requestor):
164 if subscriber.userhostJID() != requestor: 171 if subscriber.userhostJID() != requestor:
165 raise backend.NotAuthorized 172 raise backend.NotAuthorized
166 173