Mercurial > hg > simpypi
annotate simpypi/wsgi.py @ 34:ab52f46a3682
remove cruft
author | Jeff Hammel <jhammel@mozilla.com> |
---|---|
date | Thu, 01 Mar 2012 08:45:13 -0800 |
parents | 90777e79ea13 |
children | 315b7b49eaf4 |
rev | line source |
---|---|
0 | 1 """ |
2 request dispatcher: | |
3 data persisting across requests should go here | |
4 """ | |
5 | |
6 import os | |
10
3e8597489ea3
start moving this to a single file
Jeff Hammel <jhammel@mozilla.com>
parents:
2
diff
changeset
|
7 #from handlers import Index |
2 | 8 from webob import Request, Response, exc |
0 | 9 |
2 | 10 here = os.path.dirname(os.path.abspath(__file__)) |
0 | 11 |
18 | 12 class SimPyPI(object): |
0 | 13 |
12
1cdb25cef7ee
print helpful message when running test app
Jeff Hammel <jhammel@mozilla.com>
parents:
11
diff
changeset
|
14 def __init__(self, directory, index=None): |
2 | 15 |
16 self.directory = directory | |
17 assert os.path.exists(directory) | |
0 | 18 |
19 # request handlers | |
10
3e8597489ea3
start moving this to a single file
Jeff Hammel <jhammel@mozilla.com>
parents:
2
diff
changeset
|
20 self.handlers = dict([(method, getattr(self, method)) |
11 | 21 for method in ('GET', 'POST')]) |
34 | 22 # TODO: HEAD, OPTIONS, maybe more |
10
3e8597489ea3
start moving this to a single file
Jeff Hammel <jhammel@mozilla.com>
parents:
2
diff
changeset
|
23 |
3e8597489ea3
start moving this to a single file
Jeff Hammel <jhammel@mozilla.com>
parents:
2
diff
changeset
|
24 # cache index HTML |
12
1cdb25cef7ee
print helpful message when running test app
Jeff Hammel <jhammel@mozilla.com>
parents:
11
diff
changeset
|
25 self.index = index or os.path.join(here, 'templates', 'index.html') |
10
3e8597489ea3
start moving this to a single file
Jeff Hammel <jhammel@mozilla.com>
parents:
2
diff
changeset
|
26 assert os.path.exists(self.index) |
3e8597489ea3
start moving this to a single file
Jeff Hammel <jhammel@mozilla.com>
parents:
2
diff
changeset
|
27 self.index = file(self.index).read() |
0 | 28 |
29 def __call__(self, environ, start_response): | |
30 | |
31 # get a request object | |
32 request = Request(environ) | |
33 | |
34 # match the request to a handler | |
10
3e8597489ea3
start moving this to a single file
Jeff Hammel <jhammel@mozilla.com>
parents:
2
diff
changeset
|
35 handler = self.handlers.get(request.method) |
3e8597489ea3
start moving this to a single file
Jeff Hammel <jhammel@mozilla.com>
parents:
2
diff
changeset
|
36 if handler: |
3e8597489ea3
start moving this to a single file
Jeff Hammel <jhammel@mozilla.com>
parents:
2
diff
changeset
|
37 res = handler(request) |
0 | 38 else: |
10
3e8597489ea3
start moving this to a single file
Jeff Hammel <jhammel@mozilla.com>
parents:
2
diff
changeset
|
39 res = exc.HTTPNotFound() |
0 | 40 |
41 return res(environ, start_response) | |
10
3e8597489ea3
start moving this to a single file
Jeff Hammel <jhammel@mozilla.com>
parents:
2
diff
changeset
|
42 |
3e8597489ea3
start moving this to a single file
Jeff Hammel <jhammel@mozilla.com>
parents:
2
diff
changeset
|
43 def GET(self, request): |
3e8597489ea3
start moving this to a single file
Jeff Hammel <jhammel@mozilla.com>
parents:
2
diff
changeset
|
44 return Response(body=self.index, content_type='text/html') |
3e8597489ea3
start moving this to a single file
Jeff Hammel <jhammel@mozilla.com>
parents:
2
diff
changeset
|
45 |
3e8597489ea3
start moving this to a single file
Jeff Hammel <jhammel@mozilla.com>
parents:
2
diff
changeset
|
46 def POST(self, request): |
3e8597489ea3
start moving this to a single file
Jeff Hammel <jhammel@mozilla.com>
parents:
2
diff
changeset
|
47 """handle posting a package""" |
3e8597489ea3
start moving this to a single file
Jeff Hammel <jhammel@mozilla.com>
parents:
2
diff
changeset
|
48 |
3e8597489ea3
start moving this to a single file
Jeff Hammel <jhammel@mozilla.com>
parents:
2
diff
changeset
|
49 # get the package |
3e8597489ea3
start moving this to a single file
Jeff Hammel <jhammel@mozilla.com>
parents:
2
diff
changeset
|
50 package = self.request.POST.get('package') |
3e8597489ea3
start moving this to a single file
Jeff Hammel <jhammel@mozilla.com>
parents:
2
diff
changeset
|
51 |
34 | 52 # TODO: redirect to the main page |
10
3e8597489ea3
start moving this to a single file
Jeff Hammel <jhammel@mozilla.com>
parents:
2
diff
changeset
|
53 # self.redirect(self.link(self.handler_path)) |