Mercurial > public > mercurial-scm > hg
comparison mercurial/hgweb/server.py @ 5566:d74fc8dec2b4
Less indirection in the WSGI web interface. This simplifies some code, and makes it more compliant with WSGI.
author | Dirkjan Ochtman <dirkjan@ochtman.nl> |
---|---|
date | Fri, 30 Nov 2007 18:23:18 +0100 |
parents | f2f42262adbd |
children | e15f7db0f0ee |
comparison
equal
deleted
inserted
replaced
5565:feac5b0bf9ba | 5566:d74fc8dec2b4 |
---|---|
8 | 8 |
9 import os, sys, errno, urllib, BaseHTTPServer, socket, SocketServer, traceback | 9 import os, sys, errno, urllib, BaseHTTPServer, socket, SocketServer, traceback |
10 from mercurial import ui, hg, util, templater | 10 from mercurial import ui, hg, util, templater |
11 from hgweb_mod import hgweb | 11 from hgweb_mod import hgweb |
12 from hgwebdir_mod import hgwebdir | 12 from hgwebdir_mod import hgwebdir |
13 from request import wsgiapplication | |
14 from mercurial.i18n import gettext as _ | 13 from mercurial.i18n import gettext as _ |
15 | 14 |
16 def _splitURI(uri): | 15 def _splitURI(uri): |
17 """ Return path and query splited from uri | 16 """ Return path and query splited from uri |
18 | 17 |
119 self.close_connection = True | 118 self.close_connection = True |
120 self.saved_status = None | 119 self.saved_status = None |
121 self.saved_headers = [] | 120 self.saved_headers = [] |
122 self.sent_headers = False | 121 self.sent_headers = False |
123 self.length = None | 122 self.length = None |
124 req = self.server.reqmaker(env, self._start_response) | 123 self.server.application(env, self._start_response) |
125 for data in req: | |
126 if data: | |
127 self._write(data) | |
128 | 124 |
129 def send_headers(self): | 125 def send_headers(self): |
130 if not self.saved_status: | 126 if not self.saved_status: |
131 raise AssertionError("Sending headers before start_response() called") | 127 raise AssertionError("Sending headers before start_response() called") |
132 saved_status = self.saved_status.split(None, 1) | 128 saved_status = self.saved_status.split(None, 1) |
248 hgwebobj = hgweb(hg.repository(repo.ui, repo.root)) | 244 hgwebobj = hgweb(hg.repository(repo.ui, repo.root)) |
249 else: | 245 else: |
250 raise hg.RepoError(_("There is no Mercurial repository here" | 246 raise hg.RepoError(_("There is no Mercurial repository here" |
251 " (.hg not found)")) | 247 " (.hg not found)")) |
252 return hgwebobj | 248 return hgwebobj |
253 self.reqmaker = wsgiapplication(make_handler) | 249 self.application = make_handler() |
254 | 250 |
255 addr = address | 251 addr = address |
256 if addr in ('', '::'): | 252 if addr in ('', '::'): |
257 addr = socket.gethostname() | 253 addr = socket.gethostname() |
258 | 254 |