Ë
    š„j;  ã                  óˆ  — 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      €úT/var/www/html/GAP/venv/lib/python3.12/site-packages/yt_dlp/networking/_websockets.pyr%   z"WebsocketsResponseAdapter.__init__8   sc   ø€ Ü‰ÑÜ�z‰z˜"Ÿ+™+×*Ñ*Ò1¨cÓ2ØØ—K‘K×'Ñ'Ø—;‘;×*Ñ*Ø—;‘;×,Ñ,ð 	ô 	
ð ˆ�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   € ð	/Ø—8‘8—=‘= Ó)Ð)øÜ×%Ñ%×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Ø—8‘8—=‘=“?Ð"øÜò 	-Ü 1Ô%¨1Ð,ûÜ×%Ñ%×8Ñ8¼,ÌÐUò 	1Ü  qÔ)¨qÐ0ûð	1ús   ‚ œ	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Ñ!2°d·l±l°^À=Ð3QÓ!RÔSØ,3ˆD×#Ñ# 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×:Ñ:Ó<ò 	;‰MˆD�'Ü×Ñ˜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Ó4ˆIØ%×7Ñ7¸¿¹ÓDˆMÙØ$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Ò:M˜t×2Ñ2°AÑ6ÐSWØñ
Ðô ˜WŸ[™[¨$×*;Ñ*;¸GÓ*DÓEˆð-	1ÙÜ&;¸EÓ&BÐ#Ü(ð Ø0°Ñ8Ð:MÈfÑ:UÐVÜ(1×(9Ñ(9Ü1°E·J±JÀÇ
Á
Ð3KÐM`ó)bñð )ñ	‘ô )ñ Ø"ŸZ™Z¨¯©Ð4ðà(ñ�ð ×+Ñ+¸w×?QÑ?Q×?UÑ?UÐVbÓ?cÐ+ÓdˆGÜ—?‘?×)Ñ)×1Ñ1ØØ—K‘KØ#*Ø$Ø"&Ø$Ÿ|š|‘G°Øð 2ó ˆDô -¨T°w·{±{ÔCÐCøô ò 	-Ü 1Ô%¨1Ð,ûÜ×$Ñ$×/Ñ/ò 	/Ü QÔ'¨QÐ.ûÜ×+Ñ+ò 	9Ü(¨qÔ1°qÐ8ûÜ�|‰|ò 	+Ü Ô#¨Ð*ûÜ×$Ñ$×2Ñ2ò 	ÜÜÜ—z‘z !§*¡*§/¡/Ó2ØŸ™ØŸJ™J×.Ñ.ØŸ:™:×1Ñ1ØŸ:™:×3Ñ3ô5óð ðûô œ¤z×'<Ñ'<×'OÑ'OÐPò 	1Ü  qÔ)¨qÐ0ûð	1úsV   Á=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Ñ,LÈSÓ,QÓRÓSÐ Ø˜ÒØ%/×%7Ñ%7×%?Ñ%?Ð$@ÀÐ"O€JÔÙ
Ð:Ó
;Ð;ã Ý $ó "Ø€Z×Ñ˜Ó#ñ :Ø59€J‡O�O×Ñ×)Ñ)Ô2÷:ô"1Ð 1ô "1ðJ ôa1Ð*ó a1ó ña1÷U:ð :ús   Ã.&D8Ä8E