From 2435f82361f6bc4dcd51e1305905ecbbb5757f50 Mon Sep 17 00:00:00 2001 From: Helmut Grohne Date: Sat, 14 Apr 2007 22:37:26 +0200 Subject: initial tree --- wsgitools/applications.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 wsgitools/applications.py (limited to 'wsgitools/applications.py') diff --git a/wsgitools/applications.py b/wsgitools/applications.py new file mode 100644 index 0000000..1e2b435 --- /dev/null +++ b/wsgitools/applications.py @@ -0,0 +1,27 @@ +class StaticContent: + """This wsgi application provides static content on whatever request it + receives.""" + def __init__(self, status, headers, content): + """status is the HTTP status returned to the browser (ex: "200 OK") + headers is a list of (header, value) pairs being delivered as HTTP + headers + content contains the data to be delivered to the client. It is either a + string or some kind of iterable yielding strings. + """ + self.status = status + self.headers = headers + length = -1 + if isinstance(content, basestring): + self.content = [content] + length = len(content) + else: + self.content = content + if isinstance(self.content, list): + length = sum(map(len, self.content)) + if length >= 0: + if not [v for h, v in headers if h.lower() == "content-length"]: + headers.append(("Content-length", str(length))) + def __call__(self, environ, start_response): + """wsgi interface""" + start_response(self.status, self.headers) + return self.content -- cgit v1.2.3