Mercurial > libervia-pubsub
diff idavoll/backend.py @ 183:c21b986cff30
Implement HTTP client to gateway and implement functional tests with it.
author | Ralph Meijer <ralphm@ik.nu> |
---|---|
date | Fri, 11 Apr 2008 14:41:16 +0000 |
parents | 0d4474051eeb |
children | 00a6dbfbee42 |
line wrap: on
line diff
--- a/idavoll/backend.py Fri Apr 11 13:48:12 2008 +0000 +++ b/idavoll/backend.py Fri Apr 11 14:41:16 2008 +0000 @@ -9,9 +9,9 @@ from twisted.application import service from twisted.python import components -from twisted.internet import defer +from twisted.internet import defer, reactor from twisted.words.protocols.jabber.error import StanzaError -from twisted.words.xish import utility +from twisted.words.xish import domish, utility from wokkel.iwokkel import IDisco, IPubSubService from wokkel.pubsub import PubSubService, PubSubError @@ -182,14 +182,36 @@ return node_id, result def _send_last_published(self, node, subscriber): - def notify_item(items): - if not items: + class StringParser(object): + def __init__(self): + self.elementStream = domish.elementStream() + self.elementStream.DocumentStartEvent = self.docStart + self.elementStream.ElementEvent = self.elem + self.elementStream.DocumentEndEvent = self.docEnd + + def docStart(self, elem): + self.document = elem + + def elem(self, elem): + self.document.addChild(elem) + + def docEnd(self): + pass + + def parse(self, string): + self.elementStream.parse(string) + return self.document + + def notify_item(result): + if not result: return - self.dispatch({'items': items, - 'node_id': node.id, - 'subscriber': subscriber}, - '//event/pubsub/notify') + items = [domish.SerializedXML(item) for item in result] + + reactor.callLater(0, self.dispatch, {'items': items, + 'node_id': node.id, + 'subscriber': subscriber}, + '//event/pubsub/notify') config = node.get_configuration() if config.get("pubsub#send_last_published_item", 'never') != 'on_sub':