86 lines
1.6 KiB
Python
86 lines
1.6 KiB
Python
from urllib.parse import unquote_plus
|
|
|
|
class FormValue:
|
|
|
|
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
|
|
|
|
|
|
|
|
class FormData:
|
|
|
|
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][0]
|
|
except:
|
|
return None
|
|
|
|
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):
|
|
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_STRING
|
|
|
|
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(FormValue( unquote_plus(name), unquote_plus(value)))
|
|
|
|
|
|
|