Mercurial > public > mercurial-scm > hg
comparison mercurial/hgweb/webcommands.py @ 5890:a0e20a5eba3c
hgweb: fast path for sending raw files
author | Dirkjan Ochtman <dirkjan@ochtman.nl> |
---|---|
date | Fri, 18 Jan 2008 19:53:38 +0100 |
parents | 9d900f7282e6 |
children | d0576d065993 |
comparison
equal
deleted
inserted
replaced
5889:209577095f20 | 5890:a0e20a5eba3c |
---|---|
3 # Copyright 2005-2007 Matt Mackall <mpm@selenic.com> | 3 # Copyright 2005-2007 Matt Mackall <mpm@selenic.com> |
4 # | 4 # |
5 # This software may be used and distributed according to the terms | 5 # This software may be used and distributed according to the terms |
6 # of the GNU General Public License, incorporated herein by reference. | 6 # of the GNU General Public License, incorporated herein by reference. |
7 | 7 |
8 import os | 8 import os, mimetypes |
9 from mercurial import revlog | 9 from mercurial import revlog, util |
10 from common import staticfile | 10 from common import staticfile |
11 | 11 |
12 def log(web, req, tmpl): | 12 def log(web, req, tmpl): |
13 if req.form.has_key('file') and req.form['file'][0]: | 13 if req.form.has_key('file') and req.form['file'][0]: |
14 filelog(web, req, tmpl) | 14 filelog(web, req, tmpl) |
15 else: | 15 else: |
16 changelog(web, req, tmpl) | 16 changelog(web, req, tmpl) |
17 | |
18 def rawfile(web, req, tmpl): | |
19 path = web.cleanpath(req.form.get('file', [''])[0]) | |
20 if not path: | |
21 req.write(web.manifest(tmpl, web.changectx(req), path)) | |
22 return | |
23 | |
24 try: | |
25 fctx = web.filectx(req) | |
26 except revlog.LookupError: | |
27 req.write(web.manifest(tmpl, web.changectx(req), path)) | |
28 return | |
29 | |
30 path = fctx.path() | |
31 text = fctx.data() | |
32 mt = mimetypes.guess_type(path)[0] | |
33 if util.binary(text): | |
34 mt = mt or 'application/octet-stream' | |
35 | |
36 req.httphdr(mt, path, len(text)) | |
37 req.write(text) | |
17 | 38 |
18 def file(web, req, tmpl): | 39 def file(web, req, tmpl): |
19 path = web.cleanpath(req.form.get('file', [''])[0]) | 40 path = web.cleanpath(req.form.get('file', [''])[0]) |
20 if path: | 41 if path: |
21 try: | 42 try: |