--- /dev/null
+# -*- coding: utf-8 -*-
+
+"""
+Module for API-related calls.
+"""
+
+import urlparse
+
+
+def hostname_tld_migration(hostname):
+ """
+ Migrate transifex.net to transifex.com.
+
+ :param hostname: The hostname to migrate (if needed).
+ :returns: A hostname with the transifex.com domain (if needed).
+ """
+ parts = urlparse.urlparse(hostname)
+ if parts.hostname.endswith('transifex.net'):
+ hostname = hostname.replace('transifex.net', 'transifex.com', 1)
+ return hostname
+
+
+def hostname_ssl_migration(hostname):
+ """
+ Migrate Transifex hostnames to use HTTPS.
+
+ :param hostname: The hostname to migrate (if needed).
+ :returns: A https hostname (if needed).
+ """
+ parts = urlparse.urlparse(hostname)
+ is_transifex = (
+ parts.hostname[-14:-3] == '.transifex.' or
+ parts.hostname == 'transifex.net' or
+ parts.hostname == 'transifex.com'
+ )
+ is_https = parts.scheme == 'https'
+ if is_transifex and not is_https:
+ if not parts.scheme:
+ hostname = 'https:' + hostname
+ else:
+ hostname = hostname.replace(parts.scheme, 'https', 1)
+ return hostname
+
+
+def visit_hostname(hostname):
+ """
+ Have a chance to visit a hostname before actually using it.
+
+ :param hostname: The original hostname.
+ :returns: The hostname with the necessary changes.
+ """
+ for processor in [hostname_ssl_migration, hostname_tld_migration, ]:
+ hostname = processor(hostname)
+ return hostname