comparison mercurial/hgweb/common.py @ 5930:c301f15c965a

send conservatively capitalized HTTP headers
author Dirkjan Ochtman <dirkjan@ochtman.nl>
date Wed, 23 Jan 2008 14:28:25 +0100
parents e9f68860d5ed
children 948a41e77902
comparison
equal deleted inserted replaced
5929:e160f2312815 5930:c301f15c965a
34 return os.stat(cl_path).st_mtime 34 return os.stat(cl_path).st_mtime
35 else: 35 else:
36 return os.stat(store_path).st_mtime 36 return os.stat(store_path).st_mtime
37 37
38 def staticfile(directory, fname, req): 38 def staticfile(directory, fname, req):
39 """return a file inside directory with guessed content-type header 39 """return a file inside directory with guessed Content-Type header
40 40
41 fname always uses '/' as directory separator and isn't allowed to 41 fname always uses '/' as directory separator and isn't allowed to
42 contain unusual path components. 42 contain unusual path components.
43 Content-type is guessed using the mimetypes module. 43 Content-Type is guessed using the mimetypes module.
44 Return an empty string if fname is illegal or file not found. 44 Return an empty string if fname is illegal or file not found.
45 45
46 """ 46 """
47 parts = fname.split('/') 47 parts = fname.split('/')
48 path = directory 48 path = directory
52 return "" 52 return ""
53 path = os.path.join(path, part) 53 path = os.path.join(path, part)
54 try: 54 try:
55 os.stat(path) 55 os.stat(path)
56 ct = mimetypes.guess_type(path)[0] or "text/plain" 56 ct = mimetypes.guess_type(path)[0] or "text/plain"
57 req.header([('Content-type', ct), 57 req.header([
58 ('Content-length', str(os.path.getsize(path)))]) 58 ('Content-Type', ct),
59 ('Content-Length', str(os.path.getsize(path)))
60 ])
59 return file(path, 'rb').read() 61 return file(path, 'rb').read()
60 except TypeError: 62 except TypeError:
61 raise ErrorResponse(500, 'illegal file name') 63 raise ErrorResponse(500, 'illegal file name')
62 except OSError, err: 64 except OSError, err:
63 if err.errno == errno.ENOENT: 65 if err.errno == errno.ENOENT: