mirror of
https://github.com/home-assistant/core.git
synced 2026-05-08 17:49:37 +01:00
Move roku service registration (#162128)
This commit is contained in:
@@ -4,9 +4,14 @@ from __future__ import annotations
|
||||
|
||||
from homeassistant.const import Platform
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.helpers import config_validation as cv
|
||||
from homeassistant.helpers.typing import ConfigType
|
||||
|
||||
from .const import DOMAIN
|
||||
from .coordinator import RokuConfigEntry, RokuDataUpdateCoordinator
|
||||
from .services import async_setup_services
|
||||
|
||||
CONFIG_SCHEMA = cv.config_entry_only_config_schema(DOMAIN)
|
||||
PLATFORMS = [
|
||||
Platform.BINARY_SENSOR,
|
||||
Platform.MEDIA_PLAYER,
|
||||
@@ -16,6 +21,12 @@ PLATFORMS = [
|
||||
]
|
||||
|
||||
|
||||
async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
|
||||
"""Set up the component."""
|
||||
async_setup_services(hass)
|
||||
return True
|
||||
|
||||
|
||||
async def async_setup_entry(hass: HomeAssistant, entry: RokuConfigEntry) -> bool:
|
||||
"""Set up Roku from a config entry."""
|
||||
coordinator = RokuDataUpdateCoordinator(hass, entry)
|
||||
|
||||
@@ -6,15 +6,12 @@ DOMAIN = "roku"
|
||||
ATTR_ARTIST_NAME = "artist_name"
|
||||
ATTR_CONTENT_ID = "content_id"
|
||||
ATTR_FORMAT = "format"
|
||||
ATTR_KEYWORD = "keyword"
|
||||
ATTR_MEDIA_TYPE = "media_type"
|
||||
ATTR_THUMBNAIL = "thumbnail"
|
||||
|
||||
# Default Values
|
||||
DEFAULT_PORT = 8060
|
||||
|
||||
# Services
|
||||
SERVICE_SEARCH = "search"
|
||||
|
||||
# Config
|
||||
CONF_PLAY_MEDIA_APP_ID = "play_media_app_id"
|
||||
|
||||
@@ -8,7 +8,6 @@ import mimetypes
|
||||
from typing import Any
|
||||
|
||||
from rokuecp.helpers import guess_stream_format
|
||||
import voluptuous as vol
|
||||
import yarl
|
||||
|
||||
from homeassistant.components import media_source
|
||||
@@ -25,19 +24,15 @@ from homeassistant.components.media_player import (
|
||||
from homeassistant.components.stream import FORMAT_CONTENT_TYPE, HLS_PROVIDER
|
||||
from homeassistant.const import ATTR_NAME
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.helpers import entity_platform
|
||||
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
|
||||
from homeassistant.helpers.typing import VolDictType
|
||||
|
||||
from .browse_media import async_browse_media
|
||||
from .const import (
|
||||
ATTR_ARTIST_NAME,
|
||||
ATTR_CONTENT_ID,
|
||||
ATTR_FORMAT,
|
||||
ATTR_KEYWORD,
|
||||
ATTR_MEDIA_TYPE,
|
||||
ATTR_THUMBNAIL,
|
||||
SERVICE_SEARCH,
|
||||
)
|
||||
from .coordinator import RokuConfigEntry, RokuDataUpdateCoordinator
|
||||
from .entity import RokuEntity
|
||||
@@ -76,8 +71,6 @@ ATTRS_TO_PLAY_ON_ROKU_AUDIO_PARAMS = {
|
||||
ATTR_THUMBNAIL: "albumArtUrl",
|
||||
}
|
||||
|
||||
SEARCH_SCHEMA: VolDictType = {vol.Required(ATTR_KEYWORD): str}
|
||||
|
||||
PARALLEL_UPDATES = 1
|
||||
|
||||
|
||||
@@ -96,14 +89,6 @@ async def async_setup_entry(
|
||||
True,
|
||||
)
|
||||
|
||||
platform = entity_platform.async_get_current_platform()
|
||||
|
||||
platform.async_register_entity_service(
|
||||
SERVICE_SEARCH,
|
||||
SEARCH_SCHEMA,
|
||||
"search",
|
||||
)
|
||||
|
||||
|
||||
class RokuMediaPlayer(RokuEntity, MediaPlayerEntity):
|
||||
"""Representation of a Roku media player on the network."""
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
"""Support for the Roku media player."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import voluptuous as vol
|
||||
|
||||
from homeassistant.components.media_player import DOMAIN as MEDIA_PLAYER_DOMAIN
|
||||
from homeassistant.core import HomeAssistant, callback
|
||||
from homeassistant.helpers import service
|
||||
from homeassistant.helpers.typing import VolDictType
|
||||
|
||||
from .const import DOMAIN
|
||||
|
||||
ATTR_KEYWORD = "keyword"
|
||||
|
||||
SERVICE_SEARCH = "search"
|
||||
|
||||
SEARCH_SCHEMA: VolDictType = {vol.Required(ATTR_KEYWORD): str}
|
||||
|
||||
|
||||
@callback
|
||||
def async_setup_services(hass: HomeAssistant) -> None:
|
||||
"""Set up services."""
|
||||
service.async_register_platform_entity_service(
|
||||
hass,
|
||||
DOMAIN,
|
||||
SERVICE_SEARCH,
|
||||
entity_domain=MEDIA_PLAYER_DOMAIN,
|
||||
schema=SEARCH_SCHEMA,
|
||||
func="search",
|
||||
)
|
||||
@@ -30,12 +30,11 @@ from homeassistant.components.media_player import (
|
||||
from homeassistant.components.roku.const import (
|
||||
ATTR_CONTENT_ID,
|
||||
ATTR_FORMAT,
|
||||
ATTR_KEYWORD,
|
||||
ATTR_MEDIA_TYPE,
|
||||
DEFAULT_PLAY_MEDIA_APP_ID,
|
||||
DOMAIN,
|
||||
SERVICE_SEARCH,
|
||||
)
|
||||
from homeassistant.components.roku.services import ATTR_KEYWORD, SERVICE_SEARCH
|
||||
from homeassistant.components.stream import FORMAT_CONTENT_TYPE, HLS_PROVIDER
|
||||
from homeassistant.components.websocket_api import TYPE_RESULT
|
||||
from homeassistant.const import (
|
||||
|
||||
Reference in New Issue
Block a user