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