69 lines
1.2 KiB
Python
69 lines
1.2 KiB
Python
import io
|
|
import string
|
|
|
|
import hserver.utils
|
|
|
|
class Headers:
|
|
|
|
def __init__(self, fp=None, src=None):
|
|
self.__items = {}
|
|
self.__parameters = {}
|
|
|
|
if not fp is None:
|
|
self.__read(fp)
|
|
|
|
def get(self,name,default = None):
|
|
if not name in self.__items.keys():
|
|
return default
|
|
|
|
return self.__items[name]
|
|
|
|
|
|
|
|
def __getitem__(self,name):
|
|
if name in self.__items.keys():
|
|
return self.__items[name]
|
|
raise KeyError()
|
|
|
|
def __read(self,fp):
|
|
cont = True
|
|
lines = []
|
|
|
|
while (cont):
|
|
l = str(fp.readline(),"iso-8859-1").strip()
|
|
if (l.strip() == ""):
|
|
cont = False
|
|
else:
|
|
if (l[0] in string.whitespace ):
|
|
lines[-1] = lines[-1] + " " + l.lstrip()
|
|
else:
|
|
lines.append(l)
|
|
|
|
for line in lines:
|
|
self.__parseline(line)
|
|
|
|
def __parseline(self,line):
|
|
i = line.find(":")
|
|
if (i > 0):
|
|
name = line[:i]
|
|
value = line[ i+1 : ].strip()
|
|
|
|
i = value.find(";")
|
|
if (i>0):
|
|
parameters = value[ i+1 : ]
|
|
value = value[ :i ]
|
|
else:
|
|
parameters = None
|
|
|
|
self.__items[name] = value
|
|
print("Headers: %s: %s" % (name,value))
|
|
|
|
# if (not parameters is None):
|
|
# p = hserver.utils.StreamTokenizer(io.StringIO(parameters))
|
|
|
|
|
|
|
|
|
|
|
|
|