Mercurial > hg-stable
changeset 18348:764a758780b6
hgweb: simplify wsgirequest header handling
Remove leaky header abstraction and prepare for other encodings.
author | Mads Kiilerich <mads@kiilerich.com> |
---|---|
date | Tue, 15 Jan 2013 01:05:12 +0100 |
parents | 853221386f48 |
children | c007e5c54b16 |
files | mercurial/hgweb/request.py mercurial/hgweb/webcommands.py |
diffstat | 2 files changed, 11 insertions(+), 20 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/hgweb/request.py Tue Jan 15 01:05:12 2013 +0100 +++ b/mercurial/hgweb/request.py Tue Jan 15 01:05:12 2013 +0100 @@ -72,15 +72,21 @@ def respond(self, status, type, filename=None, length=None): if self._start_response is not None: - - self.httphdr(type, filename, length) + self.headers.append(('Content-Type', type)) + if filename: + filename = (filename.split('/')[-1] + .replace('\\', '\\\\').replace('"', '\\"')) + self.headers.append(('Content-Disposition', + 'inline; filename="%s"' % filename)) + if length is not None: + self.headers.append(('Content-Length', str(length))) for k, v in self.headers: if not isinstance(v, str): - raise TypeError('header value must be string: %r' % v) + raise TypeError('header value must be string: %r' % (v,)) if isinstance(status, ErrorResponse): - self.header(status.headers) + self.headers.extend(status.headers) if status.code == HTTP_NOT_MODIFIED: # RFC 2616 Section 10.3.5: 304 Not Modified has cases where # it MUST NOT include any headers other than these and no @@ -120,21 +126,6 @@ def close(self): return None - def header(self, headers=[('Content-Type','text/html')]): - self.headers.extend(headers) - - def httphdr(self, type, filename=None, length=None, headers={}): - headers = headers.items() - headers.append(('Content-Type', type)) - if filename: - filename = (filename.split('/')[-1] - .replace('\\', '\\\\').replace('"', '\\"')) - headers.append(('Content-Disposition', - 'inline; filename="%s"' % filename)) - if length is not None: - headers.append(('Content-Length', str(length))) - self.header(headers) - def wsgiapplication(app_maker): '''For compatibility with old CGI scripts. A plain hgweb() or hgwebdir() can and should now be used as a WSGI application.'''
--- a/mercurial/hgweb/webcommands.py Tue Jan 15 01:05:12 2013 +0100 +++ b/mercurial/hgweb/webcommands.py Tue Jan 15 01:05:12 2013 +0100 @@ -804,7 +804,7 @@ ] if encoding: headers.append(('Content-Encoding', encoding)) - req.header(headers) + req.headers.extend(headers) req.respond(HTTP_OK, mimetype) ctx = webutil.changectx(web.repo, req)