changeset 8285:eb795f7a7a18

utils: let is_valid_repo_uri report URLError from ._check_url as InvalidCloneUriException Better encapsulation of internals.
author Mads Kiilerich <mads@kiilerich.com>
date Fri, 06 Mar 2020 19:20:36 +0100
parents b595758f0792
children 4aa6a17afc49
files kallithea/lib/utils.py
diffstat 1 files changed, 9 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/kallithea/lib/utils.py	Fri Mar 06 19:06:09 2020 +0100
+++ b/kallithea/lib/utils.py	Fri Mar 06 19:20:36 2020 +0100
@@ -31,6 +31,7 @@
 import re
 import sys
 import traceback
+import urllib.error
 from distutils.version import StrictVersion
 
 import beaker.cache
@@ -230,7 +231,10 @@
         if url.startswith('http') or url.startswith('ssh'):
             # initially check if it's at least the proper URL
             # or does it pass basic auth
-            MercurialRepository._check_url(url, ui)
+            try:
+                MercurialRepository._check_url(url, ui)
+            except urllib.error.URLError as e:
+                raise InvalidCloneUriException('URI %s URLError: %s' % (url, e))
         elif url.startswith('svn+http'):
             try:
                 from hgsubversion.svnrepo import svnremoterepo
@@ -246,7 +250,10 @@
         if url.startswith('http') or url.startswith('git'):
             # initially check if it's at least the proper URL
             # or does it pass basic auth
-            GitRepository._check_url(url)
+            try:
+                GitRepository._check_url(url)
+            except urllib.error.URLError as e:
+                raise InvalidCloneUriException('URI %s URLError: %s' % (url, e))
         elif url.startswith('svn+http'):
             raise InvalidCloneUriException('URI type %s not implemented' % (url,))
         elif url.startswith('hg+http'):