Changeset - 04ace15a511e
[Not reviewed]
default
0 3 0
Mads Kiilerich - 7 years ago 2019-01-08 13:02:44
mads@kiilerich.com
middleware: introduce more generic VCS webob.exc.HTTPException exception handling
3 files changed with 6 insertions and 7 deletions:
0 comments (0 inline, 0 general)
kallithea/lib/base.py
Show inline comments
 
@@ -305,12 +305,14 @@ class BaseVCSController(object):
 
        start = time.time()
 
        try:
 
            parsed_request = self.parse_request(environ)
 
            if parsed_request is None:
 
                return self.application(environ, start_response)
 
            return self._handle_request(parsed_request, environ, start_response)
 
        except webob.exc.HTTPException as e:
 
            return e(environ, start_response)
 
        finally:
 
            log = logging.getLogger('kallithea.' + self.__class__.__name__)
 
            log.debug('Request time: %.3fs', time.time() - start)
 
            meta.Session.remove()
 

	
 

	
kallithea/lib/middleware/simplegit.py
Show inline comments
 
@@ -68,13 +68,13 @@ class SimpleGit(BaseVCSController):
 
        ip_addr = self._get_ip_addr(environ)
 
        # skip passing error to error controller
 
        environ['pylons.status_code_redirect'] = True
 

	
 
        # quick check if repo exists...
 
        if not is_valid_repo(parsed_request.repo_name, self.basepath, 'git'):
 
            return HTTPNotFound()(environ, start_response)
 
            raise HTTPNotFound()
 

	
 
        #======================================================================
 
        # GET ACTION PULL or PUSH
 
        #======================================================================
 
        action = self.__get_action(environ)
 

	
 
@@ -111,13 +111,13 @@ class SimpleGit(BaseVCSController):
 
            log.info('%s action on Git repo "%s" by "%s" from %s',
 
                     action, parsed_request.repo_name, safe_str(user.username), ip_addr)
 
            app = self.__make_app(parsed_request.repo_name)
 
            return app(environ, start_response)
 
        except Exception:
 
            log.error(traceback.format_exc())
 
            return HTTPInternalServerError()(environ, start_response)
 
            raise HTTPInternalServerError()
 

	
 
    def __make_app(self, repo_name):
 
        """
 
        Return a pygrack wsgi application.
 
        """
 
        return make_wsgi_app(repo_name, safe_str(self.basepath)) # FIXME: safe_str???
kallithea/lib/middleware/simplehg.py
Show inline comments
 
@@ -83,21 +83,18 @@ class SimpleHg(BaseVCSController):
 
        ip_addr = self._get_ip_addr(environ)
 
        # skip passing error to error controller
 
        environ['pylons.status_code_redirect'] = True
 

	
 
        # quick check if repo exists...
 
        if not is_valid_repo(parsed_request.repo_name, self.basepath, 'hg'):
 
            return HTTPNotFound()(environ, start_response)
 
            raise HTTPNotFound()
 

	
 
        #======================================================================
 
        # GET ACTION PULL or PUSH
 
        #======================================================================
 
        try:
 
            action = self.__get_action(environ)
 
        except HTTPBadRequest as e:
 
            return e(environ, start_response)
 

	
 
        #======================================================================
 
        # CHECK PERMISSIONS
 
        #======================================================================
 
        user, response_app = self._authorize(environ, start_response, action, parsed_request.repo_name, ip_addr)
 
        if response_app is not None:
 
@@ -132,13 +129,13 @@ class SimpleHg(BaseVCSController):
 
                     action, parsed_request.repo_name, safe_str(user.username), ip_addr)
 
            environ['REPO_NAME'] = str_repo_name # used by hgweb_mod.hgweb
 
            app = self.__make_app(repo_path, baseui)
 
            return app(environ, start_response)
 
        except Exception:
 
            log.error(traceback.format_exc())
 
            return HTTPInternalServerError()(environ, start_response)
 
            raise HTTPInternalServerError()
 

	
 
    def __make_app(self, repo_name, baseui):
 
        """
 
        Make an hgweb wsgi application using baseui.
 
        """
 
        return hgweb_mod.hgweb(repo_name, name=repo_name, baseui=baseui)
0 comments (0 inline, 0 general)