Mercurial > hg > simpypi
annotate simpypi/wsgi.py @ 37:1bdece293671
* fix calling signature in test
* no need for a self here
author | Jeff Hammel <jhammel@mozilla.com> |
---|---|
date | Thu, 01 Mar 2012 09:30:41 -0800 |
parents | a02d08627d9c |
children | ee29001674af |
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 |
37
1bdece293671
* fix calling signature in test
Jeff Hammel <jhammel@mozilla.com>
parents:
36
diff
changeset
|
50 package = request.POST.get('package') |
10
3e8597489ea3
start moving this to a single file
Jeff Hammel <jhammel@mozilla.com>
parents:
2
diff
changeset
|
51 |
36
a02d08627d9c
stub a test to upload a package
Jeff Hammel <jhammel@mozilla.com>
parents:
35
diff
changeset
|
52 # sanity check: |
a02d08627d9c
stub a test to upload a package
Jeff Hammel <jhammel@mozilla.com>
parents:
35
diff
changeset
|
53 # - does the field exist? |
a02d08627d9c
stub a test to upload a package
Jeff Hammel <jhammel@mozilla.com>
parents:
35
diff
changeset
|
54 # - is it a file? |
a02d08627d9c
stub a test to upload a package
Jeff Hammel <jhammel@mozilla.com>
parents:
35
diff
changeset
|
55 # TODO |
a02d08627d9c
stub a test to upload a package
Jeff Hammel <jhammel@mozilla.com>
parents:
35
diff
changeset
|
56 |
a02d08627d9c
stub a test to upload a package
Jeff Hammel <jhammel@mozilla.com>
parents:
35
diff
changeset
|
57 # put the package in the right place |
a02d08627d9c
stub a test to upload a package
Jeff Hammel <jhammel@mozilla.com>
parents:
35
diff
changeset
|
58 |
35 | 59 # redirect to the main page |
60 return exc.HTTPSeeOther(add_slash=True) | |
61 |