From 2aa2191334049d95819a7b0a6ade2bec441aabd8 Mon Sep 17 00:00:00 2001 From: Sergey Krashevich Date: Fri, 12 Apr 2024 16:13:54 +0300 Subject: [PATCH] refactor(mikrotik_router): use existing session for fetching release notes Optimized the process of fetching release notes in the Mikrotik Router integration by utilizing the existing HTTP client session from Home Assistant's aiohttp_client. This change avoids creating a new session for each request, leading to more efficient resource usage and potentially reducing the likelihood of encountering issues related to session management. By leveraging `async_get_clientsession`, the update component now aligns better with Home Assistant's recommended practices for external HTTP requests, ensuring consistency and reliability in how network calls are made within integrations. --- custom_components/mikrotik_router/update.py | 26 ++++++++++----------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/custom_components/mikrotik_router/update.py b/custom_components/mikrotik_router/update.py index d5cc584..963379b 100644 --- a/custom_components/mikrotik_router/update.py +++ b/custom_components/mikrotik_router/update.py @@ -9,7 +9,7 @@ from typing import Any from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback -from homeassistant.helpers.aiohttp_client import async_create_clientsession +from homeassistant.helpers.aiohttp_client import async_get_clientsession from homeassistant.components.update import ( UpdateEntity, @@ -92,18 +92,18 @@ class MikrotikRouterOSUpdate(MikrotikEntity, UpdateEntity): async def async_release_notes(self) -> str: """Return the release notes.""" try: - async with async_create_clientsession(self.hass) as session: - async with session.get( - f"https://cdn.mikrotik.com/routeros/{self._data['latest-version']}/CHANGELOG" - ) as response: - if response.status == 200: - text = await response.text() - return text.replace("*) ", "- ") - else: - _LOGGER.warning( - "Failed to fetch release notes due to a network error." - ) - return "Failed to fetch release notes due to a network error." + session = async_get_clientsession(self.hass) + async with session.get( + f"https://cdn.mikrotik.com/routeros/{self._data['latest-version']}/CHANGELOG" + ) as response: + if response.status == 200: + text = await response.text() + return text.replace("*) ", "- ") + else: + _LOGGER.warning( + "Failed to fetch release notes due to a network error." + ) + return "Failed to fetch release notes due to a network error." except Exception as e: _LOGGER.warning("Failed to download release notes (%s)", e)