summaryrefslogtreecommitdiff
path: root/wsgitools/filters.py
diff options
context:
space:
mode:
Diffstat (limited to 'wsgitools/filters.py')
-rw-r--r--wsgitools/filters.py9
1 files changed, 9 insertions, 0 deletions
diff --git a/wsgitools/filters.py b/wsgitools/filters.py
index 0cca3b4..7f83bd9 100644
--- a/wsgitools/filters.py
+++ b/wsgitools/filters.py
@@ -119,10 +119,13 @@ class WSGIFilterMiddleware:
self.filterclass = filterclass
def __call__(self, environ, start_response):
"""wsgi interface"""
+ assert isinstance(environ, dict)
filter = self.filterclass()
environ = filter.filter_environ(environ)
def modified_start_response(status, headers, exc_info=None):
+ assert isinstance(status, str)
+ assert isinstance(headers, list)
exc_info = filter.filter_exc_info(exc_info)
status = filter.filter_status(status)
headers = (filter.filter_header(h, v) for h, v in headers)
@@ -134,6 +137,7 @@ class WSGIFilterMiddleware:
return modified_write
ret = self.app(environ, modified_start_response)
+ assert hasattr(ret, "__iter__")
def modified_close():
filter.handle_close()
@@ -162,11 +166,13 @@ class RequestLogWSGIFilter(BaseWSGIFilter):
log has to be a file-like object."""
return lambda:cls(log)
def __init__(self, log=sys.stdout):
+ assert hasattr(log, "write")
self.log = log
self.time = time.strftime("%d/%b/%Y:%T %z")
self.length = 0
def filter_environ(self, environ):
"""BaseWSGIFilter interface"""
+ assert isinstance(environ, dict)
self.remote = environ.get("REMOTE_ADDR", "?")
self.user = environ.get("REMOTE_USER", "-")
self.reqmethod = environ["REQUEST_METHOD"]
@@ -177,6 +183,7 @@ class RequestLogWSGIFilter(BaseWSGIFilter):
return environ
def filter_status(self, status):
"""BaseWSGIFilter interface"""
+ assert isinstance(status, str)
self.status = status.split()[0]
return status
def filter_data(self, data):
@@ -250,6 +257,7 @@ class GzipWSGIFilter(BaseWSGIFilter):
self.gzip = None
def filter_environ(self, environ):
"""BaseWSGIFilter interface"""
+ assert isinstance(environ, dict)
if "HTTP_ACCEPT_ENCODING" in environ:
acceptenc = environ["HTTP_ACCEPT_ENCODING"].split(',')
acceptenc = map(str.strip, acceptenc)
@@ -260,6 +268,7 @@ class GzipWSGIFilter(BaseWSGIFilter):
return environ
def filter_headers(self, headers):
"""BaseWSGIFilter interface"""
+ assert isinstance(headers, list)
if self.compress:
headers.append(("Content-encoding", "gzip"))
return headers