Skip to content

Commit

Permalink
[utils] Introduce url_or_none
Browse files Browse the repository at this point in the history
  • Loading branch information
Sergey M․ committed Jul 21, 2018
1 parent b96b4be commit af03000
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 0 deletions.
11 changes: 11 additions & 0 deletions test/test_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@
uppercase_escape,
lowercase_escape,
url_basename,
url_or_none,
base_url,
urljoin,
urlencode_postdata,
Expand Down Expand Up @@ -507,6 +508,16 @@ def test_urljoin(self):
self.assertEqual(urljoin('http://foo.de/', ['foobar']), None)
self.assertEqual(urljoin('http://foo.de/a/b/c.txt', '.././../d.txt'), 'http://foo.de/d.txt')

def test_url_or_none(self):
self.assertEqual(url_or_none(None), None)
self.assertEqual(url_or_none(''), None)
self.assertEqual(url_or_none('foo'), None)
self.assertEqual(url_or_none('http://foo.de'), 'http://foo.de')
self.assertEqual(url_or_none('https://foo.de'), 'https://foo.de')
self.assertEqual(url_or_none('http$://foo.de'), None)
self.assertEqual(url_or_none('http://foo.de'), 'http://foo.de')
self.assertEqual(url_or_none('//foo.de'), '//foo.de')

def test_parse_age_limit(self):
self.assertEqual(parse_age_limit(None), None)
self.assertEqual(parse_age_limit(False), None)
Expand Down
7 changes: 7 additions & 0 deletions youtube_dl/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -1866,6 +1866,13 @@ def strip_or_none(v):
return None if v is None else v.strip()


def url_or_none(url):
if not url or not isinstance(url, compat_str):
return None
url = url.strip()
return url if re.match(r'^(?:[a-zA-Z][\da-zA-Z.+-]*:)?//', url) else None


def parse_duration(s):
if not isinstance(s, compat_basestring):
return None
Expand Down

0 comments on commit af03000

Please sign in to comment.