mirror of
https://github.com/home-assistant/core.git
synced 2025-07-16 17:57:11 +00:00
Allow more input params to webhook generate_url helper (#112334)
* allow more params to helper * switch back to f-string * add test * switch to proper method * add allow_external, internal params * fx default * add signature comparison * remove test, change prefer_external --------- Co-authored-by: Erik Montnemery <erik@montnemery.com>
This commit is contained in:
parent
066cd6dbef
commit
d0a036c617
@ -12,7 +12,7 @@ from pytedee_async.exception import TedeeDataUpdateException, TedeeWebhookExcept
|
|||||||
from homeassistant.components.http import HomeAssistantView
|
from homeassistant.components.http import HomeAssistantView
|
||||||
from homeassistant.components.webhook import (
|
from homeassistant.components.webhook import (
|
||||||
async_generate_id as webhook_generate_id,
|
async_generate_id as webhook_generate_id,
|
||||||
async_generate_path as webhook_generate_path,
|
async_generate_url as webhook_generate_url,
|
||||||
async_register as webhook_register,
|
async_register as webhook_register,
|
||||||
async_unregister as webhook_unregister,
|
async_unregister as webhook_unregister,
|
||||||
)
|
)
|
||||||
@ -66,8 +66,9 @@ async def async_setup_entry(hass: HomeAssistant, entry: TedeeConfigEntry) -> boo
|
|||||||
await coordinator.tedee_client.cleanup_webhooks_by_host(instance_url)
|
await coordinator.tedee_client.cleanup_webhooks_by_host(instance_url)
|
||||||
except (TedeeDataUpdateException, TedeeWebhookException) as ex:
|
except (TedeeDataUpdateException, TedeeWebhookException) as ex:
|
||||||
_LOGGER.warning("Failed to cleanup Tedee webhooks by host: %s", ex)
|
_LOGGER.warning("Failed to cleanup Tedee webhooks by host: %s", ex)
|
||||||
webhook_url = (
|
|
||||||
f"{instance_url}{webhook_generate_path(entry.data[CONF_WEBHOOK_ID])}"
|
webhook_url = webhook_generate_url(
|
||||||
|
hass, entry.data[CONF_WEBHOOK_ID], allow_external=False, allow_ip=True
|
||||||
)
|
)
|
||||||
webhook_name = "Tedee"
|
webhook_name = "Tedee"
|
||||||
if entry.title != NAME:
|
if entry.title != NAME:
|
||||||
|
@ -87,10 +87,17 @@ def async_generate_id() -> str:
|
|||||||
|
|
||||||
@callback
|
@callback
|
||||||
@bind_hass
|
@bind_hass
|
||||||
def async_generate_url(hass: HomeAssistant, webhook_id: str) -> str:
|
def async_generate_url(
|
||||||
|
hass: HomeAssistant,
|
||||||
|
webhook_id: str,
|
||||||
|
allow_internal: bool = True,
|
||||||
|
allow_external: bool = True,
|
||||||
|
allow_ip: bool | None = None,
|
||||||
|
prefer_external: bool | None = True,
|
||||||
|
) -> str:
|
||||||
"""Generate the full URL for a webhook_id."""
|
"""Generate the full URL for a webhook_id."""
|
||||||
return (
|
return (
|
||||||
f"{get_url(hass, prefer_external=True, allow_cloud=False)}"
|
f"{get_url(hass,allow_internal=allow_internal, allow_external=allow_external, allow_cloud=False, allow_ip=allow_ip, prefer_external=prefer_external,)}"
|
||||||
f"{async_generate_path(webhook_id)}"
|
f"{async_generate_path(webhook_id)}"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -56,6 +56,22 @@ async def test_generate_webhook_url(hass: HomeAssistant) -> None:
|
|||||||
assert url == "https://example.com/api/webhook/some_id"
|
assert url == "https://example.com/api/webhook/some_id"
|
||||||
|
|
||||||
|
|
||||||
|
async def test_generate_webhook_url_internal(hass: HomeAssistant) -> None:
|
||||||
|
"""Test we can get the internal URL."""
|
||||||
|
await async_process_ha_core_config(
|
||||||
|
hass,
|
||||||
|
{
|
||||||
|
"internal_url": "http://192.168.1.100:8123",
|
||||||
|
"external_url": "https://example.com",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
url = webhook.async_generate_url(
|
||||||
|
hass, "some_id", allow_external=False, allow_ip=True
|
||||||
|
)
|
||||||
|
|
||||||
|
assert url == "http://192.168.1.100:8123/api/webhook/some_id"
|
||||||
|
|
||||||
|
|
||||||
async def test_async_generate_path(hass: HomeAssistant) -> None:
|
async def test_async_generate_path(hass: HomeAssistant) -> None:
|
||||||
"""Test generating just the path component of the url correctly."""
|
"""Test generating just the path component of the url correctly."""
|
||||||
path = webhook.async_generate_path("some_id")
|
path = webhook.async_generate_path("some_id")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user