Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We鈥檒l occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use json_loads by default for the aiohttp helper #75214

Merged
merged 6 commits into from Jul 14, 2022
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
22 changes: 20 additions & 2 deletions homeassistant/helpers/aiohttp_client.py
Expand Up @@ -7,7 +7,7 @@
from ssl import SSLContext
import sys
from types import MappingProxyType
from typing import Any, cast
from typing import TYPE_CHECKING, Any, cast

import aiohttp
from aiohttp import web
Expand All @@ -22,7 +22,11 @@
from homeassistant.util import ssl as ssl_util

from .frame import warn_use
from .json import json_dumps
from .json import json_dumps, json_loads

if TYPE_CHECKING:
from aiohttp.typedefs import JSONDecoder


DATA_CONNECTOR = "aiohttp_connector"
DATA_CONNECTOR_NOTVERIFY = "aiohttp_connector_notverify"
Expand All @@ -35,6 +39,19 @@
WARN_CLOSE_MSG = "closes the Home Assistant aiohttp session"


class HassClientResponse(aiohttp.ClientResponse):
"""aiohttp.ClientResponse with a json method that uses json_loads by default."""

async def json(
self,
*args: Any,
loads: JSONDecoder = json_loads,
**kwargs: Any,
) -> Any:
"""Send a json request and parse the json response."""
return await super().json(*args, loads=loads, **kwargs)


@callback
@bind_hass
def async_get_clientsession(
Expand Down Expand Up @@ -99,6 +116,7 @@ def _async_create_clientsession(
clientsession = aiohttp.ClientSession(
connector=_async_get_connector(hass, verify_ssl),
json_serialize=json_dumps,
response_class=HassClientResponse,
**kwargs,
)
# Prevent packages accidentally overriding our default headers
Expand Down