Implemented gzip compression

Also rewritten fetch gzip logic.
This commit is contained in:
Laszlo Zeke 2020-09-04 23:11:44 +02:00
parent e8f89e9d44
commit f8321aea0d
1 changed files with 7 additions and 4 deletions

View File

@ -14,7 +14,7 @@
# limitations under the License.
#
from flask import abort, Flask
from flask import abort, Flask, request
import urllib
import json
import datetime
@ -72,6 +72,11 @@ def get_inner(channel, add_live=True):
decoded_json = json.loads(channel_json)
rss_data = construct_rss(channel, decoded_json, channel_display_name, add_live)
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
@ -100,9 +105,7 @@ def fetch_json(id, url_template):
logging.debug('Fetch from twitch for %s with code %s' % (id, result.getcode()))
if result.info().get('Content-Encoding') == 'gzip':
logging.debug('Fetched gzip content')
buf = BytesIO(result.read())
f = gzip.GzipFile(fileobj=buf)
return f.read()
return gzip.decompress(result.read())
return result.read()
except Exception as e:
logging.warning("Fetch exception caught: %s" % e)