1515
1616import  aiohttp 
1717from  mashumaro .exceptions  import  InvalidFieldValue , MissingField 
18+ from  yarl  import  URL 
1819
1920from  .data  import  (
2021    AirOSDataBaseClass ,
@@ -214,7 +215,8 @@ def _get_authenticated_headers(
214215                self .api_version ,
215216                self ._auth_cookie ,
216217            )
217-             headers ["Cookie" ] =  f"AIROS_{ self ._auth_cookie }  
218+             # headers["Cookie"] = f"AIROS_{self._auth_cookie}" 
219+             headers ["Cookie" ] =  self ._auth_cookie 
218220
219221        return  headers 
220222
@@ -339,6 +341,11 @@ async def _request_json(
339341                _LOGGER .error (
340342                    "TESTv%s - Response history: %s" , self .api_version , response .history 
341343                )
344+                 _LOGGER .error (
345+                     "TESTv%s - Session cookies: %s" ,
346+                     self .api_version ,
347+                     self .session .cookie_jar .filter_cookies (URL (url )),
348+                 )
342349
343350                # v6 responds with a 302 redirect and empty body 
344351                if  not  url .startswith (self ._login_urls ["v6_login" ]):
@@ -361,10 +368,32 @@ async def _request_json(
361368                    self .connected  =  True 
362369
363370                _LOGGER .error ("TESTv%s - response: %s" , self .api_version , response_text )
371+ 
372+                 location  =  response .headers .get ("Location" )
373+                 if  location  and  isinstance (location , str ) and  location .startswith ("/" ):
374+                     _LOGGER .error (
375+                         "TESTv%s - Following redirect to: %s" ,
376+                         self .api_version ,
377+                         location ,
378+                     )
379+                     await  self ._request_json (
380+                         "GET" ,
381+                         f"{ self .base_url } { location }  ,
382+                         headers = {
383+                             "Referer" : self ._login_urls ["v6_login" ],
384+                             "User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36" ,
385+                         },
386+                         authenticated = True ,
387+                         allow_redirects = False ,
388+                     )
389+                 else :
390+                     _LOGGER .error (
391+                         "TESTv%s - no location header found to follow in response to %s" ,
392+                         self .api_version ,
393+                         url ,
394+                     )
364395                # V6 responds with empty body on login, not JSON 
365396                if  url .startswith (self ._login_urls ["v6_login" ]):
366-                     self ._store_auth_data (response )
367-                     self .connected  =  True 
368397                    return  {}
369398
370399                return  json .loads (response_text )
@@ -425,6 +454,18 @@ async def login(self) -> None:
425454            _LOGGER .error (
426455                "TESTv%s - Cookie response: %s" , self .api_version , cookieresponse 
427456            )
457+             if  isinstance (cookieresponse , aiohttp .ClientResponse ):
458+                 _LOGGER .debug (
459+                     "TESTv%s - Finalization redirect chain: %s" ,
460+                     self .api_version ,
461+                     cookieresponse .history ,
462+                 )
463+             else :
464+                 _LOGGER .debug (
465+                     "TESTv%s - Finalization response is not a ClientResponse: %s" ,
466+                     self .api_version ,
467+                     type (cookieresponse ),
468+                 )
428469
429470        v6_simple_multipart_form_data  =  aiohttp .FormData ()
430471        v6_simple_multipart_form_data .add_field ("uri" , "/index.cgi" )
@@ -457,7 +498,7 @@ async def login(self) -> None:
457498                ct_form = False ,
458499                ct_json = False ,
459500                authenticated = False ,
460-                 allow_redirects = True ,
501+                 allow_redirects = False ,
461502            )
462503        except  (AirOSUrlNotFoundError , AirOSConnectionSetupError ) as  err :
463504            _LOGGER .error (
0 commit comments