Here are the examples of the python api twisted.xish.domish.ParserError taken from open source projects. By voting up you can indicate which examples are most useful and appropriate.
1 Examples
0
Example 1
Project: punjab Source File: httpb.py
def render_POST(self, request):
"""
Parse received xml
"""
request.setHeader('Access-Control-Allow-Origin', '*')
request.setHeader('Access-Control-Allow-Headers', 'Content-Type')
request.content.seek(0, 0)
if self.service.v:
log.msg('HEADERS %s:' % (str(time.time()),))
headers = getattr(request, 'received_headers', None)
if headers is None:
headers = request.requestHeaders
log.msg(headers)
log.msg("HTTPB POST : ")
log.msg(str(request.content.read()))
request.content.seek(0, 0)
self.hp = HttpbParse()
try:
body_tag, xmpp_elements = self.hp.parse(request.content.read())
self.hp._reset()
if getattr(body_tag, 'name', '') != "body":
if self.service.v:
log.msg('Client sent bad POST data')
self.send_http_error(400, request)
return server.NOT_DONE_YET
except domish.ParserError:
log.msg('ERROR: Xml Parse Error')
log.err()
self.hp._reset()
self.send_http_error(400, request)
return server.NOT_DONE_YET
except:
log.err()
# reset parser, just in case
self.hp._reset()
self.send_http_error(400, request)
return server.NOT_DONE_YET
else:
if self.service.inSession(body_tag):
# sid is an existing session
if body_tag.getAttribute('rid'):
request.rid = body_tag['rid']
if self.service.v:
log.msg(request.rid)
s, d = self.service.parseBody(body_tag, xmpp_elements)
d.addCallback(self.return_httpb, s, request)
elif body_tag.hasAttribute('sid'):
if self.service.v:
log.msg("no sid is found but the body "
"element has a 'sid' attribute")
# This is an error, no sid is found but the body element
# has a 'sid' attribute
self.send_http_error(404, request)
return server.NOT_DONE_YET
else:
# start session
s, d = self.service.startSession(body_tag, xmpp_elements)
d.addCallback(self.return_session, s, request)
# Add an error back for returned errors
d.addErrback(self.return_error, request)
return server.NOT_DONE_YET