Skip to content

Commit 624543d

Browse files
committed
fix: sticky session
1 parent 5df59b9 commit 624543d

4 files changed

Lines changed: 16 additions & 12 deletions

File tree

custom_components/eau_agur/__init__.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import aiohttp
12
from homeassistant.config_entries import ConfigEntry
23
from homeassistant.core import HomeAssistant
34
from homeassistant.helpers.aiohttp_client import async_get_clientsession
@@ -9,7 +10,8 @@
910

1011
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
1112
"""Set up EAU par Agur from a config entry."""
12-
session = async_get_clientsession(hass)
13+
session = async_get_clientsession(hass=hass)
14+
session._cookie_jar = aiohttp.CookieJar(unsafe=False, quote_cookie=False)
1315

1416
config_provider = PROVIDERS.get(entry.data[CONF_PROVIDER], None)
1517
if config_provider is None:

custom_components/eau_agur/api/agur_api_client.py

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import logging
88
import socket
99
import uuid
10+
from http.cookies import SimpleCookie
1011
from typing import Any, Mapping
1112

1213
import aiohttp
@@ -57,7 +58,7 @@ def __init__(
5758
self._token = None
5859
self._session = session
5960
self._close_session = False
60-
self._cookies: dict[str, str] = {}
61+
self._cookies: SimpleCookie | None = None
6162

6263
self._host = host
6364
self._base_path = base_path
@@ -80,14 +81,12 @@ async def request(
8081
"""Make a request to the Agur API."""
8182

8283
url = URL.build(scheme="https", host=self._host, path=self._base_path).join(URL(uri))
83-
84-
LOGGER.debug("URL: %s", url)
85-
LOGGER.debug("Headers: %s", headers)
86-
LOGGER.debug("Cookies: %s", self._cookies)
84+
LOGGER.debug("Request URL: %s", url)
8785

8886
if headers is None:
8987
headers = {}
9088

89+
headers["User-Agent"] = "homeassistant"
9190
headers["Content-Type"] = "application/json"
9291

9392
if self._conversation_id is not None:
@@ -97,15 +96,14 @@ async def request(
9796
headers["Token"] = self._token
9897

9998
if self._session is None:
100-
self._session = aiohttp.ClientSession()
101-
self._close_session = True
99+
self._session = aiohttp.ClientSession(cookie_jar=aiohttp.CookieJar(unsafe=False, quote_cookie=False))
100+
self._close_session = True
102101

103102
try:
104103
async with async_timeout.timeout(self._timeout):
105104
response = await self._session.request(
106105
method,
107106
url,
108-
cookies=self._cookies,
109107
data=data,
110108
json=json_data,
111109
params=params,
@@ -135,7 +133,7 @@ async def generate_temporary_token(self) -> None:
135133
"""Generate a temporary token."""
136134
try:
137135
# Generate a conversation id
138-
self._conversation_id = f"S-WEB-Netscape-{uuid.uuid4()}"
136+
self._conversation_id = f"JS-WEB-Netscape-{uuid.uuid4()}"
139137

140138
response = await self.request(
141139
uri=GENERATE_TOKEN_PATH,
@@ -213,6 +211,7 @@ async def __aenter__(self) -> Any:
213211

214212
async def close(self) -> None:
215213
"""Close open client session."""
214+
LOGGER.debug("Closing session")
216215
if self._session and self._close_session:
217216
await self._session.close()
218217

custom_components/eau_agur/config_flow.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
from __future__ import annotations
44

5+
import aiohttp
56
import voluptuous as vol
67
from homeassistant import config_entries
78
from homeassistant.const import CONF_EMAIL, CONF_PASSWORD
@@ -38,7 +39,9 @@ async def async_step_user(self, user_input=None) -> config_entries.ConfigFlowRes
3839
timeout=config_provider.get("default_timeout", None),
3940
client_id=config_provider["client_id"],
4041
access_key=config_provider["access_key"],
41-
session=async_create_clientsession(self.hass),
42+
session=async_create_clientsession(
43+
self.hass, cookie_jar=aiohttp.CookieJar(unsafe=False, quote_cookie=False)
44+
),
4245
)
4346

4447
await api_client.generate_temporary_token()

mise.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ run = "uv run pre-commit run --all-files"
4747

4848
[tasks."hassio:start"]
4949
description = "Start Hassio"
50-
run = "docker compose -f docker-compose.yml up"
50+
run = "docker compose -f docker-compose.yml up --remove-orphans"
5151

5252
[tasks."hassio:stop"]
5353
description = "Stop Hassio"

0 commit comments

Comments
 (0)