77
88from ..._compat import model_copy
99from ..._models import FinalRequestOptions
10- from ..._types import Headers
1110from .util import base_url_from_browser_like , jwt_from_cdp_ws_url , cdp_ws_url_from_browser_like , session_id_from_browser_like
1211
1312
1413@dataclass
1514class BrowserRoute :
1615 session_id : str
1716 base_url : str
18- jwt : str | None = None
17+ jwt : str
1918
2019
2120@dataclass
@@ -35,30 +34,33 @@ def set(self, route: BrowserRoute) -> None:
3534 self ._routes [route .session_id ] = BrowserRoute (
3635 session_id = route .session_id .strip (),
3736 base_url = route .base_url .strip ().rstrip ("/" ) + "/" ,
38- jwt = route .jwt .strip () if isinstance ( route . jwt , str ) and route . jwt . strip () else None ,
37+ jwt = route .jwt .strip (),
3938 )
4039
4140 def delete (self , session_id : str ) -> None :
4241 self ._routes .pop (session_id , None )
4342
44- def prime (self , browser : Any ) -> BrowserRoute :
45- session_id = session_id_from_browser_like (browser )
46- base_url = base_url_from_browser_like (browser )
47- if not base_url :
48- raise ValueError ("browser.base_url is required to prime the browser route cache" )
49- jwt = None
50- try :
51- jwt = jwt_from_cdp_ws_url (cdp_ws_url_from_browser_like (browser ))
52- except Exception :
53- jwt = None
54- route = BrowserRoute (session_id = session_id , base_url = base_url , jwt = jwt )
55- self .set (route )
56- return route
57-
5843 def values (self ) -> list [BrowserRoute ]:
5944 return list (self ._routes .values ())
6045
6146
47+ def browser_route_from_browser (browser : Any ) -> BrowserRoute | None :
48+ session_id = session_id_from_browser_like (browser )
49+ base_url = base_url_from_browser_like (browser )
50+ if not base_url :
51+ return None
52+
53+ jwt = None
54+ try :
55+ jwt = jwt_from_cdp_ws_url (cdp_ws_url_from_browser_like (browser ))
56+ except Exception :
57+ jwt = None
58+ if not jwt :
59+ return None
60+
61+ return BrowserRoute (session_id = session_id , base_url = base_url , jwt = jwt )
62+
63+
6264def rewrite_direct_vm_options (
6365 options : FinalRequestOptions ,
6466 * ,
@@ -86,8 +88,7 @@ def rewrite_direct_vm_options(
8688 params : dict [str , object ] = {}
8789 if isinstance (options .params , Mapping ):
8890 params .update (cast (Mapping [str , object ], options .params ))
89- if route .jwt :
90- params ["jwt" ] = route .jwt
91+ params ["jwt" ] = route .jwt
9192 rewritten .params = params or options .params
9293 return rewritten
9394
@@ -119,9 +120,3 @@ def match_direct_vm_path(path: str) -> tuple[str, str, str] | None:
119120 return None
120121
121122
122- def build_direct_vm_headers (headers : Mapping [str , str ] | None ) -> Headers | None :
123- if headers is None :
124- return {"Authorization" : None }
125- out : dict [str , str | None ] = {"Authorization" : None }
126- out .update (headers )
127- return out
0 commit comments