mirror of
https://github.com/home-assistant/core.git
synced 2025-07-23 13:17:32 +00:00
Make unknown media source exception translatable (#143208)
This commit is contained in:
parent
45022752a0
commit
221a8597da
@ -33,7 +33,7 @@ from .const import (
|
|||||||
URI_SCHEME,
|
URI_SCHEME,
|
||||||
URI_SCHEME_REGEX,
|
URI_SCHEME_REGEX,
|
||||||
)
|
)
|
||||||
from .error import MediaSourceError, Unresolvable
|
from .error import MediaSourceError, UnknownMediaSource, Unresolvable
|
||||||
from .models import BrowseMediaSource, MediaSource, MediaSourceItem, PlayMedia
|
from .models import BrowseMediaSource, MediaSource, MediaSourceItem, PlayMedia
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
@ -113,7 +113,11 @@ def _get_media_item(
|
|||||||
return MediaSourceItem(hass, domain, "", target_media_player)
|
return MediaSourceItem(hass, domain, "", target_media_player)
|
||||||
|
|
||||||
if item.domain is not None and item.domain not in hass.data[DOMAIN]:
|
if item.domain is not None and item.domain not in hass.data[DOMAIN]:
|
||||||
raise ValueError("Unknown media source")
|
raise UnknownMediaSource(
|
||||||
|
translation_domain=DOMAIN,
|
||||||
|
translation_key="unknown_media_source",
|
||||||
|
translation_placeholders={"domain": item.domain},
|
||||||
|
)
|
||||||
|
|
||||||
return item
|
return item
|
||||||
|
|
||||||
@ -132,7 +136,14 @@ async def async_browse_media(
|
|||||||
try:
|
try:
|
||||||
item = await _get_media_item(hass, media_content_id, None).async_browse()
|
item = await _get_media_item(hass, media_content_id, None).async_browse()
|
||||||
except ValueError as err:
|
except ValueError as err:
|
||||||
raise BrowseError(str(err)) from err
|
raise BrowseError(
|
||||||
|
translation_domain=DOMAIN,
|
||||||
|
translation_key="browse_media_failed",
|
||||||
|
translation_placeholders={
|
||||||
|
"media_content_id": str(media_content_id),
|
||||||
|
"error": str(err),
|
||||||
|
},
|
||||||
|
) from err
|
||||||
|
|
||||||
if content_filter is None or item.children is None:
|
if content_filter is None or item.children is None:
|
||||||
return item
|
return item
|
||||||
@ -165,7 +176,14 @@ async def async_resolve_media(
|
|||||||
try:
|
try:
|
||||||
item = _get_media_item(hass, media_content_id, target_media_player)
|
item = _get_media_item(hass, media_content_id, target_media_player)
|
||||||
except ValueError as err:
|
except ValueError as err:
|
||||||
raise Unresolvable(str(err)) from err
|
raise Unresolvable(
|
||||||
|
translation_domain=DOMAIN,
|
||||||
|
translation_key="resolve_media_failed",
|
||||||
|
translation_placeholders={
|
||||||
|
"media_content_id": str(media_content_id),
|
||||||
|
"error": str(err),
|
||||||
|
},
|
||||||
|
) from err
|
||||||
|
|
||||||
return await item.async_resolve()
|
return await item.async_resolve()
|
||||||
|
|
||||||
|
@ -9,3 +9,7 @@ class MediaSourceError(HomeAssistantError):
|
|||||||
|
|
||||||
class Unresolvable(MediaSourceError):
|
class Unresolvable(MediaSourceError):
|
||||||
"""When media ID is not resolvable."""
|
"""When media ID is not resolvable."""
|
||||||
|
|
||||||
|
|
||||||
|
class UnknownMediaSource(MediaSourceError, ValueError):
|
||||||
|
"""When media source is unknown."""
|
||||||
|
13
homeassistant/components/media_source/strings.json
Normal file
13
homeassistant/components/media_source/strings.json
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"exceptions": {
|
||||||
|
"browse_media_failed": {
|
||||||
|
"message": "Failed to browse media with content id {media_content_id}: {error}"
|
||||||
|
},
|
||||||
|
"resolve_media_failed": {
|
||||||
|
"message": "Failed to resolve media with content id {media_content_id}: {error}"
|
||||||
|
},
|
||||||
|
"unknown_media_source": {
|
||||||
|
"message": "Unknown media source: {domain}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -57,8 +57,10 @@ async def test_async_browse_media(hass: HomeAssistant) -> None:
|
|||||||
# Test invalid base
|
# Test invalid base
|
||||||
with pytest.raises(BrowseError) as excinfo:
|
with pytest.raises(BrowseError) as excinfo:
|
||||||
await async_browse_media(hass, f"{URI_SCHEME}{DOMAIN}/")
|
await async_browse_media(hass, f"{URI_SCHEME}{DOMAIN}/")
|
||||||
assert str(excinfo.value) == "Invalid media source URI"
|
assert str(excinfo.value) == (
|
||||||
|
"Failed to browse media with content id media-source://netatmo/: "
|
||||||
|
"Invalid media source URI"
|
||||||
|
)
|
||||||
# Test successful listing
|
# Test successful listing
|
||||||
media = await async_browse_media(hass, f"{URI_SCHEME}{DOMAIN}/events")
|
media = await async_browse_media(hass, f"{URI_SCHEME}{DOMAIN}/events")
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user