111
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
1 import os
|
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
2
|
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
3 import cgi
|
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
4 from mercurial import util
|
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
5 from mercurial.hgweb.request import wsgirequest, normalize
|
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
6 from mercurial.hgweb import hgweb
|
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
7 from pylons.controllers.util import Response
|
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
8 from mercurial.hgweb.request import wsgiapplication
|
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
9
|
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
10
|
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
11 class SimpleHg(object):
|
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
12
|
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
13 def __init__(self, application, config):
|
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
14 self.application = application
|
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
15 self.config = config
|
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
16
|
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
17 def __call__(self, environ, start_response):
|
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
18 if not is_mercurial(environ):
|
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
19 return self.application(environ, start_response)
|
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
20 else:
|
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
21 from pprint import pprint
|
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
22 pprint(environ)
|
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
23
|
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
24 repo_path = os.path.join('/home/marcink/python_workspace/', environ['PATH_INFO'].replace('/', ''))
|
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
25 def _make_app():return hgweb(repo_path, "Name")
|
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
26 app = wsgiapplication(_make_app)
|
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
27 return app(environ, start_response)
|
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
28
|
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
29 def is_mercurial(environ):
|
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
30 """
|
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
31 Returns True if request's target is mercurial server - header
|
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
32 ``HTTP_ACCEPT`` of such request would start with ``application/mercurial``.
|
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
33 """
|
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
34 http_accept = environ.get('HTTP_ACCEPT')
|
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
35 if http_accept and http_accept.startswith('application/mercurial'):
|
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
36 return True
|
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
37 return False
|