Mercurial > hg > FileServer
comparison fileserver/web.py @ 13:e3993fa05b89
cleanup
author | Jeff Hammel <jhammel@mozilla.com> |
---|---|
date | Wed, 29 Feb 2012 15:42:14 -0800 |
parents | 8127dde8da22 |
children | 27bd18f0a359 |
comparison
equal
deleted
inserted
replaced
12:8127dde8da22 | 13:e3993fa05b89 |
---|---|
47 | 47 |
48 @staticmethod | 48 @staticmethod |
49 def normpath(path): | 49 def normpath(path): |
50 return os.path.normcase(os.path.abspath(path)) | 50 return os.path.normcase(os.path.abspath(path)) |
51 | 51 |
52 def add_slash(self, request): | |
53 import pdb; pdb.set_trace() | |
54 location = '' | |
55 response = exc.HTTPMovedPermanantly() | |
56 | |
57 def index(self, directory): | 52 def index(self, directory): |
58 """ | 53 """ |
59 generate a directory listing for a given directory | 54 generate a directory listing for a given directory |
60 """ | 55 """ |
61 parts = ['<html><head><title>Simple Index</title></head><body>'] | 56 parts = ['<html><head><title>Simple Index</title></head><body>'] |
70 def __call__(self, environ, start_response): | 65 def __call__(self, environ, start_response): |
71 request = Request(environ) | 66 request = Request(environ) |
72 # TODO method_not_allowed: Allow: GET, HEAD | 67 # TODO method_not_allowed: Allow: GET, HEAD |
73 path_info = request.path_info | 68 path_info = request.path_info |
74 if not path_info: | 69 if not path_info: |
75 pass # self.add slash | 70 response = exc.HTTPMovedPermanently(add_slash=True) |
71 return response(environ, start_response) | |
76 full = self.normpath(os.path.join(self.directory, path_info.strip('/'))) | 72 full = self.normpath(os.path.join(self.directory, path_info.strip('/'))) |
77 | 73 |
78 if not full.startswith(self.directory): | 74 if not full.startswith(self.directory): |
79 print 'OUT OF BOUNDS!' | |
80 import pdb; pdb.set_trace() | |
81 # Out of bounds | 75 # Out of bounds |
82 return exc.HTTPNotFound()(environ, start_response) | 76 return exc.HTTPNotFound()(environ, start_response) |
83 if not os.path.exists(full): | 77 if not os.path.exists(full): |
84 return exc.HTTPNotFound()(environ, start_response) | 78 return exc.HTTPNotFound()(environ, start_response) |
85 | 79 |
86 if os.path.isdir(full): | 80 if os.path.isdir(full): |
87 # serve directory index | 81 # serve directory index |
88 if not path_info.endswith('/'): | 82 if not path_info.endswith('/'): |
89 response = exc.HTTPMovedPermanently(add_slash=True) | 83 response = exc.HTTPMovedPermanently(add_slash=True) |
90 return response(environ, start_response) | 84 return response(environ, start_response) |
91 return self.add_slash(environ, start_response) | |
92 index = self.index(full) | 85 index = self.index(full) |
93 response_headers = [('Content-Type', 'text/html'), | |
94 ('Content-Length', str(len(index)))] | |
95 response = Response(index, content_type='text/html') | 86 response = Response(index, content_type='text/html') |
96 return response(environ, start_response) | 87 return response(environ, start_response) |
97 | 88 |
98 # serve file | 89 # serve file |
99 if path_info.endswith('/'): | 90 if path_info.endswith('/'): |