summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAllan Saddi <allan@saddi.com>2006-11-19 17:34:03 +0000
committerAllan Saddi <allan@saddi.com>2006-11-19 17:34:03 +0000
commit65ea60c2da764b2ef167e9d60aa8d9ef0ce2773a (patch)
tree6d9b8f09f6ec68e5d1a1271800942e5124f2d558
parentc7de6f6e43d9d1747eb470f7aa83c73fbbec0f65 (diff)
downloadflup-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.
-rw-r--r--ChangeLog6
-rw-r--r--flup/middleware/gzip.py13
2 files changed, 15 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index 8aa2705..325fe08 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2006-11-19 Allan Saddi <asaddi@europa.saddi.net>
+
+ * Change mime-type matching algorithm in GzipMiddleware.
+ Strip parameters (e.g. "encoding") and accept a list of
+ regexps. By default, compress 'text/.*' mime-types.
+
2006-11-10 Allan Saddi <asaddi@europa.saddi.net>
* Add cookieAttributes to SessionService to make it easier
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):