Implemented gzip compression
Also rewritten fetch gzip logic.
This commit is contained in:
parent
e8f89e9d44
commit
f8321aea0d
|
@ -14,7 +14,7 @@
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
#
|
#
|
||||||
|
|
||||||
from flask import abort, Flask
|
from flask import abort, Flask, request
|
||||||
import urllib
|
import urllib
|
||||||
import json
|
import json
|
||||||
import datetime
|
import datetime
|
||||||
|
@ -72,6 +72,11 @@ def get_inner(channel, add_live=True):
|
||||||
decoded_json = json.loads(channel_json)
|
decoded_json = json.loads(channel_json)
|
||||||
rss_data = construct_rss(channel, decoded_json, channel_display_name, add_live)
|
rss_data = construct_rss(channel, decoded_json, channel_display_name, add_live)
|
||||||
headers = {'Content-Type': 'application/rss+xml'}
|
headers = {'Content-Type': 'application/rss+xml'}
|
||||||
|
|
||||||
|
if 'gzip' in request.headers.get("Accept-Encoding", ''):
|
||||||
|
headers['Content-Encoding'] = 'gzip'
|
||||||
|
rss_data = gzip.compress(rss_data)
|
||||||
|
|
||||||
return rss_data, headers
|
return rss_data, headers
|
||||||
|
|
||||||
|
|
||||||
|
@ -100,9 +105,7 @@ def fetch_json(id, url_template):
|
||||||
logging.debug('Fetch from twitch for %s with code %s' % (id, result.getcode()))
|
logging.debug('Fetch from twitch for %s with code %s' % (id, result.getcode()))
|
||||||
if result.info().get('Content-Encoding') == 'gzip':
|
if result.info().get('Content-Encoding') == 'gzip':
|
||||||
logging.debug('Fetched gzip content')
|
logging.debug('Fetched gzip content')
|
||||||
buf = BytesIO(result.read())
|
return gzip.decompress(result.read())
|
||||||
f = gzip.GzipFile(fileobj=buf)
|
|
||||||
return f.read()
|
|
||||||
return result.read()
|
return result.read()
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logging.warning("Fetch exception caught: %s" % e)
|
logging.warning("Fetch exception caught: %s" % e)
|
||||||
|
|
Loading…
Reference in New Issue