
    VGh;                       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jL                  jL                  jO                  d                  Z(e(dk  r&ejL                  jL                   de_)         e"d      d dl*Zd dl+m,Z, d dl-Z ej\                  e/      5  dej`                  jb                  jd                  _3        ddd        G d de      Z4e G d de             Z5y# 1 sw Y   %xY w)    )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 )WebsocketsResponseAdapterc                
   t         |   t        j                  |j                  j
                  xs d      ||j                  j                  |j                  j                  |j                  j                         || _	        y )N    fpurlheadersstatusreason)
super__init__ioBytesIOresponsebodyr!   status_codereason_phrase_ws)selfwsr    	__class__s      f/var/www/it7/html/youtubeDownloader/venv/lib/python3.12/site-packages/yt_dlp/networking/_websockets.pyr%   z"WebsocketsResponseAdapter.__init__8   sc    zz"++**1c2KK'';;**;;,, 	 	
 r   c                V    | j                   j                          t        |           y N)r,   closer$   )r-   r/   s    r0   r3   zWebsocketsResponseAdapter.closeB   s    r   c                   	 | j                   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      r0   r8   zWebsocketsResponseAdapter.sendF   sv    	/88==))%%88,U 	1 q)q0 	-1%1, 	/Q'Q.	/s-    (B	AB	A++B	7BB	c                    	 | j                   j                         S # t        $ r}t        |      |d }~wt        j
                  j                  t        t        f$ r}t        |      |d }~ww xY wr5   )
r,   recvr=   r   r   r9   r:   r;   r<   r   )r-   r@   s     r0   rB   zWebsocketsResponseAdapter.recvQ   s]    	188==?" 	-1%1,%%88,U 	1 q)q0	1s    	A/2+A/A**A/)r.   z'websockets.sync.client.ClientConnection)__name__
__module____qualname__r%   r3   r8   rB   __classcell__r/   s   @r0   r   r   6   s    	/1r   r   c                  z     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        |   |i | i | _        dD ]  }t        j                  |      }t        j
                  t        j                        }|j                  t        j                  | j                   d             || j                  |<   |j                  |       | j                  s|j                  t        j                          y )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handlerr/   s         r0   r%   zWebsocketsRH.__init__g   s    $)&)"$> 	/D&&t,F++3::>G  !2!2dll^=3Q!RS,3D##D)g&||.	/r   c                    t         |   |       |j                  dd        |j                  dd        |j                  dd        |j                  dd        y )Ntimeout	cookiejar
legacy_sslkeep_header_casing)r$   _check_extensionspop)r-   
extensionsr/   s     r0   rh   zWebsocketsRH._check_extensionss   sI    !*-y$'{D)|T*+T2r   c                    | j                   j                         D ])  \  }}t        j                  |      j	                  |       + y r2   )rQ   itemsrR   rS   removeHandler)r-   r`   rb   s      r0   r3   zWebsocketsRH.closez   s?     "44::< 	;MD'd#11':	;r   c                v    d|vr5| j                  |      }|j                  |j                        }|r||d<   y y y )Ncookie)_get_cookiejarget_cookie_headerr    )r-   requestr!   re   cookie_headers        r0   _prepare_headerszWebsocketsRH._prepare_headers   sE    7"++G4I%77DM$1!  #r   c           
        | j                  |      }| j                  |      }t        |j                        }| j                  r| j                  dfnd |d}t        |j                  | j                  |            }	 |rQt        |      }t        d|d   |d   ft        j                  t        |j                  |j                  f|      d|}n#t        dd|j                  |j                  fi|}| j                  |j                  j!                  d            }	t"        j$                  j&                  j)                  ||j                  ||d |j*                  r|	nd d	      }
t-        |
|j                  
      S # t.        $ r}t1        |      |d }~wt"        j2                  j4                  $ r}t7        |      |d }~wt8        j:                  $ r}t=        |      |d }~wt8        j>                  $ r}t?        |      |d }~wt"        j2                  j@                  $ r}tC        tE        tG        jH                  |jJ                  jL                        |j                  |jJ                  jN                  |jJ                  jP                  |jJ                  jR                              |d }~wtT        tV        t"        j2                  jX                  f$ r}t[        |      |d }~ww xY w)Nr   )source_addressrd   addrport)address_create_socket_funcry   rf   )legacy_ssl_support)sockuriadditional_headersopen_timeoutuser_agent_headersslclose_timeout)r    r6   r    )._calculate_timeout_get_headersr   r    rv   r	   _get_proxiesr   r   	functoolspartialr   hostrx   _make_sslcontextrj   getr   syncclientconnectsecurer   r=   r   r9   
InvalidURIr   r   SSLCertVerificationErrorr   r   InvalidStatusr   r   r&   r'   r(   r)   r!   r*   r+   OSErrorr<   r:   r   )r-   rr   rd   r!   wsuricreate_conn_kwargsproxysocks_proxy_optionsr|   ssl_ctxconnr@   s               r0   _sendzWebsocketsRH._send   s   ))'2##G,'++&:>:M:Mt22A6SW
 W[[$*;*;G*DE-	1&;E&B#( 08:Mf:UV(1(9(91EJJ

3KM`)b )	 ) "ZZ4( ++w?Q?Q?U?UVb?c+dG??))11KK#*$"&$||G 2 D -Tw{{CC  	-1%1,$$// 	/Q'Q.++ 	9(q1q8|| 	+#*$$22 	zz!**//2JJ..::11::335  z'<'<'O'OP 	1 q)q0	1sV   =C?E= =	K*F K*3G  K*G##K*9H K*&BJ--+K*K%%K*)rC   rD   rE   __doc___SUPPORTED_URL_SCHEMES_SUPPORTED_PROXY_SCHEMESr
   	ALL_PROXYNO_PROXY_SUPPORTED_FEATURESrY   r%   rh   r3   rt   r   rF   rG   s   @r0   rI   rI   [   sK    
 +I#--x/@/@AG
/3;261r   rI   )6
__future__r   
contextlibr   r&   rR   r   rU   _helperr   r   r   utils.networkingr	   commonr
   r   r   r9   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   rI   r   r   r0   <module>r      s)   "   	  
 
 
 , 3 3  B % 1 
3
44 3{J,>,>,F,F,L,LS,QRS %/%7%7%?%?$@"OJ
:
;;  $ "Z# :59JOO))2:"1 1 "1J a1* a1 a1U: :s   .&D88E