python-hserver/hserver/headers.py

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))