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,