aboutsummaryrefslogtreecommitdiffstats
path: root/brevisurl/utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'brevisurl/utils.py')
-rw-r--r--brevisurl/utils.py31
1 files changed, 24 insertions, 7 deletions
diff --git a/brevisurl/utils.py b/brevisurl/utils.py
index a55bb66..6210096 100644
--- a/brevisurl/utils.py
+++ b/brevisurl/utils.py
@@ -28,7 +28,7 @@ def url_has_protocol(url):
:param url: url that is being examined.
:type url: string
- :returns: True if url has protocol, False if not
+ :returns: True if url has protocol, False otherwise
:rtype: bool
"""
@@ -36,6 +36,20 @@ def url_has_protocol(url):
return True if url_parsed.netloc != '' and url_parsed.scheme in ('http', 'https') else False
+def url_has_path(url):
+ """Util for determining whether url has path present or not.
+
+ :param url: url that is being examined.
+ :type url: string
+ :returns: True if url has path, False otherwise
+ :rtype: bool
+
+ """
+ url_parsed = urlparse.urlparse(url)
+ return True if url_parsed.netloc != '' and url_parsed.path != '' else False
+
+
+
def absurl(protocol=None, domain=None, site=None, path='/'):
"""Util for constructing absolute urls from relative urls.
@@ -54,14 +68,17 @@ def absurl(protocol=None, domain=None, site=None, path='/'):
:rtype: string
"""
+ # Searching for domain.
protocol = protocol or brevisurl.settings.LOCAL_BACKEND_DOMAIN_PROTOCOL
if domain is None and site is None:
domain = Site.objects.get_current().domain
elif domain is None and site is not None:
domain = site.domain
- if brevisurl.settings.LOCAL_BACKEND_STRIP_TOKEN_URL_SLASH:
- path = path.lstrip('/')
- if url_has_protocol(domain):
- return '{domain:s}{path:s}'.format(domain=domain, path=path)
- else:
- return '{protocol:s}://{domain:s}{path:s}'.format(protocol=protocol, domain=domain, path=path) \ No newline at end of file
+ # Append protocol if not present.
+ if not url_has_protocol(domain):
+ domain = '{protocol:s}://{domain:s}'.format(protocol=protocol, domain=domain)
+ # Always append default path if not present in domain.
+ if not url_has_path(domain):
+ domain = '{domain:s}/'.format(domain=domain)
+ # Concatenate domain with protocol and path.
+ return '{domain:s}{path:s}'.format(domain=domain, path=path.lstrip('/')) \ No newline at end of file