
     f                         d dl Z d dlZd dlmZ d dlmZ d dlmZ d dlm	Z	  ej
        e          Z G d d          ZdS )    N)	CERT_NONE)Thread)sleep)WebSocketAppc                   Z    e Zd ZdZdZdZd Zd Zd Zd Z	e	Z
d Zd	 Zd
 Zd Zd Zd ZdS )WebSocketConnection   g?i'  c                      i  _         d  _        | _        d _        i  _        d _                                                                fd           d S )Nr   Fc                       j         S N_startedselfs   q/var/www/api.educacionweb.es/myenv/lib/python3.11/site-packages/selenium/webdriver/remote/websocket_connection.py<lambda>z.WebSocketConnection.__init__.<locals>.<lambda>,   s	         )	callbacks
session_idurl_id	_messagesr   	_start_ws_wait_until)r   r   s   ` r   __init__zWebSocketConnection.__init__"   sa    ..../////r   c                     | j                             | j                   | j                                         d| _        d | _        d S )N)timeoutF)
_ws_threadjoin_response_wait_timeout_wscloser   r   s    r   r"   zWebSocketConnection.close.   sB    T%@AAAr   c                      xj         dz  c_                              |          } j         |d<    j        r
 j        |d<   t          j        |          }t
                              d| d  j                             j        	                    |            
                     fd            j                             j                   }d|v rt          |d                   |d         }                     ||          S )N   id	sessionIdz-> c                        j          j        v S r   )r   r   r   s   r   r   z-WebSocketConnection.execute.<locals>.<lambda>?   s    T^!; r   errorresult)r   _serialize_commandr   jsondumpsloggerdebug_max_log_message_sizer!   sendr   r   pop	Exception_deserialize_result)r   commandpayloaddataresponser)   s   `     r   executezWebSocketConnection.execute4   s   A))'22? 	3#'?GK z'""\4\\">D$>">?@@@d;;;;<<<>%%dh//hHW-...h'F++FG<<<r   c                     j         }|| j        vr
g | j        |<   fd}| j        |                             |           t          |          S )Nc                 D                          |                      d S r   )	from_json)paramscallbackevents    r   	_callbackz3WebSocketConnection.add_callback.<locals>._callbackM   s%    HU__V,,-----r   )event_classr   appendr%   )r   r>   r=   
event_namer?   s    ``  r   add_callbackz WebSocketConnection.add_callbackH   sl    &
T^++)+DN:&	. 	. 	. 	. 	. 	. 	z")))444)}}r   c                     |j         }|| j        v rF| j        |         D ]:}t          |          |k    r#| j        |                             |            d S 9d S d S r   )r@   r   r%   remove)r   r>   callback_idrB   r=   s        r   remove_callbackz#WebSocketConnection.remove_callbackU   sw    &
'' N:6  h<<;..N:.55h???FF / (' r   c                      t          |          S r   )next)r   r4   s     r   r*   z&WebSocketConnection._serialize_command]   s    G}}r   c                     	 |                     |          }t          d          # t          $ r}|j        cY d }~S d }~ww xY w)Nz<The command's generator function did not exit when expected!)r0   r2   StopIterationvalue)r   r)   r4   _exits        r   r3   z'WebSocketConnection._deserialize_result`   s]    	V$$AZ[[[ 	 	 	:	s   $& 
A<AAc                       fd} fd}d } fd}t           j        |||           _        t          |           _         j                                         d S )Nc                     d_         d S )NTr   )wsr   s    r   on_openz.WebSocketConnection._start_ws.<locals>.on_openh   s     DMMMr   c                 2                         |           d S r   )_process_message)rQ   messager   s     r   
on_messagez1WebSocketConnection._start_ws.<locals>.on_messagek   s    !!'*****r   c                 h    t                               d|            |                                  d S )Nzerror: )r-   r.   r"   )rQ   r(   s     r   on_errorz/WebSocketConnection._start_ws.<locals>.on_errorn   s.    LL*5**+++HHJJJJJr   c                       j                             d          r% j                            dt          id           d S  j                            d           d S )Nzwss://	cert_reqsT)ssloptsuppress_origin)r\   )r   
startswithr!   run_foreverr   r   s   r   
run_socketz1WebSocketConnection._start_ws.<locals>.run_socketr   sa    x""8,, ;$$[),DVZ$[[[[[$$T$:::::r   )rR   rV   rX   )target)r   r   r!   r   r   start)r   rR   rV   rX   r_   s   `    r   r   zWebSocketConnection._start_wsg   s    	! 	! 	! 	! 	!	+ 	+ 	+ 	+ 	+	 	 		; 	; 	; 	; 	;  'j[cddd 
333r   c                 $   t          j        |          }t                              d| d | j                            d|v r|| j        |d         <   d|v r7|d         }| j                            |d         g           D ]} ||           d S d S )Nz<- r%   methodr<   )r+   loadsr-   r.   r/   r   r   get)r   rU   r<   r=   s       r   rT   z$WebSocketConnection._process_message|   s    *W%%_7__%At'A%ABCCC7??,3DN74=)wX&F N..wx/@"EE ! !     ! !r   c                     | j         }| j        }|dk    r* |            }|r|S ||z  }t          |           |dk    (d S d S )Nr   )r    _response_wait_intervalr   )r   	conditionr   intervalr)   s        r   r   zWebSocketConnection._wait_until   s[    -/kkY[[F  8#h kkkkkkr   N)__name__
__module____qualname__r    rg   r/   r   r"   r8   rC   onrG   r*   r3   r   rT   r    r   r   r   r      s        ! 
0 
0 
0  = = =(	 	 	 
B           *
! 
! 
!
  
  
  
  
 r   r   )r+   loggingsslr   	threadingr   timer   	websocketr   	getLoggerrj   r-   r   rn   r   r   <module>ru      s   "                     " " " " " "		8	$	$v  v  v  v  v  v  v  v  v  v r   