diff options
author | Dong-hee Na <donghee.na92@gmail.com> | 2019-09-05 00:34:35 (GMT) |
---|---|---|
committer | Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> | 2019-09-05 00:34:35 (GMT) |
commit | 87bd2071c756188b6cd577889fb1682831142ceb (patch) | |
tree | f611951d4ebbb460748aeb26b8e7af4b67c9ed5f | |
parent | 6cd9666ce93658ae91f07b396aa6932b362a61d3 (diff) | |
download | cpython-87bd2071c756188b6cd577889fb1682831142ceb.zip cpython-87bd2071c756188b6cd577889fb1682831142ceb.tar.gz cpython-87bd2071c756188b6cd577889fb1682831142ceb.tar.bz2 |
bpo-22347: Update mimetypes.guess_type to allow proper parsing of URLs (GH-15522)
https://bugs.python.org/issue22347
-rw-r--r-- | Lib/mimetypes.py | 3 | ||||
-rw-r--r-- | Lib/test/test_mimetypes.py | 8 | ||||
-rw-r--r-- | Lib/test/test_urllib2.py | 2 | ||||
-rw-r--r-- | Misc/NEWS.d/next/Library/2019-08-27-01-03-26.bpo-22347._TRpYr.rst | 2 |
4 files changed, 13 insertions, 2 deletions
diff --git a/Lib/mimetypes.py b/Lib/mimetypes.py index 01a16fd..f38005c 100644 --- a/Lib/mimetypes.py +++ b/Lib/mimetypes.py @@ -114,7 +114,8 @@ class MimeTypes: but non-standard types. """ url = os.fspath(url) - scheme, url = urllib.parse._splittype(url) + p = urllib.parse.urlparse(url) + scheme, url = p.scheme, p.path if scheme == 'data': # syntax of data URLs: # dataurl := "data:" [ mediatype ] [ ";base64" ] "," data diff --git a/Lib/test/test_mimetypes.py b/Lib/test/test_mimetypes.py index bfd5eee..7761c3f 100644 --- a/Lib/test/test_mimetypes.py +++ b/Lib/test/test_mimetypes.py @@ -51,6 +51,14 @@ class MimeTypesTestCase(unittest.TestCase): eq(self.db.guess_type('foo.xul', strict=False), ('text/xul', None)) eq(self.db.guess_extension('image/jpg', strict=False), '.jpg') + def test_url(self): + result = self.db.guess_type('http://host.html') + msg = 'URL only has a host name, not a file' + self.assertSequenceEqual(result, (None, None), msg) + result = self.db.guess_type('http://example.com/host.html') + msg = 'Should be text/html' + self.assertSequenceEqual(result, ('text/html', None), msg) + def test_guess_all_types(self): eq = self.assertEqual unless = self.assertTrue diff --git a/Lib/test/test_urllib2.py b/Lib/test/test_urllib2.py index 7b576db..c228fa7 100644 --- a/Lib/test/test_urllib2.py +++ b/Lib/test/test_urllib2.py @@ -742,7 +742,7 @@ class HandlerTests(unittest.TestCase): ["foo", "bar"], "", None), ("ftp://localhost/baz.gif;type=a", "localhost", ftplib.FTP_PORT, "", "", "A", - [], "baz.gif", None), # XXX really this should guess image/gif + [], "baz.gif", "image/gif"), ]: req = Request(url) req.timeout = None diff --git a/Misc/NEWS.d/next/Library/2019-08-27-01-03-26.bpo-22347._TRpYr.rst b/Misc/NEWS.d/next/Library/2019-08-27-01-03-26.bpo-22347._TRpYr.rst new file mode 100644 index 0000000..1a3c199 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2019-08-27-01-03-26.bpo-22347._TRpYr.rst @@ -0,0 +1,2 @@ +Update mimetypes.guess_type to allow proper parsing of URLs with only a host name. +Patch by Dong-hee Na. |