Sergey M․
8 years ago
No known key found for this signature in database
GPG Key ID: 2C393E0F18A9236D
2 changed files with
9 additions and
1 deletions
-
test/test_utils.py
-
youtube_dl/utils.py
|
|
@ -455,6 +455,9 @@ class TestUtil(unittest.TestCase): |
|
|
|
|
|
|
|
def test_urljoin(self): |
|
|
|
self.assertEqual(urljoin('http://foo.de/', '/a/b/c.txt'), 'http://foo.de/a/b/c.txt') |
|
|
|
self.assertEqual(urljoin(b'http://foo.de/', '/a/b/c.txt'), 'http://foo.de/a/b/c.txt') |
|
|
|
self.assertEqual(urljoin('http://foo.de/', b'/a/b/c.txt'), 'http://foo.de/a/b/c.txt') |
|
|
|
self.assertEqual(urljoin(b'http://foo.de/', b'/a/b/c.txt'), 'http://foo.de/a/b/c.txt') |
|
|
|
self.assertEqual(urljoin('//foo.de/', '/a/b/c.txt'), '//foo.de/a/b/c.txt') |
|
|
|
self.assertEqual(urljoin('http://foo.de/', 'a/b/c.txt'), 'http://foo.de/a/b/c.txt') |
|
|
|
self.assertEqual(urljoin('http://foo.de', '/a/b/c.txt'), 'http://foo.de/a/b/c.txt') |
|
|
|
|
|
@ -1748,11 +1748,16 @@ def base_url(url): |
|
|
|
|
|
|
|
|
|
|
|
def urljoin(base, path): |
|
|
|
if isinstance(path, bytes): |
|
|
|
path = path.decode('utf-8') |
|
|
|
if not isinstance(path, compat_str) or not path: |
|
|
|
return None |
|
|
|
if re.match(r'^(?:https?:)?//', path): |
|
|
|
return path |
|
|
|
if not isinstance(base, compat_str) or not re.match(r'^(?:https?:)?//', base): |
|
|
|
if isinstance(base, bytes): |
|
|
|
base = base.decode('utf-8') |
|
|
|
if not isinstance(base, compat_str) or not re.match( |
|
|
|
r'^(?:https?:)?//', base): |
|
|
|
return None |
|
|
|
return compat_urlparse.urljoin(base, path) |
|
|
|
|
|
|
|