Utils: add coerce_url_to_protocol()

Sometimes we have a url that may or may not be using the protocol we want.  In
those cases, it's nice to have a handy way to ensure the protocol.
This commit is contained in:
xiongchiamiov
2015-01-08 18:31:33 -08:00
parent 4a9d45a878
commit 8d2a668c5b
2 changed files with 32 additions and 0 deletions

View File

@@ -677,6 +677,13 @@ class UrlParser(object):
u.path, u.params, u.query, fragment))
def coerce_url_to_protocol(url, protocol='http'):
'''Given an absolute (but potentially protocol-relative) url, coerce it to
a protocol.'''
parsed_url = UrlParser(url)
parsed_url.scheme = protocol
return parsed_url.unparse()
def url_is_embeddable_image(url):
"""The url is on an oembed-friendly domain and looks like an image."""
parsed_url = UrlParser(url)

View File

@@ -70,6 +70,31 @@ class UtilsTest(unittest.TestCase):
utils.extract_subdomain('internet-frontpage.com', 'reddit.com'),
'')
def test_coerce_url_to_protocol(self):
self.assertEquals(
utils.coerce_url_to_protocol('http://example.com/foo'),
'http://example.com/foo')
self.assertEquals(
utils.coerce_url_to_protocol('https://example.com/foo'),
'http://example.com/foo')
self.assertEquals(
utils.coerce_url_to_protocol('//example.com/foo'),
'http://example.com/foo')
self.assertEquals(
utils.coerce_url_to_protocol('http://example.com/foo', 'https'),
'https://example.com/foo')
self.assertEquals(
utils.coerce_url_to_protocol('https://example.com/foo', 'https'),
'https://example.com/foo')
self.assertEquals(
utils.coerce_url_to_protocol('//example.com/foo', 'https'),
'https://example.com/foo')
class TestCanonicalizeEmail(unittest.TestCase):
def test_empty_string(self):