|
|
3d8d28 |
|
|
|
3d8d28 |
class Request:
|
|
|
3d8d28 |
def __init__(
|
|
|
3d8d28 |
self,
|
|
|
3d8d28 |
server,
|
|
|
3d8d28 |
environ,
|
|
|
3d8d28 |
start_response
|
|
|
3d8d28 |
):
|
|
|
3d8d28 |
self.server = server
|
|
|
3d8d28 |
self.environ = environ
|
|
|
3d8d28 |
self.start_response = start_response
|
|
|
48408a |
self.session = None
|
|
|
48408a |
self.template = None
|
|
|
48408a |
|
|
|
48408a |
self.status = "200 OK"
|
|
|
48408a |
self.headers = []
|
|
|
48408a |
self.title = ''
|
|
|
3d8d28 |
|
|
|
48408a |
def translate(self, text):
|
|
|
48408a |
return text
|
|
|
48408a |
|
|
|
48408a |
def t(self, text):
|
|
|
48408a |
return self.translate(text)
|
|
|
3d8d28 |
|
|
|
48408a |
def chain_template(subtemplate):
|
|
|
48408a |
subtemplate.parent = self.template
|
|
|
48408a |
self.template = subtemplate
|
|
|
3d8d28 |
|
|
|
48408a |
def chain_title(subtitle):
|
|
|
48408a |
if subtitle:
|
|
|
48408a |
if self.title:
|
|
|
48408a |
self.title = subtitle + ' | ' + self.title
|
|
|
48408a |
else:
|
|
|
48408a |
self.title = subtitle
|
|
|
48408a |
|
|
|
48408a |
def complete_data(self, data):
|
|
|
48408a |
if data is None:
|
|
|
48408a |
data = bytes()
|
|
|
48408a |
if not type(data) is bytes:
|
|
|
48408a |
data = bytes(str(data), "utf8")
|
|
|
48408a |
if not data and self.status == "200 OK":
|
|
|
48408a |
self.status = "204 No Content"
|
|
|
48408a |
|
|
|
48408a |
size = 65536
|
|
|
3d8d28 |
result_list = []
|
|
|
48408a |
for i in range(0, len(data), size):
|
|
|
48408a |
result_list.append(data[i:i + size])
|
|
|
48408a |
data = None
|
|
|
48408a |
|
|
|
48408a |
self.start_response(self.status, self.headers)
|
|
|
3d8d28 |
return result_list
|
|
|
48408a |
|
|
|
48408a |
def complete_text(self, text):
|
|
|
48408a |
if text is None: text = ""
|
|
|
48408a |
return self.complete_data(text)
|
|
|
48408a |
|
|
|
48408a |
def complete_html(self, html):
|
|
|
48408a |
self.headers += [('Content-Type','text/html')];
|
|
|
48408a |
return self.complete_text(html)
|
|
|
48408a |
|
|
|
48408a |
def complete_content(self, content):
|
|
|
48408a |
if self.template:
|
|
|
48408a |
content = self.template.wrap(self, content)
|
|
|
48408a |
return self.complete_html(content)
|