]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Make mimetypes.guess_type understand data URLs. (Sjoerd Mullender)
authorGuido van Rossum <guido@python.org>
Mon, 12 Oct 1998 15:12:28 +0000 (15:12 +0000)
committerGuido van Rossum <guido@python.org>
Mon, 12 Oct 1998 15:12:28 +0000 (15:12 +0000)
Lib/mimetypes.py

index b35d0ff84bd0610c031d266cd470699331ec2915..3d6510e23d026948269a306caded7ade0c07c7bc 100644 (file)
@@ -25,6 +25,7 @@ read_mime_types(file) -- parse one file, return a dictionary or None
 
 import string
 import posixpath
+import urllib
 
 knownfiles = [
     "/usr/local/etc/httpd/conf/mime.types",
@@ -53,6 +54,26 @@ def guess_type(url):
     """
     if not inited:
         init()
+    scheme, url = urllib.splittype(url)
+    if scheme == 'data':
+       # syntax of data URLs:
+       # dataurl   := "data:" [ mediatype ] [ ";base64" ] "," data
+       # mediatype := [ type "/" subtype ] *( ";" parameter )
+       # data      := *urlchar
+       # parameter := attribute "=" value
+       # type/subtype defaults to "text/plain"
+       comma = string.find(url, ',')
+       if comma < 0:
+           # bad data URL
+           return None, None
+       semi = string.find(url, ';', 0, comma)
+       if semi >= 0:
+           type = url[:semi]
+       else:
+           type = url[:comma]
+       if '=' in type or '/' not in type:
+           type = 'text/plain'
+       return type, None               # never compressed, so encoding is None
     base, ext = posixpath.splitext(url)
     while suffix_map.has_key(ext):
         base, ext = posixpath.splitext(base + suffix_map[ext])