import sys import re from Config import * import Pb import base64 from Pb import Pb class PbLandscape(Pb): def __init__(self, heightmap=None, imgdata=None, texture=None, name=None, ): self._required_keys = [ "heightmap", "imgdata", "texture", "name", ] def _saveImgData(self, imgdata, filename): try: parts = imgdata.split(';') mime_type = parts[0] if parts[0] else 'text/plain' data = parts[1] charset, b64 = 'ASCII', False for part in parts[1]: if part.startswith('charset='): charset = part[8:] elif part == 'base64': b64 = True # Do something smart with charset and b64 instead of assuming if b64: plaindata = base64.b64decode(data) else: plaindata = data with open(filename, 'wb') as f: f.write(plaindata) except Exception as e: sys.stderr.write("ERROR: {}\n".format(str(e))); def create(self, breakmode=""): self.filepath = self._filename_from_url(self.params.get('texture',""), self.params.get('name',"")); self._saveImgData(self.params.get('imgdata'), self.filepath);