mirror of
https://github.com/home-assistant/core.git
synced 2025-07-18 18:57:06 +00:00
Use Home Assistant aiohttp session for Reolink (#125948)
This commit is contained in:
parent
b32f40c0fe
commit
15bf6222f5
@ -25,6 +25,7 @@ from homeassistant.const import (
|
|||||||
)
|
)
|
||||||
from homeassistant.core import CALLBACK_TYPE, HassJob, HomeAssistant, callback
|
from homeassistant.core import CALLBACK_TYPE, HassJob, HomeAssistant, callback
|
||||||
from homeassistant.helpers import issue_registry as ir
|
from homeassistant.helpers import issue_registry as ir
|
||||||
|
from homeassistant.helpers.aiohttp_client import async_get_clientsession
|
||||||
from homeassistant.helpers.device_registry import format_mac
|
from homeassistant.helpers.device_registry import format_mac
|
||||||
from homeassistant.helpers.dispatcher import async_dispatcher_send
|
from homeassistant.helpers.dispatcher import async_dispatcher_send
|
||||||
from homeassistant.helpers.event import async_call_later
|
from homeassistant.helpers.event import async_call_later
|
||||||
@ -64,10 +65,12 @@ class ReolinkHost:
|
|||||||
) -> None:
|
) -> None:
|
||||||
"""Initialize Reolink Host. Could be either NVR, or Camera."""
|
"""Initialize Reolink Host. Could be either NVR, or Camera."""
|
||||||
self._hass: HomeAssistant = hass
|
self._hass: HomeAssistant = hass
|
||||||
|
|
||||||
self._clientsession: aiohttp.ClientSession | None = None
|
|
||||||
self._unique_id: str = ""
|
self._unique_id: str = ""
|
||||||
|
|
||||||
|
def get_aiohttp_session() -> aiohttp.ClientSession:
|
||||||
|
"""Return the HA aiohttp session."""
|
||||||
|
return async_get_clientsession(hass, verify_ssl=False)
|
||||||
|
|
||||||
self._api = Host(
|
self._api = Host(
|
||||||
config[CONF_HOST],
|
config[CONF_HOST],
|
||||||
config[CONF_USERNAME],
|
config[CONF_USERNAME],
|
||||||
@ -76,6 +79,7 @@ class ReolinkHost:
|
|||||||
use_https=config.get(CONF_USE_HTTPS),
|
use_https=config.get(CONF_USE_HTTPS),
|
||||||
protocol=options[CONF_PROTOCOL],
|
protocol=options[CONF_PROTOCOL],
|
||||||
timeout=DEFAULT_TIMEOUT,
|
timeout=DEFAULT_TIMEOUT,
|
||||||
|
aiohttp_get_session_callback=get_aiohttp_session,
|
||||||
)
|
)
|
||||||
|
|
||||||
self.last_wake: float = 0
|
self.last_wake: float = 0
|
||||||
|
@ -2,8 +2,9 @@
|
|||||||
|
|
||||||
import json
|
import json
|
||||||
from typing import Any
|
from typing import Any
|
||||||
from unittest.mock import AsyncMock, MagicMock, call
|
from unittest.mock import ANY, AsyncMock, MagicMock, call
|
||||||
|
|
||||||
|
from aiohttp import ClientSession
|
||||||
from freezegun.api import FrozenDateTimeFactory
|
from freezegun.api import FrozenDateTimeFactory
|
||||||
import pytest
|
import pytest
|
||||||
from reolink_aio.exceptions import ApiError, CredentialsInvalidError, ReolinkError
|
from reolink_aio.exceptions import ApiError, CredentialsInvalidError, ReolinkError
|
||||||
@ -492,11 +493,14 @@ async def test_dhcp_ip_update(
|
|||||||
use_https=TEST_USE_HTTPS,
|
use_https=TEST_USE_HTTPS,
|
||||||
protocol=DEFAULT_PROTOCOL,
|
protocol=DEFAULT_PROTOCOL,
|
||||||
timeout=DEFAULT_TIMEOUT,
|
timeout=DEFAULT_TIMEOUT,
|
||||||
|
aiohttp_get_session_callback=ANY,
|
||||||
)
|
)
|
||||||
assert expected_call in reolink_connect_class.call_args_list
|
assert expected_call in reolink_connect_class.call_args_list
|
||||||
|
|
||||||
for exc_call in reolink_connect_class.call_args_list:
|
for exc_call in reolink_connect_class.call_args_list:
|
||||||
assert exc_call[0][0] in host_call_list
|
assert exc_call[0][0] in host_call_list
|
||||||
|
get_session = exc_call[1]["aiohttp_get_session_callback"]
|
||||||
|
assert isinstance(get_session(), ClientSession)
|
||||||
|
|
||||||
assert result["type"] is FlowResultType.ABORT
|
assert result["type"] is FlowResultType.ABORT
|
||||||
assert result["reason"] == "already_configured"
|
assert result["reason"] == "already_configured"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user