From 64da8cd47db8eb42ef8f7b3bd33f9a9922daa946 Mon Sep 17 00:00:00 2001 From: Klaas Hoekema Date: Mon, 24 Apr 2017 02:58:17 -0400 Subject: [PATCH] Work around bad content-type in Hook api response (#7267) --- homeassistant/components/switch/hook.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/switch/hook.py b/homeassistant/components/switch/hook.py index 58d3813f6fa..00fb7fdd909 100644 --- a/homeassistant/components/switch/hook.py +++ b/homeassistant/components/switch/hook.py @@ -47,7 +47,9 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None): data={ 'username': username, 'password': password}) - data = yield from response.json() + # The Hook API returns JSON but calls it 'text/html'. Setting + # content_type=None disables aiohttp's content-type validation. + data = yield from response.json(content_type=None) except (asyncio.TimeoutError, aiohttp.ClientError) as error: _LOGGER.error("Failed authentication API call: %s", error) return False @@ -63,7 +65,7 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None): response = yield from websession.get( '{}{}'.format(HOOK_ENDPOINT, 'device'), params={"token": token}) - data = yield from response.json() + data = yield from response.json(content_type=None) except (asyncio.TimeoutError, aiohttp.ClientError) as error: _LOGGER.error("Failed getting devices: %s", error) return False @@ -110,7 +112,7 @@ class HookSmartHome(SwitchDevice): with async_timeout.timeout(TIMEOUT, loop=self.hass.loop): response = yield from websession.get( url, params={"token": self._token}) - data = yield from response.json() + data = yield from response.json(content_type=None) except (asyncio.TimeoutError, aiohttp.ClientError) as error: _LOGGER.error("Failed setting state: %s", error)