Mercurial > hg > simpypi
comparison simpypi/factory.py @ 72:b2ea14bf9f46
add a slash to the namespaced directory
author | Jeff Hammel <jhammel@mozilla.com> |
---|---|
date | Fri, 02 Mar 2012 11:35:49 -0800 |
parents | 8fa30276b3e0 |
children |
comparison
equal
deleted
inserted
replaced
71:dcb98ad8463e | 72:b2ea14bf9f46 |
---|---|
9 import shutil | 9 import shutil |
10 import sys | 10 import sys |
11 import tempfile | 11 import tempfile |
12 | 12 |
13 from fileserver import DirectoryServer | 13 from fileserver import DirectoryServer |
14 from webob import exc | |
14 from wsgi import SimPyPI | 15 from wsgi import SimPyPI |
15 from wsgiref import simple_server | 16 from wsgiref import simple_server |
16 | 17 |
17 class NamespacedFileserver(DirectoryServer): | 18 class NamespacedFileserver(DirectoryServer): |
18 | 19 |
22 self.namespace = namespace | 23 self.namespace = namespace |
23 | 24 |
24 def __call__(self, environ, start_response): | 25 def __call__(self, environ, start_response): |
25 path = environ['PATH_INFO'] | 26 path = environ['PATH_INFO'] |
26 if path == self.namespace: | 27 if path == self.namespace: |
28 response = exc.HTTPMovedPermanently(add_slash=True) | |
29 return response(environ, start_response) | |
27 environ['PATH_INFO'] = '/' | 30 environ['PATH_INFO'] = '/' |
28 return DirectoryServer.__call__(self, environ, start_response) | 31 return DirectoryServer.__call__(self, environ, start_response) |
29 elif path.startswith(self.namespace + '/'): | 32 elif path.startswith(self.namespace + '/'): |
30 environ['PATH_INFO'] = path[len(self.namespace):] | 33 environ['PATH_INFO'] = path[len(self.namespace):] |
31 return DirectoryServer.__call__(self, environ, start_response) | 34 return DirectoryServer.__call__(self, environ, start_response) |