Update handler.py
This commit is contained in:
parent
da3342f1aa
commit
3a58aee32b
1 changed files with 17 additions and 4 deletions
|
@ -21,6 +21,11 @@ _LOGGER = logging.getLogger(__name__)
|
||||||
X_HASSIO = 'X-HASSIO-KEY'
|
X_HASSIO = 'X-HASSIO-KEY'
|
||||||
|
|
||||||
|
|
||||||
|
class HassioAPIError(RuntimeError):
|
||||||
|
"""Return if a API trow a error."""
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
def _api_bool(funct):
|
def _api_bool(funct):
|
||||||
"""Return a boolean."""
|
"""Return a boolean."""
|
||||||
async def _wrapper(*argv, **kwargs):
|
async def _wrapper(*argv, **kwargs):
|
||||||
|
@ -36,9 +41,9 @@ def _api_data(funct):
|
||||||
async def _wrapper(*argv, **kwargs):
|
async def _wrapper(*argv, **kwargs):
|
||||||
"""Wrap function."""
|
"""Wrap function."""
|
||||||
data = await funct(*argv, **kwargs)
|
data = await funct(*argv, **kwargs)
|
||||||
if data and data['result'] == "ok":
|
if data['result'] == "ok":
|
||||||
return data['data']
|
return data['data']
|
||||||
return None
|
raise HassioAPIError(data['message'])
|
||||||
|
|
||||||
return _wrapper
|
return _wrapper
|
||||||
|
|
||||||
|
@ -91,6 +96,14 @@ class HassIO:
|
||||||
"""
|
"""
|
||||||
return self.send_command("/homeassistant/check", timeout=300)
|
return self.send_command("/homeassistant/check", timeout=300)
|
||||||
|
|
||||||
|
@_api_data
|
||||||
|
def retrieve_services_discovery(self):
|
||||||
|
"""Return all discovery data from Hass.io API.
|
||||||
|
|
||||||
|
This method return a coroutine.
|
||||||
|
"""
|
||||||
|
return self.send_command("/services/discovery", method="get")
|
||||||
|
|
||||||
@_api_bool
|
@_api_bool
|
||||||
async def update_hass_api(self, http_config, refresh_token):
|
async def update_hass_api(self, http_config, refresh_token):
|
||||||
"""Update Home Assistant API data on Hass.io."""
|
"""Update Home Assistant API data on Hass.io."""
|
||||||
|
@ -137,7 +150,7 @@ class HassIO:
|
||||||
if request.status not in (200, 400):
|
if request.status not in (200, 400):
|
||||||
_LOGGER.error(
|
_LOGGER.error(
|
||||||
"%s return code %d.", command, request.status)
|
"%s return code %d.", command, request.status)
|
||||||
return None
|
raise HassioAPIError()
|
||||||
|
|
||||||
answer = yield from request.json()
|
answer = yield from request.json()
|
||||||
return answer
|
return answer
|
||||||
|
@ -148,4 +161,4 @@ class HassIO:
|
||||||
except aiohttp.ClientError as err:
|
except aiohttp.ClientError as err:
|
||||||
_LOGGER.error("Client error on %s request %s", command, err)
|
_LOGGER.error("Client error on %s request %s", command, err)
|
||||||
|
|
||||||
return None
|
raise HassioAPIError()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue