Mercurial > libervia-pubsub
comparison 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 |
comparison
equal
deleted
inserted
replaced
182:4aa29b1a8c67 | 183:c21b986cff30 |
---|---|
7 | 7 |
8 from zope.interface import implements | 8 from zope.interface import implements |
9 | 9 |
10 from twisted.application import service | 10 from twisted.application import service |
11 from twisted.python import components | 11 from twisted.python import components |
12 from twisted.internet import defer | 12 from twisted.internet import defer, reactor |
13 from twisted.words.protocols.jabber.error import StanzaError | 13 from twisted.words.protocols.jabber.error import StanzaError |
14 from twisted.words.xish import utility | 14 from twisted.words.xish import domish, utility |
15 | 15 |
16 from wokkel.iwokkel import IDisco, IPubSubService | 16 from wokkel.iwokkel import IDisco, IPubSubService |
17 from wokkel.pubsub import PubSubService, PubSubError | 17 from wokkel.pubsub import PubSubService, PubSubError |
18 | 18 |
19 from idavoll import error, iidavoll | 19 from idavoll import error, iidavoll |
180 | 180 |
181 def _return_subscription(self, result, node_id): | 181 def _return_subscription(self, result, node_id): |
182 return node_id, result | 182 return node_id, result |
183 | 183 |
184 def _send_last_published(self, node, subscriber): | 184 def _send_last_published(self, node, subscriber): |
185 def notify_item(items): | 185 class StringParser(object): |
186 if not items: | 186 def __init__(self): |
187 self.elementStream = domish.elementStream() | |
188 self.elementStream.DocumentStartEvent = self.docStart | |
189 self.elementStream.ElementEvent = self.elem | |
190 self.elementStream.DocumentEndEvent = self.docEnd | |
191 | |
192 def docStart(self, elem): | |
193 self.document = elem | |
194 | |
195 def elem(self, elem): | |
196 self.document.addChild(elem) | |
197 | |
198 def docEnd(self): | |
199 pass | |
200 | |
201 def parse(self, string): | |
202 self.elementStream.parse(string) | |
203 return self.document | |
204 | |
205 def notify_item(result): | |
206 if not result: | |
187 return | 207 return |
188 | 208 |
189 self.dispatch({'items': items, | 209 items = [domish.SerializedXML(item) for item in result] |
190 'node_id': node.id, | 210 |
191 'subscriber': subscriber}, | 211 reactor.callLater(0, self.dispatch, {'items': items, |
192 '//event/pubsub/notify') | 212 'node_id': node.id, |
213 'subscriber': subscriber}, | |
214 '//event/pubsub/notify') | |
193 | 215 |
194 config = node.get_configuration() | 216 config = node.get_configuration() |
195 if config.get("pubsub#send_last_published_item", 'never') != 'on_sub': | 217 if config.get("pubsub#send_last_published_item", 'never') != 'on_sub': |
196 return | 218 return |
197 | 219 |