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('/'):