summaryrefslogtreecommitdiff
path: root/paste/echo.py
diff options
context:
space:
mode:
authorianb <devnull@localhost>2005-04-22 03:18:20 +0000
committerianb <devnull@localhost>2005-04-22 03:18:20 +0000
commit36593a8d40cd1417d2927a78cdbe621090b6e8a5 (patch)
tree74dc42b93bb512593869fd57f8be99c198d8c108 /paste/echo.py
parent7752a3102fc8aa68ee7e349495bc2e9345c77c00 (diff)
downloadpaste-36593a8d40cd1417d2927a78cdbe621090b6e8a5.tar.gz
Renamed package itself
Diffstat (limited to 'paste/echo.py')
-rw-r--r--paste/echo.py59
1 files changed, 59 insertions, 0 deletions
diff --git a/paste/echo.py b/paste/echo.py
new file mode 100644
index 0000000..1a1c91f
--- /dev/null
+++ b/paste/echo.py
@@ -0,0 +1,59 @@
+r"""\
+WSGI application
+
+Does things as requested. Takes variables:
+
+header.header-name=value, like
+ header.location=http://yahoo.com
+
+error=code, like
+ error=301 (temporary redirect)
+ error=assert (assertion error)
+
+environ=true,
+ display all the environmental variables, like
+ key=str(value)\n
+
+message=string
+ display string
+"""
+
+import cgi
+import httpexceptions
+
+def application(environ, start_response):
+ form = cgi.FieldStorage(fp=environ['wsgi.input'],
+ environ=environ,
+ keep_blank_values=True)
+ headers = {}
+ for key in form.keys():
+ if key.startswith('header.'):
+ headers[key[len('header.'):]] = form[key].value
+
+ if form.getvalue('error') and form['error'].value != 'iter':
+ if form['error'].value == 'assert':
+ assert 0, "I am asserting zero!"
+ raise httpexceptions.get_exception(int(form['error'].value))(
+ headers=headers)
+
+ if form.getvalue('environ'):
+ write = start_response('200 OK', [('Content-type', 'text/plain')])
+ items = environ.items()
+ items.sort()
+ return ['%s=%s\n' % (name, value)
+ for name, value in items]
+
+ if form.has_key('message'):
+ write = start_response('200 OK', [('Content-type', 'text/plain')])
+ write(form['message'].value)
+ return []
+
+ if form.getvalue('error') == 'iter':
+ return BadIter()
+
+ write = start_response('200 OK', [('Content-type', 'text/html')])
+ return ['hello world!']
+
+class BadIter(object):
+ def __iter__(self):
+ assert 0, "I am assert zero in the iterator!"