diff options
| author | ianb <devnull@localhost> | 2005-04-22 03:18:20 +0000 |
|---|---|---|
| committer | ianb <devnull@localhost> | 2005-04-22 03:18:20 +0000 |
| commit | 36593a8d40cd1417d2927a78cdbe621090b6e8a5 (patch) | |
| tree | 74dc42b93bb512593869fd57f8be99c198d8c108 /paste/webkit/examples/EchoServlet.py | |
| parent | 7752a3102fc8aa68ee7e349495bc2e9345c77c00 (diff) | |
| download | paste-36593a8d40cd1417d2927a78cdbe621090b6e8a5.tar.gz | |
Renamed package itself
Diffstat (limited to 'paste/webkit/examples/EchoServlet.py')
| -rw-r--r-- | paste/webkit/examples/EchoServlet.py | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/paste/webkit/examples/EchoServlet.py b/paste/webkit/examples/EchoServlet.py new file mode 100644 index 0000000..6dc30c6 --- /dev/null +++ b/paste/webkit/examples/EchoServlet.py @@ -0,0 +1,57 @@ +r"""\ +Paste/WebKit 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 +""" + +# Special WSGI version of WebKit: +from paste.webkit.wkservlet import Page +from paste import httpexceptions + +class EchoServlet(Page): + + def writeHTML(self): + req = self.request() + headers = {} + for key, value in req.fields().items(): + if key.startswith('header.'): + name = key[len('header.'):] + self.response().setHeader(name, value) + # @@: I shouldn't have to do this: + headers[name] = value + + error = req.field('error', None) + if error and error != 'iter': + if error == 'assert': + assert 0, "I am asserting zero!" + raise httpexceptions.get_exception( + int(error), headers=headers) + + if req.field('environ', None): + items = req.environ().items() + items.sort() + self.response().setHeader('content-type', 'text/plain') + for name, value in items: + self.write('%s=%s\n' % (name, value)) + return + + if req.hasField('message'): + self.response().setHeader('content-type', 'text/plain') + self.write(req.field('message')) + return + + self.write('hello world!') |
