Blame request.py

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
cbf076
    self.method = str(self.environ["REQUEST_METHOD"])
cbf076
    assert self.method == 'GET' or self.method == 'POST'
cbf076
cbf076
    self.connection = None
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)