55import asyncio
66import json
77import socket
8- from datetime import datetime , timezone
98from typing import Any , Mapping
109
1110import 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