From 391783a8b676a7e724403e643903708fe18025ac Mon Sep 17 00:00:00 2001 From: Laurent Bachelier Date: Fri, 9 Mar 2012 01:35:51 +0100 Subject: [PATCH] Support gzipped responses --- weboob/tools/browser/browser.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/weboob/tools/browser/browser.py b/weboob/tools/browser/browser.py index 1e598083..86e60e6a 100644 --- a/weboob/tools/browser/browser.py +++ b/weboob/tools/browser/browser.py @@ -32,6 +32,8 @@ import time import urllib import urllib2 import mimetypes +from contextlib import closing +from gzip import GzipFile from weboob.tools.decorators import retry from weboob.tools.log import getLogger @@ -530,6 +532,16 @@ class BaseBrowser(StandardBrowser): # print time.time() # mechanize.Browser._set_response(self, response, *args, **kwargs) + def _set_response(self, response, *args, **kwargs): + # Support Gzip, because mechanize does not, and some websites always send gzip + if response and hasattr(response, 'set_data'): + headers = response.info() + if headers.get('Content-Encoding', '') == 'gzip': + with closing(GzipFile(fileobj=response, mode='rb')) as gz: + data = gz.read() + response.set_data(data) + mechanize.Browser._set_response(self, response, *args, **kwargs) + def _change_location(self, result, no_login=False): """ This function is called when we have moved to a page, to load a Page