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