
    X j0                    |    S SK Jr  S SKJr  S SKJr  S SKJr  S SKJ	r	   " S S5      r
 " S S	5      r " S
 S5      rg)    )annotations)Callable)Any)command_builder)WebSocketConnectionc                  6    \ rS rSrSrSS jr\SS j5       rSrg)	NetworkEvent   zRepresents a network event.c                    Xl         X l        g Nevent_classparams)selfr   kwargss      w/root/GenerationalWealth/GenerationalWealth/venv/lib/python3.13/site-packages/selenium/webdriver/common/bidi/network.py__init__NetworkEvent.__init__   s    &    c                6    U " SSUR                  SS5      0UD6$ )Nr     )get)clsjsons     r   	from_jsonNetworkEvent.from_json"   s     Ctxxr:CdCCr   r   N)r   strr   r   returnNone)r   dict[str, Any]r   r	   )	__name__
__module____qualname____firstlineno____doc__r   classmethodr   __static_attributes__r   r   r   r	   r	      s     % D Dr   r	   c                      \ rS rSrSSSSSSSS	.rS
SSS.rSS jr   S       SS jjrSSS jjrSS jr	  S         S S jjr
S!S jrS"S jrS#S jrS$S jrSrg)%Network'   znetwork.beforeRequestSentznetwork.responseStartedznetwork.responseCompletedznetwork.authRequiredznetwork.fetchErrornetwork.continueRequestnetwork.continueWithAuth)before_requestresponse_startedresponse_completedauth_requiredfetch_errorcontinue_requestcontinue_authbeforeRequestSentresponseStartedauthRequired)r.   r/   r1   c                :    Xl         / U l        0 U l        0 U l        g r   )conn
intercepts	callbackssubscriptions)r   r9   s     r   r   Network.__init__8   s    	%'/135r   Nc                    Uc  / n0 nUb  X$S'   Ub  X4S'   [        U5      S:  a  XS'   OS/US'   [        SU5      nU R                  R                  U5      nU R                  R                  US   5        U$ )a  Add an intercept to the network.

Args:
    phases: A list of phases to intercept. Default is None (empty list).
    contexts: A list of contexts to intercept. Default is None.
    url_patterns: A list of URL patterns to intercept. Default is None.

Returns:
    str: intercept id
contextsurlPatternsr   phasesr5   znetwork.addIntercept	intercept)lenr   r9   executer:   append)r   rA   r?   url_patternsr   cmdresults          r   _add_interceptNetwork._add_intercept>   s      >F!):#$0=!v;?%8 34F84f=!%!2!23!7vk23r   c                   Ucf  U R                   R                  5       nU HE  nU R                  R                  [	        SSU05      5        U R                   R                  U5        MG     g U R                  R                  [	        SSU05      5        U R                   R                  U5        g! [         a  n[        SU 35      eSnAff = f)zRemove a specific intercept, or all intercepts.

Args:
    intercept: The intercept to remove. Default is None.

Raises:
    ValueError: If intercept is not found.

Note:
    If intercept is None, all intercepts will be removed.
Nznetwork.removeInterceptrB   zException: )r:   copyr9   rD   r   remove	Exception)r   rB   intercepts_to_removeintercept_ides        r   _remove_interceptNetwork._remove_intercept_   s     #'??#7#7#9  4		!!/2Kk[gMh"ij&&|4 !53		!!/2Kk[dMe"fg&&y1 3+aS 1223s   +AB. .
C8CCc                   ^ ^ [        U5      nSUU 4S jjnT R                  R                  X45      nUT R                  ;   a   T R                  U   R	                  U5        U$ U/T R                  U'   U$ )zSet a callback function to subscribe to a network event.

Args:
    event_name: The event to subscribe to.
    callback: The callback function to execute on event.
        Takes Request object as argument.

Returns:
    int: callback id
c                  > [        TU R                  S   R                  SS 5      U R                  S   R                  SS 5      U R                  S   R                  SS 5      U R                  S   R                  SS 5      U R                  S   R                  SS 5      U R                  S   R                  SS 5      U R                  S   R                  SS 5      U R                  S   R                  SS 5      S	9	nT" U5        g )
NrequestbodySizecookieszgoog:resourceTypeheadersheadersSizetimingsurl)	network
request_id	body_sizerX   resource_typerY   headers_sizer[   r\   )Requestr   r   )
event_datarV   callbackr   s     r   	_callback&Network._on_request.<locals>._callback   s    %,,Y7;;ItL$++I6:::tL")))488DI(//	:>>?RTXY")))488DI'..y9==mTR")))488DI%%i044UDA
G Wr   )rc   r	   r   r    )r	   r9   add_callbackr;   rE   )r   
event_namerd   eventre   callback_ids   ` `   r   _on_requestNetwork._on_requestw   sr     Z(	 	  9911%C'NN:&--k:  +6DNN:&r   c                    U R                   U   nU R                  U   nU R	                  U/X4S9nU R                  XR5      nXPR                  ;   a  U R                  U   R                  U5        O=0 n	U/U	S'   U R                  R                  [        SU	5      5        U/U R                  U'   US   U R                  U'   U$ ! [         a    [        SU S35      ef = f)al  Add a request handler to the network.

Args:
    event: The event to subscribe to.
    callback: The callback function to execute on request interception.
        Takes Request object as argument.
    url_patterns: A list of URL patterns to intercept. Default is None.
    contexts: A list of contexts to intercept. Default is None.

Returns:
    int: callback id
Event 
 not found)rA   rF   r?   eventszsession.subscriberB   )EVENTSPHASESKeyErrorrN   rI   rk   r<   rE   r9   rD   r   r;   )
r   ri   rd   rF   r?   rh   
phase_namerH   rj   r   s
             r   add_request_handlerNetwork.add_request_handler   s    &	8U+JU+J $$ZL|$g&&z<+++z*11+>%'F *|F8IIo.A6JK.9]Dz*&,[&9{#  	8fUG:677	8s   C Cc                    U R                   U   n[        U5      nU R                  R                  XB5        U R                  U R                  U   5        U R                  U	 U R                  U   R                  U5        [        U R                  U   5      S:X  a;  0 nU/US'   U R                  R                  [        SU5      5        U R                  U	 gg! [         a    [        SU S35      ef = f)zRemove a request handler from the network.

Args:
    event: The event to unsubscribe from.
    callback_id: The callback id to remove.
rn   ro   r   rp   session.unsubscribeN)rq   rs   rN   r	   r9   remove_callbackrR   r;   r<   rM   rC   rD   r   )r   ri   rj   rh   	net_eventr   s         r   remove_request_handlerNetwork.remove_request_handler   s    	8U+J !,			!!)9t~~k:;NN;':&--k:t!!*-.!3%'F *|F8IIo.CVLM"":.	 4  	8fUG:677	8s   C C2c                `   U R                    H  n[        U5      nU R                   U    HI  nU R                  R                  X#5        U R	                  U R
                  U   5        U R
                  U	 MK     0 nU/US'   U R                  R                  [        SU5      5        M     0 U l         g)z,Clear all request handlers from the network.rp   rx   N)r<   r	   r9   ry   rR   r;   rD   r   )r   rh   rz   rj   r   s        r   clear_request_handlersNetwork.clear_request_handlers   s    ,,J$Z0I#11*=		)))A&&t~~k'BCNN;/  > &(F *|F8IIo.CVLM -  r   c                >   ^^ SnSUU4S jjnU R                  X45      $ )zAdd an authentication handler to the network.

Args:
    username: The username to authenticate with.
    password: The password to authenticate with.

Returns:
    int: callback id
r1   c                *   > U R                  TT5        g r   )_continue_with_auth)rV   passwordusernames    r   re   +Network.add_auth_handler.<locals>._callback   s    ''(;r   )rV   rb   r   r    )ru   )r   r   r   ri   re   s    ``  r   add_auth_handlerNetwork.add_auth_handler   s'      	< 	< ''99r   c                *    SnU R                  X!5        g)zfRemove an authentication handler from the network.

Args:
    callback_id: The callback id to remove.
r1   N)r{   )r   rj   ri   s      r   remove_auth_handlerNetwork.remove_auth_handler   s      ##E7r   )r;   r9   r:   r<   )r9   r   r   r    )NNN)rA   list[str] | Noner?   r   rF   list[Any] | Noner   r!   r   )rB   
str | Noner   r    )rh   r   rd   Callable[[Request], Any]r   intNN)
ri   r   rd   r   rF   r   r?   r   r   r   )ri   r   rj   r   r   r    r   r    )r   r   r   r   r   r   )rj   r   r   r    )r"   r#   r$   r%   rq   rr   r   rI   rR   rk   ru   r{   r~   r   r   r(   r   r   r   r*   r*   '   s    559/+53F .-'F6 $(%))-	  # '	
 
B30"P *.%)%% +% '	%
 #% 
%N/0 :"8r   r*   c                      \ rS rSrSr        S	                     S
S jjrSS jr     S           SS jjrSSS jjrSr	g)rb   i  z*Represents an intercepted network request.Nc                |    Xl         X l        X0l        X@l        XPl        X`l        Xpl        Xl        Xl        Xl	        g r   )
r]   r^   r_   rX   r`   rY   ra   methodr[   r\   )r   r]   r^   r_   rX   r`   rY   ra   r   r[   r\   s              r   r   Request.__init__  s8     $"*(r   c                    U R                   (       d  [        S5      eSU R                   0nU R                  R                  R	                  [        SU5      5        g)zFail this request.Request not found.rV   znetwork.failRequestNr^   
ValueErrorr]   r9   rD   r   )r   r   s     r   fail_requestRequest.fail_request  sC    122"+T__!=!!/2G"PQr   c                    U R                   (       d  [        S5      eSU R                   0nUb  XS'   Ub  X&S'   Ub  X6S'   Ub  XFS'   Ub  XVS'   U R                  R                  R	                  [        S	U5      5        g)
z)Continue after intercepting this request.r   rV   Nbodyr   rY   rX   r\   r,   r   )r   r   r   rY   rX   r\   r   s          r   r3   Request.continue_request%  s     122"+T__!=!6N%8 '9 '9?5M!!/2KV"TUr   c                    0 nU R                   US'   U(       a  U(       d  SUS'   OSUS'   SXS.US'   U R                  R                  R                  [	        SU5      5        g	)
zContinue with authentication.

Args:
    username: The username to authenticate with.
    password: The password to authenticate with.

Note:
    If username or password is None, it attempts auth with no credentials.
rV   defaultactionprovideCredentialsr   )typer   r   credentialsr-   N)r^   r]   r9   rD   r   )r   r   r   r   s       r   r   Request._continue_with_auth?  s_     "$ OOyx(F83F8-7X$dF=!!!/2Lf"UVr   )
r_   rX   rY   ra   r   r]   r^   r`   r[   r\   )NNNNNNNN)r]   r*   r^   r   r_   
int | NonerX   r   r`   r   rY   r   ra   r   r   r   r[   r   r\   r   r   r    r   )NNNNN)r   r   r   r   rY   r   rX   r   r\   r   r   r    r   )r   r   r   r   r   r    )
r"   r#   r$   r%   r&   r   r   r3   r   r(   r   r   r   rb   rb     s    4 !%$(#'!  	
  "  !    
0R !VV V 	V
 V V 
V4W Wr   rb   N)
__future__r   collections.abcr   typingr   %selenium.webdriver.common.bidi.commonr   .selenium.webdriver.remote.websocket_connectionr   r	   r*   rb   r   r   r   <module>r      s=   $ # $  A N	D 	DX8 X8vPW PWr   