diff options
author | Allan Saddi <allan@saddi.com> | 2006-11-19 17:34:03 +0000 |
---|---|---|
committer | Allan Saddi <allan@saddi.com> | 2006-11-19 17:34:03 +0000 |
commit | 65ea60c2da764b2ef167e9d60aa8d9ef0ce2773a (patch) | |
tree | 6d9b8f09f6ec68e5d1a1271800942e5124f2d558 /flup | |
parent | c7de6f6e43d9d1747eb470f7aa83c73fbbec0f65 (diff) | |
download | flup-65ea60c2da764b2ef167e9d60aa8d9ef0ce2773a.tar.gz |
Change mime-type matching algorithm in GzipMiddleware.
Strip parameters (e.g. "encoding") and accept a list of
regexps. By default, compress 'text/.*' mime-types.
Diffstat (limited to 'flup')
-rw-r--r-- | flup/middleware/gzip.py | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/flup/middleware/gzip.py b/flup/middleware/gzip.py index 4f4b7b1..b1f0732 100644 --- a/flup/middleware/gzip.py +++ b/flup/middleware/gzip.py @@ -30,6 +30,7 @@ __version__ = '$Revision$' import struct import time import zlib +import re __all__ = ['GzipMiddleware'] @@ -156,8 +157,12 @@ class _gzipMiddleware(object): # already contain Content-Encoding. for name,value in headers: name = name.lower() - if name == 'content-type' and value in self._mimeTypes: - self.gzipOk = True + if name == 'content-type': + value = value.split(';')[0].strip() + for p in self._mimeTypes: + if p.match(value) is not None: + self.gzipOk = True + break elif name == 'content-encoding': self.gzipOk = False break @@ -193,10 +198,10 @@ class GzipMiddleware(object): """ def __init__(self, application, mimeTypes=None, compresslevel=9): if mimeTypes is None: - mimeTypes = ['text/html'] + mimeTypes = ['text/.*'] self._application = application - self._mimeTypes = mimeTypes + self._mimeTypes = [re.compile(m) for m in mimeTypes] self._compresslevel = compresslevel def __call__(self, environ, start_response): |