view pylons_app/lib/simplehg.py @ 111:70b1e5d1e20d

simplehg, cleanup
author Marcin Kuzminski <marcin@python-works.com>
date Wed, 28 Apr 2010 00:16:08 +0200
parents
children cc5cf1a93902
line wrap: on
line source

import os

import cgi
from mercurial import util
from mercurial.hgweb.request import wsgirequest, normalize
from mercurial.hgweb import hgweb
from pylons.controllers.util import Response
from mercurial.hgweb.request import wsgiapplication


class SimpleHg(object):

    def __init__(self, application, config):
        self.application = application
        self.config = config
        
    def __call__(self, environ, start_response):
        if not is_mercurial(environ):
            return self.application(environ, start_response)
        else:
            from pprint import pprint
            pprint(environ)

            repo_path = os.path.join('/home/marcink/python_workspace/', environ['PATH_INFO'].replace('/', ''))
            def _make_app():return hgweb(repo_path, "Name")
            app = wsgiapplication(_make_app)
            return app(environ, start_response)            
                
def is_mercurial(environ):
    """
    Returns True if request's target is mercurial server - header
    ``HTTP_ACCEPT`` of such request would start with ``application/mercurial``.
    """
    http_accept = environ.get('HTTP_ACCEPT')
    if http_accept and http_accept.startswith('application/mercurial'):
        return True
    return False