def decodeExtended(self, data): try: tmp = msgpack.loads(zlib.decompress(data)) except zlib.error: logger.error("Error decompressing message") raise except (msgpack.exceptions.UnpackException, msgpack.exceptions.ExtraData): logger.error("Error msgunpacking message") raise try: msgType = tmp[""] except KeyError: logger.error("Message type missing") raise msgObj = messagetypes.constructObject(tmp) if msgObj is None: raise ValueError("Malformed message") try: msgObj.process() except: raise ValueError("Malformed message") if msgType == "message": self.subject = msgObj.subject self.body = msgObj.body
def decodeExtended(self, data): """Handle extended encoding""" dc = zlib.decompressobj() tmp = "" while len(tmp) <= BMConfigParser().safeGetInt("zlib", "maxsize"): try: got = dc.decompress( data, BMConfigParser().safeGetInt("zlib", "maxsize") + 1 - len(tmp)) # EOF if got == "": break tmp += got data = dc.unconsumed_tail except zlib.error: logger.error("Error decompressing message") raise MsgDecodeException("Error decompressing message") else: raise DecompressionSizeException(len(tmp)) try: tmp = msgpack.loads(tmp) except (msgpack.exceptions.UnpackException, msgpack.exceptions.ExtraData): logger.error("Error msgunpacking message") raise MsgDecodeException("Error msgunpacking message") try: msgType = tmp[""] except KeyError: logger.error("Message type missing") raise MsgDecodeException("Message type missing") msgObj = messagetypes.constructObject(tmp) if msgObj is None: raise MsgDecodeException("Malformed message") try: msgObj.process() except: raise MsgDecodeException("Malformed message") if msgType == "message": self.subject = msgObj.subject self.body = msgObj.body
def decodeExtended(self, data): dc = zlib.decompressobj() tmp = "" while len(tmp) <= BMConfigParser().safeGetInt("zlib", "maxsize"): try: got = dc.decompress(data, BMConfigParser().safeGetInt("zlib", "maxsize") + 1 - len(tmp)) # EOF if got == "": break tmp += got data = dc.unconsumed_tail except zlib.error: logger.error("Error decompressing message") raise MsgDecodeException("Error decompressing message") else: raise DecompressionSizeException(len(tmp)) try: tmp = msgpack.loads(tmp) except (msgpack.exceptions.UnpackException, msgpack.exceptions.ExtraData): logger.error("Error msgunpacking message") raise MsgDecodeException("Error msgunpacking message") try: msgType = tmp[""] except KeyError: logger.error("Message type missing") raise MsgDecodeException("Message type missing") msgObj = messagetypes.constructObject(tmp) if msgObj is None: raise MsgDecodeException("Malformed message") try: msgObj.process() except: raise MsgDecodeException("Malformed message") if msgType == "message": self.subject = msgObj.subject self.body = msgObj.body
from os import listdir, path from pprint import pprint import sys import traceback data = {"": "message", "subject": "subject", "body": "body"} #data = {"": "vote", "msgid": "msgid"} #data = {"fsck": 1} import messagetypes if __name__ == '__main__': try: msgType = data[""] except KeyError: print "Message type missing" sys.exit(1) else: print "Message type: %s" % (msgType) msgObj = messagetypes.constructObject(data) if msgObj is None: sys.exit(1) try: msgObj.process() except: pprint(sys.exc_info())