Changeset - ca8f597c8fa8
[Not reviewed]
default
0 1 0
Mads Kiilerich - 6 years ago 2019-07-31 02:29:36
mads@kiilerich.com
clone_url: use regexp and single pass for variable expansion - avoid nested expansion in case a variable value would contain a variable reference

It would probably never be a problem in real life, but just avoid the tech debt
of doing it wrong ...
1 file changed with 2 insertions and 4 deletions:
0 comments (0 inline, 0 general)
kallithea/lib/utils2.py
Show inline comments
 
@@ -419,18 +419,16 @@ def get_clone_url(clone_uri_tmpl, prefix
 
        'user': safe_unicode(urllib.quote(safe_str(username or ''))),
 
        'netloc': parsed_url.netloc + prefix,  # like "hostname:port/prefix" (with optional ":port" and "/prefix")
 
        'prefix': prefix, # undocumented, empty or starting with /
 
        'repo': repo_name,
 
        'repoid': str(repo_id),
 
    }
 

	
 
    for k, v in args.items():
 
        clone_uri_tmpl = clone_uri_tmpl.replace('{%s}' % k, v)
 
    url = re.sub('{([^{}]+)}', lambda m: args.get(m.group(1), m.group(0)), clone_uri_tmpl)
 

	
 
    # remove leading @ sign if it's present. Case of empty user
 
    url_obj = urlobject.URLObject(clone_uri_tmpl)
 
    url_obj = urlobject.URLObject(url)
 
    url = url_obj.with_netloc(url_obj.netloc.lstrip('@'))
 

	
 
    return safe_unicode(url)
 

	
 

	
 
def get_changeset_safe(repo, rev):
0 comments (0 inline, 0 general)