from Config import * import Pb import base64 from Pb import Pb import urlparse class PbLandscape(Pb): example_params = { 'imgdata' : open('Pb/Landscape/_base64img', 'rb').read(), 'texture' : 'http://someurl.biz/someimg.jpg', 'heightmap' : 'http://someurl.biz/someimg.jpg', 'name' : 'donkey' } def __init__(self, heightmap=None, imgdata=None, texture=None, name="", ): super(PbLandscape,self).__init__(); self.params.set_val("heightmap", heightmap, value_type="string"); self.params.set_val("imgdata", imgdata, value_type="raw"); self.params.set_val("texture", texture, value_type="string"); self.params.set_val("username", name, value_type="string"); self.filename, self.filepath = self._filename_filepath_create(url=self.params.texture, extension="png") def _saveImgData(self): try: up = urlparse.urlparse(self.params.imgdata) head, data = up.path.split(',', 1) bits = head.split(';') mime_type = bits[0] if bits[0] else 'text/plain' charset, b64 = 'ASCII', False for bit in bits[1]: if bit.startswith('charset='): charset = bit[8:] elif bit == 'base64': b64 = True # Do something smart with charset and b64 instead of assuming plaindata = base64.b64decode(data) with open(self.filepath, 'wb') as f: f.write(plaindata) except Exception as e: self.err_warn(str(e)); def create(self, breakmode=""): self._saveImgData();