From e3c9f5951acca75cda73fbbd705968ff347b6b9b Mon Sep 17 00:00:00 2001 From: Daniel Grana Date: Wed, 4 Mar 2009 20:11:12 +0000 Subject: [PATCH] contrib: fix a header bug in httpcompression middleware and add tests --HG-- extra : convert_revision : svn%3Ab85faa78-f9eb-468e-a121-7cced6da292c%40969 --- .../downloadermiddleware/httpcompression.py | 11 +- .../sample_data/compressed/html-gzip.bin | Bin 0 -> 8037 bytes .../compressed/html-rawdeflate.bin | Bin 0 -> 8021 bytes .../compressed/html-zlibdeflate.bin | Bin 0 -> 8027 bytes ...st_downloadermiddleware_httpcompression.py | 99 ++++++++++++++++++ 5 files changed, 105 insertions(+), 5 deletions(-) create mode 100644 scrapy/trunk/scrapy/tests/sample_data/compressed/html-gzip.bin create mode 100644 scrapy/trunk/scrapy/tests/sample_data/compressed/html-rawdeflate.bin create mode 100644 scrapy/trunk/scrapy/tests/sample_data/compressed/html-zlibdeflate.bin create mode 100644 scrapy/trunk/scrapy/tests/test_downloadermiddleware_httpcompression.py diff --git a/scrapy/trunk/scrapy/contrib/downloadermiddleware/httpcompression.py b/scrapy/trunk/scrapy/contrib/downloadermiddleware/httpcompression.py index 3ce10f914..a2de8757d 100644 --- a/scrapy/trunk/scrapy/contrib/downloadermiddleware/httpcompression.py +++ b/scrapy/trunk/scrapy/contrib/downloadermiddleware/httpcompression.py @@ -14,13 +14,14 @@ class HttpCompressionMiddleware(object): def process_response(self, request, response, spider): if isinstance(response, Response): - content_encoding = response.headers.get('Content-Encoding') + content_encoding = response.headers.getlist('Content-Encoding') if content_encoding: - encoding = content_encoding[0].lower() - raw_body = response.body - decoded_body = self._decode(raw_body, encoding) + encoding = content_encoding.pop() + decoded_body = self._decode(response.body, encoding.lower()) response = response.replace(body=decoded_body) - response.headers['Content-Encoding'] = content_encoding[1:] + if not content_encoding: + del response.headers['Content-Encoding'] + return response def _decode(self, body, encoding): diff --git a/scrapy/trunk/scrapy/tests/sample_data/compressed/html-gzip.bin b/scrapy/trunk/scrapy/tests/sample_data/compressed/html-gzip.bin new file mode 100644 index 0000000000000000000000000000000000000000..5e4f489b4b6fce3c6ae939bfa1b562d5389cfe8c GIT binary patch literal 8037 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 literal 0 HcmV?d00001 diff --git a/scrapy/trunk/scrapy/tests/sample_data/compressed/html-rawdeflate.bin b/scrapy/trunk/scrapy/tests/sample_data/compressed/html-rawdeflate.bin new file mode 100644 index 0000000000000000000000000000000000000000..14e5cda2a623cd63add80afc4cd6d44edbe7ea20 GIT binary patch literal 8021 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 W2KABmJ)K&k5}bRLoQ>*t1pfmpO26y? literal 0 HcmV?d00001 diff --git a/scrapy/trunk/scrapy/tests/sample_data/compressed/html-zlibdeflate.bin b/scrapy/trunk/scrapy/tests/sample_data/compressed/html-zlibdeflate.bin new file mode 100644 index 0000000000000000000000000000000000000000..b4554a9795c684d70d51dce1af45b9cd0ddea8fd GIT binary patch literal 8027 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 cmHYURW*->l~T2LXM