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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
93e830409685 initial stub commit
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
1 """
93e830409685 initial stub commit
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
2 request dispatcher:
93e830409685 initial stub commit
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
3 data persisting across requests should go here
93e830409685 initial stub commit
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
4 """
93e830409685 initial stub commit
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
5
93e830409685 initial stub commit
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
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
b03602153de2 removing more cruft
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
8 from webob import Request, Response, exc
0
93e830409685 initial stub commit
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
9
2
b03602153de2 removing more cruft
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
10 here = os.path.dirname(os.path.abspath(__file__))
0
93e830409685 initial stub commit
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
11
18
90777e79ea13 fix up factory (i hope)
Jeff Hammel <jhammel@mozilla.com>
parents: 14
diff changeset
12 class SimPyPI(object):
0
93e830409685 initial stub commit
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
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
b03602153de2 removing more cruft
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
15
b03602153de2 removing more cruft
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
16 self.directory = directory
b03602153de2 removing more cruft
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
17 assert os.path.exists(directory)
0
93e830409685 initial stub commit
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
18
93e830409685 initial stub commit
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
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
Jeff Hammel <jhammel@mozilla.com>
parents: 10
diff changeset
21 for method in ('GET', 'POST')])
34
ab52f46a3682 remove cruft
Jeff Hammel <jhammel@mozilla.com>
parents: 18
diff changeset
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
93e830409685 initial stub commit
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
28
93e830409685 initial stub commit
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
29 def __call__(self, environ, start_response):
93e830409685 initial stub commit
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
30
93e830409685 initial stub commit
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
31 # get a request object
93e830409685 initial stub commit
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
32 request = Request(environ)
93e830409685 initial stub commit
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
33
93e830409685 initial stub commit
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
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
93e830409685 initial stub commit
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
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
93e830409685 initial stub commit
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
40
93e830409685 initial stub commit
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
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
315b7b49eaf4 add redirect
Jeff Hammel <jhammel@mozilla.com>
parents: 34
diff changeset
59 # redirect to the main page
315b7b49eaf4 add redirect
Jeff Hammel <jhammel@mozilla.com>
parents: 34
diff changeset
60 return exc.HTTPSeeOther(add_slash=True)
315b7b49eaf4 add redirect
Jeff Hammel <jhammel@mozilla.com>
parents: 34
diff changeset
61