Include relative path in tts get url (#45623)
* Include relative path in tts get url * Always cal get_url when requested
This commit is contained in:
parent
7673f57248
commit
92e084cee1
2 changed files with 19 additions and 14 deletions
|
@ -27,7 +27,6 @@ from homeassistant.const import (
|
|||
CONF_PLATFORM,
|
||||
HTTP_BAD_REQUEST,
|
||||
HTTP_NOT_FOUND,
|
||||
HTTP_OK,
|
||||
)
|
||||
from homeassistant.core import callback
|
||||
from homeassistant.exceptions import HomeAssistantError
|
||||
|
@ -117,7 +116,7 @@ async def async_setup(hass, config):
|
|||
use_cache = conf.get(CONF_CACHE, DEFAULT_CACHE)
|
||||
cache_dir = conf.get(CONF_CACHE_DIR, DEFAULT_CACHE_DIR)
|
||||
time_memory = conf.get(CONF_TIME_MEMORY, DEFAULT_TIME_MEMORY)
|
||||
base_url = conf.get(CONF_BASE_URL) or get_url(hass)
|
||||
base_url = conf.get(CONF_BASE_URL)
|
||||
hass.data[BASE_URL_KEY] = base_url
|
||||
|
||||
await tts.async_init_cache(use_cache, cache_dir, time_memory, base_url)
|
||||
|
@ -165,13 +164,16 @@ async def async_setup(hass, config):
|
|||
options = service.data.get(ATTR_OPTIONS)
|
||||
|
||||
try:
|
||||
url = await tts.async_get_url(
|
||||
url = await tts.async_get_url_path(
|
||||
p_type, message, cache=cache, language=language, options=options
|
||||
)
|
||||
except HomeAssistantError as err:
|
||||
_LOGGER.error("Error on init TTS: %s", err)
|
||||
return
|
||||
|
||||
base = tts.base_url or get_url(hass)
|
||||
url = base + url
|
||||
|
||||
data = {
|
||||
ATTR_MEDIA_CONTENT_ID: url,
|
||||
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_MUSIC,
|
||||
|
@ -290,7 +292,7 @@ class SpeechManager:
|
|||
provider.name = engine
|
||||
self.providers[engine] = provider
|
||||
|
||||
async def async_get_url(
|
||||
async def async_get_url_path(
|
||||
self, engine, message, cache=None, language=None, options=None
|
||||
):
|
||||
"""Get URL for play message.
|
||||
|
@ -342,7 +344,7 @@ class SpeechManager:
|
|||
engine, key, message, use_cache, language, options
|
||||
)
|
||||
|
||||
return f"{self.base_url}/api/tts_proxy/{filename}"
|
||||
return f"/api/tts_proxy/{filename}"
|
||||
|
||||
async def async_get_tts_audio(self, engine, key, message, cache, language, options):
|
||||
"""Receive TTS and store for view in cache.
|
||||
|
@ -579,15 +581,17 @@ class TextToSpeechUrlView(HomeAssistantView):
|
|||
options = data.get(ATTR_OPTIONS)
|
||||
|
||||
try:
|
||||
url = await self.tts.async_get_url(
|
||||
path = await self.tts.async_get_url_path(
|
||||
p_type, message, cache=cache, language=language, options=options
|
||||
)
|
||||
resp = self.json({"url": url}, HTTP_OK)
|
||||
except HomeAssistantError as err:
|
||||
_LOGGER.error("Error on init tts: %s", err)
|
||||
resp = self.json({"error": err}, HTTP_BAD_REQUEST)
|
||||
return self.json({"error": err}, HTTP_BAD_REQUEST)
|
||||
|
||||
return resp
|
||||
base = self.tts.base_url or get_url(self.tts.hass)
|
||||
url = base + path
|
||||
|
||||
return self.json({"url": url, "path": path})
|
||||
|
||||
|
||||
class TextToSpeechView(HomeAssistantView):
|
||||
|
@ -595,7 +599,7 @@ class TextToSpeechView(HomeAssistantView):
|
|||
|
||||
requires_auth = False
|
||||
url = "/api/tts_proxy/{filename}"
|
||||
name = "api:tts:speech"
|
||||
name = "api:tts_speech"
|
||||
|
||||
def __init__(self, tts):
|
||||
"""Initialize a tts view."""
|
||||
|
@ -614,4 +618,4 @@ class TextToSpeechView(HomeAssistantView):
|
|||
|
||||
def get_base_url(hass):
|
||||
"""Get base URL."""
|
||||
return hass.data[BASE_URL_KEY]
|
||||
return hass.data[BASE_URL_KEY] or get_url(hass)
|
||||
|
|
|
@ -699,9 +699,10 @@ async def test_setup_component_and_web_get_url(hass, hass_client):
|
|||
req = await client.post(url, json=data)
|
||||
assert req.status == 200
|
||||
response = await req.json()
|
||||
assert response.get("url") == (
|
||||
"http://example.local:8123/api/tts_proxy/42f18378fd4393d18c8dd11d03fa9563c1e54491_en_-_demo.mp3"
|
||||
)
|
||||
assert response == {
|
||||
"url": "http://example.local:8123/api/tts_proxy/42f18378fd4393d18c8dd11d03fa9563c1e54491_en_-_demo.mp3",
|
||||
"path": "/api/tts_proxy/42f18378fd4393d18c8dd11d03fa9563c1e54491_en_-_demo.mp3",
|
||||
}
|
||||
|
||||
|
||||
async def test_setup_component_and_web_get_url_bad_config(hass, hass_client):
|
||||
|
|
Loading…
Add table
Reference in a new issue