File: EchoServlet.py

package info (click to toggle)
pastewebkit 1.0-7
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd, wheezy
  • size: 580 kB
  • ctags: 674
  • sloc: python: 3,346; makefile: 44
file content (57 lines) | stat: -rw-r--r-- 1,589 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
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!')