azure-devops/azext_devops/dev/common/uri.py (25 lines of code) (raw):

# -------------------------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. # Licensed under the MIT License. See License.txt in the project root for license information. # -------------------------------------------------------------------------------------------- try: from urllib.parse import urlparse, quote except ImportError: from urllib import quote from urlparse import urlparse def uri_parse(url): # Special handling for NEW ssh urls which do not start with ssh:// if not url.startswith('ssh:') and ("vs-ssh.visualstudio.com" in url or "ssh.dev.azure.com" in url): # e.g. org@vs-ssh.visualstudio.com:v3/org/project/repo # e.g. git@ssh.dev.azure.com:v3/org/Project/Repo # append ssh at start to set correct scheme return urlparse("ssh://{original_uri}".format(original_uri=url)) return urlparse(url) def uri_quote(query_data): return quote(query_data) # Only works for hosted scenario def uri_parse_instance_from_git_uri(uri): if "/_git" in uri: parsed_uri = urlparse(uri) # old Uri format if "visualstudio.com" in uri: return '{uri.scheme}://{uri.netloc}/'.format(uri=parsed_uri) # new Uri format if "dev.azure.com" in uri: org_name = parsed_uri.path.strip("/").split("/")[0] return parsed_uri.scheme + "://" + parsed_uri.hostname + "/" + org_name return uri def is_valid_url(url): parsed_url = uri_parse(url) if not parsed_url.scheme or not parsed_url.netloc: return False return True