Blob Blame Raw

class Request:
  def __init__(
    self,
    server,
    environ,
    start_response
  ):
    self.server = server
    self.environ = environ
    self.start_response = start_response
    self.session = None
    self.template = None
    
    self.status = "200 OK"
    self.headers = []
    self.title = ''

  def translate(self, text):
    return text
  
  def t(self, text):
    return self.translate(text)

  def chain_template(subtemplate):
    subtemplate.parent = self.template
    self.template = subtemplate

  def chain_title(subtitle):
    if subtitle:
      if self.title:
        self.title = subtitle + ' | ' + self.title
      else:
        self.title = subtitle
    
  def complete_data(self, data):
    if data is None:
      data = bytes()
    if not type(data) is bytes:
      data = bytes(str(data), "utf8")
    if not data and self.status == "200 OK":
      self.status = "204 No Content"
    
    size = 65536
    result_list = []
    for i in range(0, len(data), size):
      result_list.append(data[i:i + size])
    data = None

    self.start_response(self.status, self.headers)
    return result_list

  def complete_text(self, text):
    if text is None: text = ""
    return self.complete_data(text)

  def complete_html(self, html):
    self.headers += [('Content-Type','text/html')];
    return self.complete_text(html)

  def complete_content(self, content):
    if self.template:
      content = self.template.wrap(self, content)
    return self.complete_html(content)