Make name a top-level key for SSDP discovery WebSocket API (#143923)

This commit is contained in:
J. Nick Koston 2025-04-30 09:40:15 +02:00 committed by GitHub
parent c562cba030
commit 4b6fa12925
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 24 additions and 4 deletions

View File

@ -10,7 +10,10 @@ import voluptuous as vol
from homeassistant.components import websocket_api
from homeassistant.core import HassJob, HomeAssistant, callback
from homeassistant.helpers.json import json_bytes
from homeassistant.helpers.service_info.ssdp import SsdpServiceInfo
from homeassistant.helpers.service_info.ssdp import (
ATTR_UPNP_FRIENDLY_NAME,
SsdpServiceInfo,
)
from .const import DOMAIN, SSDP_SCANNER
from .scanner import Scanner, SsdpChange
@ -47,7 +50,13 @@ async def ws_subscribe_discovery(
@callback
def _async_on_data(info: SsdpServiceInfo, change: SsdpChange) -> None:
if change is not SsdpChange.BYEBYE:
_async_event_message({"add": [asdict(info)]})
_async_event_message(
{
"add": [
{"name": info.upnp.get(ATTR_UPNP_FRIENDLY_NAME), **asdict(info)}
]
}
)
return
remove_msg = {
FIELD_SSDP_ST: info.ssdp_st,

View File

@ -29,6 +29,7 @@ async def test_subscribe_discovery(
<root>
<device>
<deviceType>Paulus</deviceType>
<friendlyName>Bedroom TV</friendlyName>
</device>
</root>
""",
@ -80,7 +81,12 @@ async def test_subscribe_discovery(
"ssdp_st": "mock-st",
"ssdp_udn": "uuid:mock-udn",
"ssdp_usn": "uuid:mock-udn::mock-st",
"upnp": {"UDN": "uuid:mock-udn", "deviceType": "Paulus"},
"upnp": {
"UDN": "uuid:mock-udn",
"deviceType": "Paulus",
"friendlyName": "Bedroom TV",
},
"name": "Bedroom TV",
"x_homeassistant_matching_domains": [],
}
]
@ -119,7 +125,12 @@ async def test_subscribe_discovery(
"ssdp_st": "upnp:rootdevice",
"ssdp_udn": "uuid:mock-udn",
"ssdp_usn": "uuid:mock-udn::mock-st",
"upnp": {"UDN": "uuid:mock-udn", "deviceType": "Paulus"},
"upnp": {
"UDN": "uuid:mock-udn",
"deviceType": "Paulus",
"friendlyName": "Bedroom TV",
},
"name": "Bedroom TV",
"x_homeassistant_matching_domains": ["mock-domain"],
}
]