
    Şi;                    z   d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZddlm	Z	m
Z
mZ ddlmZ ddlmZmZmZ ddlmZmZmZmZmZmZ dd	lmZmZ dd
lmZ ddlmZ ddl m!Z! es e"d          d dl#Z e$ e%e!ej&        j&        '                    d                              Z(e(dk     rej&        j&         de_)         e"d          d dl*Zd dl+m,Z, d dl-Z ej.        e/          5  dej0        j1        j2        _3        ddd           n# 1 swxY w Y    G d de          Z4e G d de                      Z5dS )    )annotationsN   )create_connectioncreate_socks_proxy_socketmake_socks_proxy_opts   )select_proxy)FeaturesResponseregister_rh)CertificateVerifyError	HTTPError
ProxyErrorRequestErrorSSLErrorTransportError)WebSocketRequestHandlerWebSocketResponse)
websockets)r   )int_or_nonezwebsockets is not installed.)   r   z (unsupported)z"Only websockets>=13.0 is supported)	parse_uric                  6     e Zd Zd fdZ fdZd Zd Z xZS )WebsocketsResponseAdapterws'websockets.sync.client.ClientConnectionc                    t                                          t          j        |j        j        pd          ||j        j        |j        j        |j        j                   || _	        d S )N    fpurlheadersstatusreason)
super__init__ioBytesIOresponsebodyr#   status_codereason_phrase_ws)selfr   r"   	__class__s      bC:\Users\betacode\Desktop\descargarYoutube\venv\Lib\site-packages\yt_dlp/networking/_websockets.pyr'   z"WebsocketsResponseAdapter.__init__8   sc    z"+*1c22K';*;, 	 	
 	
 	
 r   c                z    | j                                          t                                                       d S N)r.   closer&   )r/   r0   s    r1   r4   zWebsocketsResponseAdapter.closeB   s*    r   c                $   	 | j                             |          S # t          j        j        t
          t          f$ r}t          |          |d }~wt          $ r}t          |          |d }~wt          $ r}t          |          |d }~ww xY wNcause)r.   sendr   
exceptionsWebSocketExceptionRuntimeErrorTimeoutErrorr   SocksProxyErrorr   	TypeErrorr   )r/   messagees      r1   r9   zWebsocketsResponseAdapter.sendF   s    	/8==)))%8,U 	1 	1 	1 q)))q0 	- 	- 	-1%%%1, 	/ 	/ 	/Q'''Q.	/s,    !BABA,,B9B

Bc                    	 | j                                         S # t          $ r}t          |          |d }~wt          j        j        t          t          f$ r}t          |          |d }~ww xY wr6   )
r.   recvr>   r   r   r:   r;   r<   r=   r   )r/   rA   s     r1   rC   zWebsocketsResponseAdapter.recvQ   s    	18==??" 	- 	- 	-1%%%1,%8,U 	1 	1 	1 q)))q0	1s    
A06$A0A++A0)r   r   )__name__
__module____qualname__r'   r4   r9   rC   __classcell__r0   s   @r1   r   r   6   st                 	/ 	/ 	/1 1 1 1 1 1 1r   r   c                  f     e Zd ZdZdZdZej        ej        fZ	dZ
 fdZ fdZd Zd Zd	 Z xZS )
WebsocketsRHz~
    Websockets request handler
    https://websockets.readthedocs.io
    https://github.com/python-websockets/websockets
    )wssr   )socks4socks4asocks5socks5hr   c                    t                      j        |i | i | _        dD ]}t          j        |          }t          j        t          j                  }|                    t          j	        | j
         d                     || j        |<   |                    |           | j        r|                    t          j                   d S )N)zwebsockets.clientzwebsockets.server)streamz: %(message)s)r&   r'   _WebsocketsRH__logging_handlerslogging	getLoggerStreamHandlersysstdoutsetFormatter	FormatterRH_NAME
addHandlerverbosesetLevelDEBUG)r/   argskwargsnameloggerhandlerr0   s         r1   r'   zWebsocketsRH.__init__g   s    $)&)))"$> 	/ 	/D&t,,F+3:>>>G  !2dl3Q3Q3Q!R!RSSS,3D#D)g&&&| /...	/ 	/r   c                    t                                          |           |                    dd            |                    dd            |                    dd            |                    dd            d S )Ntimeout	cookiejar
legacy_sslkeep_header_casing)r&   _check_extensionspop)r/   
extensionsr0   s     r1   ri   zWebsocketsRH._check_extensionss   sr    !!*---y$'''{D)))|T***+T22222r   c                    | j                                         D ],\  }}t          j        |                              |           -d S r3   )rR   itemsrS   rT   removeHandler)r/   ra   rc   s      r1   r4   zWebsocketsRH.closez   sR     "4::<< 	; 	;MD'd##11'::::	; 	;r   c                    d|vr8|                      |          }|                    |j                  }|r	||d<   d S d S d S )Ncookie)_get_cookiejarget_cookie_headerr"   )r/   requestr#   rf   cookie_headers        r1   _prepare_headerszWebsocketsRH._prepare_headers   s_    7""++G44I%77DDM 2$1!!!	 #"2 2r   c           
     L   |                      |          }|                     |          }t          |j                  }| j        r	| j        dfnd |d}t          |j        |                     |                    }	 |rRt          |          }t          d|d         |d         ft          j
        t          |j        |j        f|          d|}nt          dd|j        |j        fi|}|                     |j                            d                    }	t"          j        j                            ||j        ||d |j        r|	nd d	          }
t-          |
|j        
          S # t.          $ r}t1          |          |d }~wt"          j        j        $ r}t7          |          |d }~wt8          j        $ r}t=          |          |d }~wt8          j        $ r}t?          |          |d }~wt"          j        j         $ rf}tC          tE          tG          j$        |j%        j&                  |j        |j%        j'        |j%        j(        |j%        j)                            |d }~wtT          tV          t"          j        j,        f$ r}t[          |          |d }~ww xY w)Nr   )source_addressre   addrport)address_create_socket_funcrz   rg   )legacy_ssl_support)sockuriadditional_headersopen_timeoutuser_agent_headersslclose_timeout)r"   r7   r     )._calculate_timeout_get_headersr   r"   rw   r	   _get_proxiesr   r   	functoolspartialr   hostry   _make_sslcontextrk   getr   syncclientconnectsecurer   r>   r   r:   
InvalidURIr   r   SSLCertVerificationErrorr   r   InvalidStatusr   r   r(   r)   r*   r+   r#   r,   r-   OSErrorr=   r;   r   )r/   rs   re   r#   wsuricreate_conn_kwargsproxysocks_proxy_optionsr}   ssl_ctxconnrA   s               r1   _sendzWebsocketsRH._send   s   ))'22##G,,'+&&:>:MWt2A66SW
 
 W[$*;*;G*D*DEE-	1 &;E&B&B#( 08:Mf:UV(1(91EJ
3KM`)b )b  )	  )  "Z4(  ++w?Q?U?UVb?c?c+ddG?)11K#*$"&$|5GG 2  D -Tw{CCCC  	- 	- 	-1%%%1,$/ 	/ 	/ 	/Q'''Q.+ 	9 	9 	9(q111q8| 	+ 	+ 	+###*$2 	 	 	z!*/22J.:1:35 5 5   z'<'OP 	1 	1 	1 q)))q0	1sV   =C*E( (
J#2FJ#F++J#=GJ# G11J#A!I))$J#JJ#)rD   rE   rF   __doc___SUPPORTED_URL_SCHEMES_SUPPORTED_PROXY_SCHEMESr
   	ALL_PROXYNO_PROXY_SUPPORTED_FEATURESrZ   r'   ri   r4   ru   r   rG   rH   s   @r1   rJ   rJ   [   s         
 +I#-x/@AG
/ 
/ 
/ 
/ 
/3 3 3 3 3; ; ;2 2 261 61 61 61 61 61 61r   rJ   )6
__future__r   
contextlibr   r(   rS   r   rV   _helperr   r   r   utils.networkingr	   commonr
   r   r   r:   r   r   r   r   r   r   	websocketr   r   dependenciesr   socksr>   utilsr   ImportErrorwebsockets.versiontuplemapversionsplitwebsockets_version_yt_dlp__versionwebsockets.sync.clientwebsockets.urir   websockets.sync.connectionsuppress	Exceptionr   
connection
Connectionrecv_excr   rJ   r   r   r1   <module>r      s   " " " " " "         				  



 



         
 , + + + + + 3 3 3 3 3 3 3 3 3 3                B A A A A A A A % % % % % % 1 1 1 1 1 1       5
+3
4
44    U33{J,>,F,L,LS,Q,QRRSS %/%7%?"O"O"OJ
+:
;
;;     $ $ $ $ $ $ " ! ! !Z## : :59JO)2: : : : : : : : : : : : : : :"1 "1 "1 "1 "1 1 "1 "1 "1J a1 a1 a1 a1 a1* a1 a1 a1 a1 a1s   )DDD