comparison idavoll/pubsub.py @ 149:043f2e5ce8cd

Change all calls to jid.JID to jid.internJID to avoid redoing stringprep. Clean up source to prevent line wrapping.
author Ralph Meijer <ralphm@ik.nu>
date Wed, 31 Aug 2005 12:59:27 +0000
parents fee92e499d6d
children ea8b4189ae3b
comparison
equal deleted inserted replaced
148:b03e5ad81173 149:043f2e5ce8cd
167 d = self.backend.get_node_meta_data(node) 167 d = self.backend.get_node_meta_data(node)
168 d.addCallback(self._add_meta_data, node_type, result_list) 168 d.addCallback(self._add_meta_data, node_type, result_list)
169 return d 169 return d
170 170
171 def _add_meta_data(self, meta_data, node_type, result_list): 171 def _add_meta_data(self, meta_data, node_type, result_list):
172 form = data_form.Form(type="result", form_type=NS_PUBSUB + "#meta-data") 172 form = data_form.Form(type="result",
173 form_type=NS_PUBSUB + "#meta-data")
173 174
174 for meta_datum in meta_data: 175 for meta_datum in meta_data:
175 try: 176 try:
176 del meta_datum['options'] 177 del meta_datum['options']
177 except KeyError: 178 except KeyError:
193 d = self.backend.get_nodes() 194 d = self.backend.get_nodes()
194 d.addCallback(lambda nodes: [disco.Item(self.parent.jabberId, node) 195 d.addCallback(lambda nodes: [disco.Item(self.parent.jabberId, node)
195 for node in nodes]) 196 for node in nodes])
196 return d 197 return d
197 198
198 components.registerAdapter(ComponentServiceFromService, backend.IBackendService, component.IService) 199 components.registerAdapter(ComponentServiceFromService,
200 backend.IBackendService,
201 component.IService)
199 202
200 class ComponentServiceFromNotificationService(Service): 203 class ComponentServiceFromNotificationService(Service):
201 204
202 def componentConnected(self, xmlstream): 205 def componentConnected(self, xmlstream):
203 self.backend.register_notifier(self.notify) 206 self.backend.register_notifier(self.notify)
220 items = event.addElement("items") 223 items = event.addElement("items")
221 items["node"] = node_id 224 items["node"] = node_id
222 items.children.extend(itemlist) 225 items.children.extend(itemlist)
223 self.send(message) 226 self.send(message)
224 227
225 components.registerAdapter(ComponentServiceFromNotificationService, backend.INotificationService, component.IService) 228 components.registerAdapter(ComponentServiceFromNotificationService,
229 backend.INotificationService,
230 component.IService)
226 231
227 class ComponentServiceFromPublishService(Service): 232 class ComponentServiceFromPublishService(Service):
228 233
229 def componentConnected(self, xmlstream): 234 def componentConnected(self, xmlstream):
230 xmlstream.addObserver(PUBSUB_PUBLISH, self.onPublish) 235 xmlstream.addObserver(PUBSUB_PUBLISH, self.onPublish)
250 for child in iq.pubsub.publish.children: 255 for child in iq.pubsub.publish.children:
251 if child.__class__ == domish.Element and child.name == 'item': 256 if child.__class__ == domish.Element and child.name == 'item':
252 items.append(child) 257 items.append(child)
253 258
254 return self.backend.publish(node, items, 259 return self.backend.publish(node, items,
255 jid.JID(iq["from"]).userhostJID()) 260 jid.internJID(iq["from"]).userhostJID())
256 261
257 components.registerAdapter(ComponentServiceFromPublishService, backend.IPublishService, component.IService) 262 components.registerAdapter(ComponentServiceFromPublishService,
263 backend.IPublishService,
264 component.IService)
258 265
259 class ComponentServiceFromSubscriptionService(Service): 266 class ComponentServiceFromSubscriptionService(Service):
260 267
261 def componentConnected(self, xmlstream): 268 def componentConnected(self, xmlstream):
262 xmlstream.addObserver(PUBSUB_SUBSCRIBE, self.onSubscribe) 269 xmlstream.addObserver(PUBSUB_SUBSCRIBE, self.onSubscribe)
276 self.handler_wrapper(self._onSubscribe, iq) 283 self.handler_wrapper(self._onSubscribe, iq)
277 284
278 def _onSubscribe(self, iq): 285 def _onSubscribe(self, iq):
279 try: 286 try:
280 node_id = iq.pubsub.subscribe["node"] 287 node_id = iq.pubsub.subscribe["node"]
281 subscriber = jid.JID(iq.pubsub.subscribe["jid"]) 288 subscriber = jid.internJID(iq.pubsub.subscribe["jid"])
282 except KeyError: 289 except KeyError:
283 raise BadRequest 290 raise BadRequest
284 291
285 requestor = jid.JID(iq["from"]).userhostJID() 292 requestor = jid.internJID(iq["from"]).userhostJID()
286 d = self.backend.subscribe(node_id, subscriber, requestor) 293 d = self.backend.subscribe(node_id, subscriber, requestor)
287 d.addCallback(self.return_subscription, subscriber) 294 d.addCallback(self.return_subscription, subscriber)
288 return d 295 return d
289 296
290 def return_subscription(self, result, subscriber): 297 def return_subscription(self, result, subscriber):
300 self.handler_wrapper(self._onUnsubscribe, iq) 307 self.handler_wrapper(self._onUnsubscribe, iq)
301 308
302 def _onUnsubscribe(self, iq): 309 def _onUnsubscribe(self, iq):
303 try: 310 try:
304 node_id = iq.pubsub.unsubscribe["node"] 311 node_id = iq.pubsub.unsubscribe["node"]
305 subscriber = jid.JID(iq.pubsub.unsubscribe["jid"]) 312 subscriber = jid.internJID(iq.pubsub.unsubscribe["jid"])
306 except KeyError: 313 except KeyError:
307 raise BadRequest 314 raise BadRequest
308 315
309 requestor = jid.JID(iq["from"]).userhostJID() 316 requestor = jid.internJID(iq["from"]).userhostJID()
310 return self.backend.unsubscribe(node_id, subscriber, requestor) 317 return self.backend.unsubscribe(node_id, subscriber, requestor)
311 318
312 def onOptionsGet(self, iq): 319 def onOptionsGet(self, iq):
313 self.handler_wrapper(self._onOptionsGet, iq) 320 self.handler_wrapper(self._onOptionsGet, iq)
314 321
319 self.handler_wrapper(self._onOptionsSet, iq) 326 self.handler_wrapper(self._onOptionsSet, iq)
320 327
321 def _onOptionsSet(self, iq): 328 def _onOptionsSet(self, iq):
322 raise OptionsUnavailable 329 raise OptionsUnavailable
323 330
324 components.registerAdapter(ComponentServiceFromSubscriptionService, backend.ISubscriptionService, component.IService) 331 components.registerAdapter(ComponentServiceFromSubscriptionService,
332 backend.ISubscriptionService,
333 component.IService)
325 334
326 class ComponentServiceFromNodeCreationService(Service): 335 class ComponentServiceFromNodeCreationService(Service):
327 336
328 def componentConnected(self, xmlstream): 337 def componentConnected(self, xmlstream):
329 xmlstream.addObserver(PUBSUB_CREATE, self.onCreate) 338 xmlstream.addObserver(PUBSUB_CREATE, self.onCreate)
346 self.handler_wrapper(self._onCreate, iq) 355 self.handler_wrapper(self._onCreate, iq)
347 356
348 def _onCreate(self, iq): 357 def _onCreate(self, iq):
349 node = iq.pubsub.create.getAttribute("node") 358 node = iq.pubsub.create.getAttribute("node")
350 359
351 owner = jid.JID(iq["from"]).userhostJID() 360 owner = jid.internJID(iq["from"]).userhostJID()
352 361
353 d = self.backend.create_node(node, owner) 362 d = self.backend.create_node(node, owner)
354 d.addCallback(self._return_create_response, iq) 363 d.addCallback(self._return_create_response, iq)
355 return d 364 return d
356 365
398 try: 407 try:
399 node_id = iq.pubsub.configure["node"] 408 node_id = iq.pubsub.configure["node"]
400 except KeyError: 409 except KeyError:
401 raise BadRequest 410 raise BadRequest
402 411
403 requestor = jid.JID(iq["from"]).userhostJID() 412 requestor = jid.internJID(iq["from"]).userhostJID()
404 413
405 for element in iq.pubsub.configure.elements(): 414 for element in iq.pubsub.configure.elements():
406 if element.name != 'x' or element.uri != data_form.NS_X_DATA: 415 if element.name != 'x' or element.uri != data_form.NS_X_DATA:
407 continue 416 continue
408 417
432 except (KeyError, AttributeError): 441 except (KeyError, AttributeError):
433 raise BadRequest 442 raise BadRequest
434 443
435 return options 444 return options
436 445
437 components.registerAdapter(ComponentServiceFromNodeCreationService, backend.INodeCreationService, component.IService) 446 components.registerAdapter(ComponentServiceFromNodeCreationService,
447 backend.INodeCreationService,
448 component.IService)
438 449
439 class ComponentServiceFromAffiliationsService(Service): 450 class ComponentServiceFromAffiliationsService(Service):
440 451
441 def componentConnected(self, xmlstream): 452 def componentConnected(self, xmlstream):
442 xmlstream.addObserver(PUBSUB_AFFILIATIONS, self.onAffiliations) 453 xmlstream.addObserver(PUBSUB_AFFILIATIONS, self.onAffiliations)
451 462
452 def onAffiliations(self, iq): 463 def onAffiliations(self, iq):
453 self.handler_wrapper(self._onAffiliations, iq) 464 self.handler_wrapper(self._onAffiliations, iq)
454 465
455 def _onAffiliations(self, iq): 466 def _onAffiliations(self, iq):
456 d = self.backend.get_affiliations(jid.JID(iq["from"]).userhostJID()) 467 entity = jid.internJID(iq["from"]).userhostJID()
468 d = self.backend.get_affiliations(entity)
457 d.addCallback(self._return_affiliations_response, iq) 469 d.addCallback(self._return_affiliations_response, iq)
458 return d 470 return d
459 471
460 def _return_affiliations_response(self, result, iq): 472 def _return_affiliations_response(self, result, iq):
461 reply = domish.Element((NS_PUBSUB, 'pubsub')) 473 reply = domish.Element((NS_PUBSUB, 'pubsub'))
466 entity['jid'] = r['jid'].full() 478 entity['jid'] = r['jid'].full()
467 entity['affiliation'] = r['affiliation'] or 'none' 479 entity['affiliation'] = r['affiliation'] or 'none'
468 entity['subscription'] = r['subscription'] or 'none' 480 entity['subscription'] = r['subscription'] or 'none'
469 return [reply] 481 return [reply]
470 482
471 components.registerAdapter(ComponentServiceFromAffiliationsService, backend.IAffiliationsService, component.IService) 483 components.registerAdapter(ComponentServiceFromAffiliationsService,
484 backend.IAffiliationsService,
485 component.IService)
472 486
473 class ComponentServiceFromItemRetrievalService(Service): 487 class ComponentServiceFromItemRetrievalService(Service):
474 488
475 def componentConnected(self, xmlstream): 489 def componentConnected(self, xmlstream):
476 xmlstream.addObserver(PUBSUB_ITEMS, self.onItems) 490 xmlstream.addObserver(PUBSUB_ITEMS, self.onItems)
506 try: 520 try:
507 item_ids.append(child["id"]) 521 item_ids.append(child["id"])
508 except KeyError: 522 except KeyError:
509 raise BadRequest 523 raise BadRequest
510 524
511 d = self.backend.get_items(node_id, jid.JID(iq["from"]), max_items, 525 d = self.backend.get_items(node_id,
526 jid.internJID(iq["from"]),
527 max_items,
512 item_ids) 528 item_ids)
513 d.addCallback(self._return_items_response, node_id) 529 d.addCallback(self._return_items_response, node_id)
514 return d 530 return d
515 531
516 def _return_items_response(self, result, node_id): 532 def _return_items_response(self, result, node_id):
520 for r in result: 536 for r in result:
521 items.addRawXml(r) 537 items.addRawXml(r)
522 538
523 return [reply] 539 return [reply]
524 540
525 components.registerAdapter(ComponentServiceFromItemRetrievalService, backend.IItemRetrievalService, component.IService) 541 components.registerAdapter(ComponentServiceFromItemRetrievalService,
542 backend.IItemRetrievalService,
543 component.IService)
526 544
527 class ComponentServiceFromRetractionService(Service): 545 class ComponentServiceFromRetractionService(Service):
528 546
529 def componentConnected(self, xmlstream): 547 def componentConnected(self, xmlstream):
530 xmlstream.addObserver(PUBSUB_RETRACT, self.onRetract) 548 xmlstream.addObserver(PUBSUB_RETRACT, self.onRetract)
555 try: 573 try:
556 item_ids.append(child["id"]) 574 item_ids.append(child["id"])
557 except KeyError: 575 except KeyError:
558 raise BadRequest 576 raise BadRequest
559 577
560 return self.backend.retract_item(node, item_ids, 578 requestor = jid.internJID(iq["from"]).userhostJID()
561 jid.JID(iq["from"]).userhostJID()) 579 return self.backend.retract_item(node, item_ids, requestor)
562 580
563 def onPurge(self, iq): 581 def onPurge(self, iq):
564 self.handler_wrapper(self._onPurge, iq) 582 self.handler_wrapper(self._onPurge, iq)
565 583
566 def _onPurge(self, iq): 584 def _onPurge(self, iq):
567 try: 585 try:
568 node = iq.pubsub.purge["node"] 586 node = iq.pubsub.purge["node"]
569 except KeyError: 587 except KeyError:
570 raise BadRequest 588 raise BadRequest
571 589
572 return self.backend.purge_node(node, jid.JID(iq["from"]).userhostJID()) 590 return self.backend.purge_node(node,
573 591 jid.internJID(iq["from"]).userhostJID())
574 components.registerAdapter(ComponentServiceFromRetractionService, backend.IRetractionService, component.IService) 592
593 components.registerAdapter(ComponentServiceFromRetractionService,
594 backend.IRetractionService,
595 component.IService)
575 596
576 class ComponentServiceFromNodeDeletionService(Service): 597 class ComponentServiceFromNodeDeletionService(Service):
577 598
578 def __init__(self, backend): 599 def __init__(self, backend):
579 Service.__init__(self, backend) 600 Service.__init__(self, backend)
618 try: 639 try:
619 node = iq.pubsub.delete["node"] 640 node = iq.pubsub.delete["node"]
620 except KeyError: 641 except KeyError:
621 raise BadRequest 642 raise BadRequest
622 643
623 return self.backend.delete_node(node, jid.JID(iq["from"]).userhostJID()) 644 return self.backend.delete_node(node,
624 645 jid.internJID(iq["from"]).userhostJID())
625 components.registerAdapter(ComponentServiceFromNodeDeletionService, backend.INodeDeletionService, component.IService) 646
647 components.registerAdapter(ComponentServiceFromNodeDeletionService,
648 backend.INodeDeletionService,
649 component.IService)