From 1c5fb1cd1ba069234f21b2da8e31818f4c56531b Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Mon, 12 Oct 1998 15:12:28 +0000 Subject: [PATCH] Make mimetypes.guess_type understand data URLs. (Sjoerd Mullender) --- Lib/mimetypes.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/Lib/mimetypes.py b/Lib/mimetypes.py index b35d0ff84b..3d6510e23d 100644 --- a/Lib/mimetypes.py +++ b/Lib/mimetypes.py @@ -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]) -- 2.50.1