"""The Network Configuration integration websocket commands.""" from __future__ import annotations import voluptuous as vol from homeassistant.components import websocket_api from homeassistant.components.websocket_api.connection import ActiveConnection from homeassistant.core import HomeAssistant, callback from .const import ATTR_ADAPTERS, ATTR_CONFIGURED_ADAPTERS, NETWORK_CONFIG_SCHEMA from .network import async_get_network @callback def async_register_websocket_commands(hass: HomeAssistant) -> None: """Register network websocket commands.""" websocket_api.async_register_command(hass, websocket_network_adapters) websocket_api.async_register_command(hass, websocket_network_adapters_configure) @websocket_api.require_admin @websocket_api.websocket_command({vol.Required("type"): "network"}) @websocket_api.async_response async def websocket_network_adapters( hass: HomeAssistant, connection: ActiveConnection, msg: dict, ) -> None: """Return network preferences.""" network = await async_get_network(hass) connection.send_result( msg["id"], { ATTR_ADAPTERS: network.adapters, ATTR_CONFIGURED_ADAPTERS: network.configured_adapters, }, ) @websocket_api.require_admin @websocket_api.websocket_command( { vol.Required("type"): "network/configure", vol.Required("config", default={}): NETWORK_CONFIG_SCHEMA, } ) @websocket_api.async_response async def websocket_network_adapters_configure( hass: HomeAssistant, connection: ActiveConnection, msg: dict, ) -> None: """Update network config.""" network = await async_get_network(hass) await network.async_reconfig(msg["config"]) connection.send_result( msg["id"], {ATTR_CONFIGURED_ADAPTERS: network.configured_adapters}, )