
    ,i                         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	 d dl
mZ  ej                  e      Z G d d      Zy)	    N)	CERT_NONE)Thread)sleep)WebSocketApp)WebDriverExceptionc                   P    e 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y)WebSocketConnectioni'  c                 V    t        |t        t        f      r|dk  rt        d      t        |t        t        f      r|dk  rt        d      | _        | _        | _        i  _        d  _        d _	        i  _
        d _         j                           j                   fd       y )Nr   z!timeout must be a positive numberz"interval must be a positive numberFc                       j                   S N_startedselfs   }/var/www/system.tvplus.app.br/jogos/scrap/venv/lib/python3.12/site-packages/selenium/webdriver/remote/websocket_connection.py<lambda>z.WebSocketConnection.__init__.<locals>.<lambda>3   s         )
isinstanceintfloatr   urlresponse_wait_timeoutresponse_wait_interval	callbacks
session_id_id	_messagesr   	_start_ws_wait_until)r   r   timeoutintervals   `   r   __init__zWebSocketConnection.__init__"   s    'C<0GaK$%HII(S%L1Wq[$%IJJ%,"&.#./r   c                     | j                   j                  | j                         | j                  j	                          d| _        d | _        y )N)r    F)
_ws_threadjoinr   _wscloser   r   s    r   r'   zWebSocketConnection.close5   s9    T%?%?@r   c                 P     xj                   dz  c_          j                  |      } j                   |d<    j                  r j                  |d<   t        j                  |      }t
        j                  d| d  j                           j                  j                  |        j                    j                   fd        j                  j                        }d|v r)|d   }d|v r| d|d    }t        |      t        |      |d	   } j                  ||      S )
N   id	sessionIdz-> c                        j                   v S r   )r   )
current_idr   s   r   r   z-WebSocketConnection.execute.<locals>.<lambda>G   s    t~~!= r   errormessagez: result)r   _serialize_commandr   jsondumpsloggerdebug_max_log_message_sizer&   sendr   r   popr   _deserialize_result)	r   commandpayloaddataresponser.   	error_msgr0   r-   s	   `       @r   executezWebSocketConnection.execute;   s   A))'2??#'??GK zz'"s4&\">D$>$>?@dXX
=>>>%%j1hW%EH$$gR(;'<=	(33(//h'F++FG<<r   c                     j                   }|| j                  vrg | j                  |<   fd}| j                  |   j                  |       t        |      S )Nc                 4     j                  |              y r   )	from_json)paramscallbackevents    r   	_callbackz3WebSocketConnection.add_callback.<locals>._callbackZ   s    U__V,-r   )event_classr   appendr*   )r   rE   rD   
event_namerF   s    ``  r   add_callbackz WebSocketConnection.add_callbackU   sP    &&
T^^+)+DNN:&	. 	z")))4)}r   c                     |j                   }|| j                  v rC| j                  |   D ]0  }t        |      |k(  s| j                  |   j                  |        y  y y r   )rG   r   r*   remove)r   rE   callback_idrI   rD   s        r   remove_callbackz#WebSocketConnection.remove_callbackb   s\    &&
' NN:6 h<;.NN:.55h? (r   c                     t        |      S r   )next)r   r:   s     r   r1   z&WebSocketConnection._serialize_commandj   s    G}r   c                     	 |j                  |      }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!)r7   r   StopIterationvalue)r   r0   r:   _exits        r   r9   z'WebSocketConnection._deserialize_resultm   s;    	V$A$%cdd 	::	s    	=8==c                       fd} fd}d } fd}t         j                  |||       _        t        |       _         j                  j                          y )Nc                     d_         y )NTr   )wsr   s    r   on_openz.WebSocketConnection._start_ws.<locals>.on_openu   s
     DMr   c                 (    j                  |       y r   )_process_message)rX   r/   r   s     r   
on_messagez1WebSocketConnection._start_ws.<locals>.on_messagex   s    !!'*r   c                 T    t         j                  d|        | j                          y )Nzerror: )r4   r5   r'   )rX   r.   s     r   on_errorz/WebSocketConnection._start_ws.<locals>.on_error{   s    LL75'*+HHJr   c                       j                   j                  d      r$ j                  j                  dt        id       y  j                  j                  d       y )Nzwss://	cert_reqsT)ssloptsuppress_origin)rb   )r   
startswithr&   run_foreverr   r   s   r   
run_socketz1WebSocketConnection._start_ws.<locals>.run_socket   sG    xx""8,$$[),DVZ$[$$T$:r   )rY   r\   r^   )target)r   r   r&   r   r$   start)r   rY   r\   r^   re   s   `    r   r   zWebSocketConnection._start_wst   sL    	!	+		;  'j[cd 
3r   c                 8   t        j                  |      }t        j                  d| d | j                          d|v r|| j
                  |d   <   d|v rF|d   }| j                  j                  |d   g       D ]  }t        ||f      j                            y y )Nz<- r*   methodrC   )rf   args)
r2   loadsr4   r5   r6   r   r   getr   rg   )r   r/   rC   rD   s       r   r[   z$WebSocketConnection._process_message   s    **W%s7)_%At'A'ABC7?,3DNN74=)wX&F NN..wx/@"E @hfY7==?@ r   c                     | j                   }| j                  }|dkD  r" |       }|r|S ||z  }t        |       |dkD  r!y y )Nr   )r   r   r   )r   	conditionr    r!   r0   s        r   r   zWebSocketConnection._wait_until   sH    ,,..k[F8#h kr   N)__name__
__module____qualname__r6   r"   r'   r?   rJ   onrN   r1   r9   r   r[   r    r   r   r	   r	      sB     0&=4	 
B *
@
 r   r	   )r2   loggingsslr   	threadingr   timer   	websocketr   selenium.commonr   	getLoggerro   r4   r	   rs   r   r   <module>r{      s:   $      " .			8	$@  @ r   