Skip to content

Commit a0f168f

Browse files
committed
fix: sticky session
1 parent 6d6d872 commit a0f168f

1 file changed

Lines changed: 9 additions & 3 deletions

File tree

custom_components/eau_agur/api/agur_api_client.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import asyncio
66
import json
77
import socket
8-
from datetime import datetime, timezone
98
from typing import Any, Mapping
109

1110
import aiohttp
@@ -51,7 +50,7 @@ def __init__(
5150
timeout = DEFAULT_TIMEOUT
5251

5352
self._token = None
54-
self._token_expires_at = None
53+
self._cookie = None
5554
self._session = session
5655
self._close_session = False
5756

@@ -89,6 +88,9 @@ async def request(
8988
if self._token is not None:
9089
headers["Token"] = self._token
9190

91+
if self._cookie is not None:
92+
headers["Cookie"] = self._cookie
93+
9294
if self._session is None:
9395
self._session = aiohttp.ClientSession()
9496
self._close_session = True
@@ -103,6 +105,10 @@ async def request(
103105
params=params,
104106
headers=headers,
105107
)
108+
109+
# Currently Grand sud uses a cookie to stick the session.
110+
self._cookie = response.headers.get("Set-Cookie", "")
111+
106112
except asyncio.TimeoutError as exception:
107113
raise AgurApiConnectionError("Timeout occurred while connecting to Agur API.") from exception
108114
except (aiohttp.ClientError, socket.gaierror) as exception:
@@ -139,7 +145,7 @@ async def generate_temporary_token(self) -> None:
139145
)
140146

141147
self._token = response["token"]
142-
self._token_expires_at = datetime.fromisoformat(response["expirationDate"]).astimezone(timezone.utc)
148+
143149
except AgurApiError as exception:
144150
raise AgurApiError("Error occurred while generating temporary token.") from exception
145151

0 commit comments

Comments
 (0)