Convert async_get_webrtc_client_configuration to a callback (#129329)

This commit is contained in:
Robert Resch 2024-10-28 15:47:22 +01:00 committed by GitHub
parent 675ee8e813
commit aa855e31c8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 13 additions and 10 deletions

View File

@ -803,14 +803,16 @@ class Camera(Entity, cached_properties=CACHED_PROPERTIES_WITH_ATTR_):
return await fn(self.hass, self) return await fn(self.hass, self)
async def _async_get_webrtc_client_configuration(self) -> WebRTCClientConfiguration: @callback
def _async_get_webrtc_client_configuration(self) -> WebRTCClientConfiguration:
"""Return the WebRTC client configuration adjustable per integration.""" """Return the WebRTC client configuration adjustable per integration."""
return WebRTCClientConfiguration() return WebRTCClientConfiguration()
@final @final
async def async_get_webrtc_client_configuration(self) -> WebRTCClientConfiguration: @callback
def async_get_webrtc_client_configuration(self) -> WebRTCClientConfiguration:
"""Return the WebRTC client configuration and extend it with the registered ice servers.""" """Return the WebRTC client configuration and extend it with the registered ice servers."""
config = await self._async_get_webrtc_client_configuration() config = self._async_get_webrtc_client_configuration()
ice_servers = [ ice_servers = [
server server

View File

@ -287,7 +287,7 @@ async def ws_get_client_config(
) )
return return
config = (await camera.async_get_webrtc_client_configuration()).to_frontend_dict() config = camera.async_get_webrtc_client_configuration().to_frontend_dict()
connection.send_result( connection.send_result(
msg["id"], msg["id"],
config, config,

View File

@ -28,7 +28,7 @@ from homeassistant.components.camera import (
) )
from homeassistant.components.stream import CONF_EXTRA_PART_WAIT_TIME from homeassistant.components.stream import CONF_EXTRA_PART_WAIT_TIME
from homeassistant.config_entries import ConfigEntry from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant, callback
from homeassistant.exceptions import HomeAssistantError from homeassistant.exceptions import HomeAssistantError
from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.helpers.event import async_track_point_in_utc_time from homeassistant.helpers.event import async_track_point_in_utc_time
@ -216,6 +216,7 @@ class NestCamera(Camera):
raise HomeAssistantError(f"Nest API error: {err}") from err raise HomeAssistantError(f"Nest API error: {err}") from err
return stream.answer_sdp return stream.answer_sdp
async def _async_get_webrtc_client_configuration(self) -> WebRTCClientConfiguration: @callback
def _async_get_webrtc_client_configuration(self) -> WebRTCClientConfiguration:
"""Return the WebRTC client configuration adjustable per integration.""" """Return the WebRTC client configuration adjustable per integration."""
return WebRTCClientConfiguration(data_channel="dataSendChannel") return WebRTCClientConfiguration(data_channel="dataSendChannel")

View File

@ -250,7 +250,7 @@ async def test_async_register_ice_server(
assert not called assert not called
camera = get_camera_from_entity_id(hass, "camera.demo_camera") camera = get_camera_from_entity_id(hass, "camera.demo_camera")
config = await camera.async_get_webrtc_client_configuration() config = camera.async_get_webrtc_client_configuration()
assert config.configuration.ice_servers == [ assert config.configuration.ice_servers == [
RTCIceServer(urls="stun:example.com"), RTCIceServer(urls="stun:example.com"),
@ -275,7 +275,7 @@ async def test_async_register_ice_server(
unregister_2 = async_register_ice_servers(hass, get_ice_servers_2) unregister_2 = async_register_ice_servers(hass, get_ice_servers_2)
config = await camera.async_get_webrtc_client_configuration() config = camera.async_get_webrtc_client_configuration()
assert config.configuration.ice_servers == [ assert config.configuration.ice_servers == [
RTCIceServer(urls="stun:example.com"), RTCIceServer(urls="stun:example.com"),
RTCIceServer(urls="turn:example.com"), RTCIceServer(urls="turn:example.com"),
@ -292,7 +292,7 @@ async def test_async_register_ice_server(
unregister() unregister()
config = await camera.async_get_webrtc_client_configuration() config = camera.async_get_webrtc_client_configuration()
assert config.configuration.ice_servers == [ assert config.configuration.ice_servers == [
RTCIceServer( RTCIceServer(
urls=["stun:example2.com", "turn:example2.com"], urls=["stun:example2.com", "turn:example2.com"],
@ -306,7 +306,7 @@ async def test_async_register_ice_server(
# unregister the second ICE server # unregister the second ICE server
unregister_2() unregister_2()
config = await camera.async_get_webrtc_client_configuration() config = camera.async_get_webrtc_client_configuration()
assert config.configuration.ice_servers == [] assert config.configuration.ice_servers == []