Beispiel #1
0
 def __call__(self, environ, start_response):
     try:
         req, resp = Request(environ), Response()
         try:
             handler = getattr(self, environ["PATH_INFO"].lstrip("/").replace("/", "_"))
         except AttributeError:
             resp.status = '404 Not Found'
         else:
             output = handler(req, resp)
             if output is not None:
                 resp.body = output
                 if isinstance(output, basestring):
                     cl = len(output)
                 elif isinstance(output, (tuple, list)):
                     cl = sum([len(a) for a in output])
                 else:
                     cl = None
                 if cl is not None:
                     resp.headers.setdefault('Content-Length', str(cl))
         h = []
         for k, v in resp.headers.items():
             if isinstance(v, (tuple, list)):
                 for atom in v:
                     h.append((k, atom))
             else:
                 h.append((k, v))
         start_response(resp.status, h)
         return resp.output()
     except:
         status = "500 Server Error"
         response_headers = [("Content-Type", "text/plain")]
         start_response(status, response_headers, sys.exc_info())
         return format_exc()
Beispiel #2
0
 def __call__(self, environ, start_response):
     try:
         req, resp = Request(environ), Response()
         try:
             handler = getattr(
                 self, environ["PATH_INFO"].lstrip("/").replace("/", "_"))
         except AttributeError:
             resp.status = '404 Not Found'
         else:
             output = handler(req, resp)
             if output is not None:
                 resp.body = output
                 if isinstance(output, basestring):
                     cl = len(output)
                 elif isinstance(output, (tuple, list)):
                     cl = sum([len(a) for a in output])
                 else:
                     cl = None
                 if cl is not None:
                     resp.headers.setdefault('Content-Length', str(cl))
         h = []
         for k, v in resp.headers.items():
             if isinstance(v, (tuple, list)):
                 for atom in v:
                     h.append((k, atom))
             else:
                 h.append((k, v))
         start_response(resp.status, h)
         return resp.output()
     except:
         status = "500 Server Error"
         response_headers = [("Content-Type", "text/plain")]
         start_response(status, response_headers, sys.exc_info())
         return format_exc()
Beispiel #3
0
 def logsink(msg="", level=20, traceback=False):
     if traceback:
         traceback = format_exc()
     cls.log.append((msg, level, traceback))
Beispiel #4
0
 def logsink(msg="", level=20, traceback=False):
     if traceback:
         traceback = format_exc()
     cls.log.append((msg, level, traceback))