Commit 1c5fb1cd authored by Guido van Rossum's avatar Guido van Rossum

Make mimetypes.guess_type understand data URLs. (Sjoerd Mullender)

parent 8571ed86
......@@ -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])
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment