From 1750b22e5987684d9b7a2857bddbfecf8fb5157d Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 16 May 2016 22:24:57 -0700 Subject: [PATCH] Gzip all the things --- homeassistant/components/http.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/http.py b/homeassistant/components/http.py index 864e517699b..1be5e62072b 100644 --- a/homeassistant/components/http.py +++ b/homeassistant/components/http.py @@ -1,5 +1,6 @@ """This module provides WSGI application to serve the Home Assistant API.""" import hmac +import gzip import json import logging import mimetypes @@ -258,7 +259,16 @@ class HomeAssistantWSGI(object): adapter = self.url_map.bind_to_environ(request.environ) try: endpoint, values = adapter.match() - return self.views[endpoint].handle_request(request, **values) + resp = self.views[endpoint].handle_request(request, **values) + + if resp.is_streamed or 200 > resp.status_code >= 300 or \ + 'gzip' not in request.accept_encodings: + return resp + + resp.headers.extend([('Content-Encoding', 'gzip'), + ('Vary', 'Accept-Encoding')]) + resp.data = gzip.compress(b''.join(resp.iter_encoded())) + return resp except RequestRedirect as ex: return ex except (BadRequest, NotFound, MethodNotAllowed,