twisted.xish.domish.ParserError

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 7

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