Add message from Bad Request errors to HassioAPIError (#113144)

Co-authored-by: Mike Degatano <michael.degatano@gmail.com>
This commit is contained in:
Stefan Agner 2024-03-13 11:29:39 +01:00 committed by GitHub
parent 6ecafbcc2c
commit 99eaa07f6f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 47 additions and 10 deletions

View file

@ -22,7 +22,7 @@ from homeassistant.const import SERVER_PORT
from homeassistant.core import HomeAssistant
from homeassistant.loader import bind_hass
from .const import ATTR_DISCOVERY, DOMAIN, X_HASS_SOURCE
from .const import ATTR_DISCOVERY, ATTR_MESSAGE, ATTR_RESULT, DOMAIN, X_HASS_SOURCE
_P = ParamSpec("_P")
@ -577,7 +577,7 @@ class HassIO:
raise HassioAPIError()
try:
request = await self.websession.request(
response = await self.websession.request(
method,
joined_url,
json=payload,
@ -590,14 +590,23 @@ class HassIO:
timeout=aiohttp.ClientTimeout(total=timeout),
)
if request.status != HTTPStatus.OK:
_LOGGER.error("%s return code %d", command, request.status)
if response.status != HTTPStatus.OK:
error = await response.json(encoding="utf-8")
if error.get(ATTR_RESULT) == "error":
raise HassioAPIError(error.get(ATTR_MESSAGE))
_LOGGER.error(
"Request to %s method %s returned with code %d",
command,
method,
response.status,
)
raise HassioAPIError()
if return_text:
return await request.text(encoding="utf-8")
return await response.text(encoding="utf-8")
return await request.json(encoding="utf-8")
return await response.json(encoding="utf-8")
except TimeoutError:
_LOGGER.error("Timeout on %s request", command)