from urllib.parse import unquote_plus class RequestParameter: def __init__(self,name,value = None,headers = {}): self.__name = name self.__value = value self.__headers = headers def name(self): return self.__name def value(self): return self.__value def headers(self): return self.__headers def filename(self): pp = self.__headers.parameters("CONTENT-DISPOSITION") if (not pp is None) and ("filename" in pp.keys()): return pp["filename"] return None def save(self, filename): f = open( filename, "wb" ) f.write( self.__value ) f.close() class RequestParameters: def __init__(self, request): self.__request = request self.__values = {} self.__append_query() self.__append_mime() def __getitem__(self,name): return self.__values[name][0] def __contains__(self,name): return name in self.__values def get(self,name): try: return self[name].value() except: return None def getOrDefault(self, name, default = None): if name in self: return self[name].value() return default def keys(self): return self.__values.keys() def list(self,name): if name in self.__values: return list(self.__values[name]) return [] def __append_var(self,var): if not var.name() in self.__values.keys(): self.__values[var.name()] = [] self.__values[var.name()].append( var ) def __append_mime(self): pass # mime = self.__request.mime() # # if (mime.multipart()): # for p in mime.parts(): # n = p.name() # if not n is None: # self.__append_var(FormValue(n,p.body(),p.headers())) def __append_query(self): qs = self.__request.query() pairs = qs.split("&") for pair in pairs: sp = pair.split("=") if (len(sp)>0): name = sp[0] if (len(sp)>1): value = sp[1] else: value= "" self.__append_var( RequestParameter( unquote_plus(name), unquote_plus(value)) )