Ë
    $Æ%h)  ã                  óÂ   — 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mZm	Z	m
Z
mZmZmZmZmZ ddlmZ ddlmZmZmZ  G d„ d	e«      Z G d
„ de«      Z G d„ de«      Zy)é    )ÚannotationsNé   )ÚConnectErrorÚConnectTimeoutÚExceptionMappingÚ	ReadErrorÚReadTimeoutÚ
WriteErrorÚWriteTimeoutÚmap_exceptions)Úis_socket_readableé   )ÚSOCKET_OPTIONÚNetworkBackendÚNetworkStreamc                  ó€   — e Zd ZdZdZ	 	 d	 	 	 	 	 	 	 dd„Z	 	 	 	 dd„Zddd„Zddd„Zdd„Z		 	 d	 	 	 	 	 	 	 dd	„Z
dd
„Zy)ÚTLSinTLSStreamzì
    Because the standard `SSLContext.wrap_socket` method does
    not work for `SSLSocket` objects, we need this class
    to implement TLS stream using an underlying `SSLObject`
    instance in order to support TLS on top of TLS.
    i @  Nc                óP  — || _         t        j                  «       | _        t        j                  «       | _        |j                  | j                  | j                  |¬«      | _        | j                   j                  |«       | j                  | j                  j                  «       y )N)ÚincomingÚoutgoingÚserver_hostname)
Ú_sockÚsslÚ	MemoryBIOÚ	_incomingÚ	_outgoingÚwrap_bioÚssl_objÚ
settimeoutÚ_perform_ioÚdo_handshake)ÚselfÚsockÚssl_contextr   Útimeouts        úU/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/httpcore/_backends/sync.pyÚ__init__zTLSinTLSStream.__init__"   sy   € ð ˆŒ
ÜŸ™›ˆŒÜŸ™›ˆŒà"×+Ñ+Ø—^‘^Ø—^‘^Ø+ð ,ó 
ˆŒð 	�
‰
×Ñ˜gÔ&Ø×Ñ˜Ÿ™×2Ñ2Õ3ó    c                óä  — d }	 d }	  |«       }| j                  j                  | j                  j                  «       «       |t         j                  k(  r]| j                  j                  | j                  «      }|r| j                  j                  |«       n| j                  j                  «        |€|S Œ²# t         j                  t         j                  f$ r}|j                  }Y d }~ŒÜd }~ww xY w©N)r   ÚSSLWantReadErrorÚSSLWantWriteErrorÚerrnor   Úsendallr   ÚreadÚSSL_ERROR_WANT_READÚrecvÚTLS_RECORD_SIZEr   ÚwriteÚ	write_eof)r"   ÚfuncÚretr-   ÚeÚbufs         r&   r    zTLSinTLSStream._perform_io6   sÄ   € ð ˆàØˆEð Ù“f�ð �J‰J×Ñ˜tŸ~™~×2Ñ2Ó4Ô5àœ×/Ñ/Ò/Ø—j‘j—o‘o d×&:Ñ&:Ó;�áØ—N‘N×(Ñ(¨Õ-à—N‘N×,Ñ,Ô.Øˆ}Ø�
ð# øô ×(Ñ(¬#×*?Ñ*?Ð@ò  ØŸ™•ûð ús   ‡B6 Â6#C/ÃC*Ã*C/c           
     ó\  — t         j                  t        t        t        i}t        |«      5  | j                  j                  |«       t        j                  t        | j                  t        j                  | j                  j                  |«      «      «      cd d d «       S # 1 sw Y   y xY wr*   )Úsocketr%   r	   ÚOSErrorr   r   r   r   ÚtypingÚcastÚbytesr    Ú	functoolsÚpartialr   r/   ©r"   Ú	max_bytesr%   Úexc_maps       r&   r/   zTLSinTLSStream.readO   sv   € Ü%+§^¡^´[Ä'Ì9Ð$UˆÜ˜GÓ$ñ 	Ø�J‰J×!Ñ! 'Ô*Ü—;‘;Ü�t×'Ñ'¬	×(9Ñ(9¸$¿,¹,×:KÑ:KÈYÓ(WÓXó÷	÷ 	ò 	ús   ¬A,B"Â"B+c                ó@  — t         j                  t        t        t        i}t        |«      5  | j                  j                  |«       |rA| j                  t        j                  | j                  j                  |«      «      }||d  }|rŒAd d d «       y # 1 sw Y   y xY wr*   )r:   r%   r   r;   r
   r   r   r   r    r?   r@   r   r3   )r"   Úbufferr%   rC   Únsents        r&   r3   zTLSinTLSStream.writeW   s}   € Ü%+§^¡^´\Ä7ÌJÐ$WˆÜ˜GÓ$ñ 	(Ø�J‰J×!Ñ! 'Ô*ÙØ×(Ñ(¬×):Ñ):¸4¿<¹<×;MÑ;MÈvÓ)VÓW�Ø  ˜�ò ÷	(÷ 	(ñ 	(ús   ¬ABÂBc                ó8   — | j                   j                  «        y r*   ©r   Úclose©r"   s    r&   rI   zTLSinTLSStream.close_   ó   € Ø�
‰
×ÑÕr(   c                ó   — t        «       ‚r*   )ÚNotImplementedError)r"   r$   r   r%   s       r&   Ú	start_tlszTLSinTLSStream.start_tlsb   s   € ô "Ó#Ð#r(   c                óø   — |dk(  r| j                   S |dk(  r| j                  j                  «       S |dk(  r| j                  j                  «       S |dk(  r| j                  S |dk(  rt	        | j                  «      S y ©NÚ
ssl_objectÚclient_addrÚserver_addrr:   Úis_readable)r   r   ÚgetsocknameÚgetpeernamer   ©r"   Úinfos     r&   Úget_extra_infozTLSinTLSStream.get_extra_infoj   sv   € Ø�<ÒØ—<‘<ÐØ�=Ò Ø—:‘:×)Ñ)Ó+Ð+Ø�=Ò Ø—:‘:×)Ñ)Ó+Ð+Ø�8ÒØ—:‘:ÐØ�=Ò Ü% d§j¡jÓ1Ð1Ør(   ©NN)r#   úsocket.socketr$   ússl.SSLContextr   ú
str | Noner%   úfloat | None)r5   z typing.Callable[..., typing.Any]Úreturnú
typing.Anyr*   ©rB   Úintr%   r^   r_   r>   ©rE   r>   r%   r^   r_   ÚNone©r_   rd   ©r$   r\   r   r]   r%   r^   r_   r   ©rX   Ústrr_   r`   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r2   r'   r    r/   r3   rI   rN   rY   © r(   r&   r   r      sŸ   „ ñð €Oð '+Ø $ð4àð4ð $ð4ð $ð	4ð
 ó4ð(à.ðð 
óô2ô(óð '+Ø $ð	$à#ð$ð $ð$ð ð	$ð
 
ó$ôr(   r   c                  óT   — e Zd Zdd„Zd	d
d„Zd	dd„Zdd„Z	 	 d	 	 	 	 	 	 	 dd„Zdd„Zy)Ú
SyncStreamc                ó   — || _         y r*   )r   )r"   r#   s     r&   r'   zSyncStream.__init__y   s	   € Øˆ�
r(   Nc                óð   — t         j                  t        t        t        i}t        |«      5  | j                  j                  |«       | j                  j                  |«      cd d d «       S # 1 sw Y   y xY wr*   )	r:   r%   r	   r;   r   r   r   r   r1   rA   s       r&   r/   zSyncStream.read|   sS   € Ü%+§^¡^´[Ä'Ì9Ð$UˆÜ˜GÓ$ñ 	.Ø�J‰J×!Ñ! 'Ô*Ø—:‘:—?‘? 9Ó-÷	.÷ 	.ò 	.ús   ¬6A,Á,A5c                ó
  — |sy t         j                  t        t        t        i}t        |«      5  |r>| j                  j                  |«       | j                  j                  |«      }||d  }|rŒ>d d d «       y # 1 sw Y   y xY wr*   )	r:   r%   r   r;   r
   r   r   r   Úsend)r"   rE   r%   rC   Úns        r&   r3   zSyncStream.write‚   sn   € ÙØä%+§^¡^´\Ä7ÌJÐ$WˆÜ˜GÓ$ñ 	$ÙØ—
‘
×%Ñ% gÔ.Ø—J‘J—O‘O FÓ+�Ø  ˜�ò ÷	$÷ 	$ñ 	$ús   ¯A A9Á9Bc                ó8   — | j                   j                  «        y r*   rH   rJ   s    r&   rI   zSyncStream.close�   rK   r(   c                óð  — t         j                  t        t        t        i}t        |«      5  	 t        | j                  t        j                  «      r!t        | j                  |||«      cd d d «       S | j                  j                  |«       |j                  | j                  |¬«      }	 d d d «       t        |«      S # t        $ r}| j                  «        |‚d }~ww xY w# 1 sw Y   t        «      S xY w)N)r   )r:   r%   r   r;   r   r   Ú
isinstancer   r   Ú	SSLSocketr   r   Úwrap_socketÚ	ExceptionrI   ro   )r"   r$   r   r%   rC   r#   Úexcs          r&   rN   zSyncStream.start_tls�   s×   € ô �N‰NœNÜ”\ð%
ˆô ˜GÓ$ñ 	ðÜ˜dŸj™j¬#¯-©-Ô8ô *ØŸ
™
 K°À'ó÷	ñ 	ð —J‘J×)Ñ)¨'Ô2Ø&×2Ñ2ØŸ
™
°Oð 3ó ‘D÷	ô" ˜$ÓÐøô ò Ø—
‘
”Ø�	ûðú÷	ô" ˜$ÓÐús.   ¬C"®;B?Á38B?Â?	CÃCÃCÃC"Ã"C5c                óT  — |dk(  r:t        | j                  t        j                  «      r| j                  j                  S |dk(  r| j                  j                  «       S |dk(  r| j                  j                  «       S |dk(  r| j                  S |dk(  rt        | j                  «      S y rP   )rw   r   r   rx   Ú_sslobjrU   rV   r   rW   s     r&   rY   zSyncStream.get_extra_info­   s�   € Ø�<Ò¤J¨t¯z©z¼3¿=¹=Ô$IØ—:‘:×%Ñ%Ð%Ø�=Ò Ø—:‘:×)Ñ)Ó+Ð+Ø�=Ò Ø—:‘:×)Ñ)Ó+Ð+Ø�8ÒØ—:‘:ÐØ�=Ò Ü% d§j¡jÓ1Ð1Ør(   )r#   r[   r_   rd   r*   ra   rc   re   rZ   rf   rg   )	ri   rj   rk   r'   r/   r3   rI   rN   rY   rm   r(   r&   ro   ro   x   sN   „ óô.ô	$óð '+Ø $ð	 à#ð ð $ð ð ð	 ð
 
ó ô:r(   ro   c                  óN   — e Zd Z	 	 	 d	 	 	 	 	 	 	 	 	 	 	 dd„Z	 	 d	 	 	 	 	 	 	 dd„Zy)ÚSyncBackendNc                ó†  — |€g }||f}|€d n|df}t         j                  t        t        t        i}t        |«      5  t        j                  |||¬«      }	|D ]  }
 |	j                  |
Ž  Œ |	j                  t         j                  t         j                  d«       d d d «       t        |	«      S # 1 sw Y   t        	«      S xY w)Nr   )Úsource_addressr   )r:   r%   r   r;   r   r   Úcreate_connectionÚ
setsockoptÚIPPROTO_TCPÚTCP_NODELAYro   )r"   ÚhostÚportr%   Úlocal_addressÚsocket_optionsÚaddressr�   rC   r#   Úoptions              r&   Úconnect_tcpzSyncBackend.connect_tcp¼   sÉ   € ð Ð!ØˆNØ˜�,ˆØ!.Ð!6™¸]ÈAÐ<Nˆä�N‰NœNÜ”\ð%
ˆô
 ˜GÓ$ñ 	GÜ×+Ñ+ØØØ-ôˆDð
 )ò )�Ø�—‘ Ò(ð)à�O‰OœF×.Ñ.´×0BÑ0BÀAÔF÷	Gô ˜$ÓÐ÷	Gô ˜$ÓÐús   ¼AB-Â-C c                óÄ  — t         j                  dk(  rt        d«      ‚|€g }t        j                  t
        t        t        i}t        |«      5  t        j                  t        j                  t        j                  «      }|D ]  } |j                  |Ž  Œ |j                  |«       |j                  |«       d d d «       t        |«      S # 1 sw Y   t        «      S xY w)NÚwin32z:Attempted to connect to a UNIX socket on a Windows system.)ÚsysÚplatformÚRuntimeErrorr:   r%   r   r;   r   r   ÚAF_UNIXÚSOCK_STREAMrƒ   r   Úconnectro   )r"   Úpathr%   r‰   rC   r#   r‹   s          r&   Úconnect_unix_socketzSyncBackend.connect_unix_socketÚ   sÇ   € ô �<‰<˜7Ò"ÜØLóð ð Ð!ØˆNô �N‰NœNÜ”\ð%
ˆô ˜GÓ$ñ 	Ü—=‘=¤§¡´×1CÑ1CÓDˆDØ(ò )�Ø�—‘ Ò(ð)à�O‰O˜GÔ$Ø�L‰L˜Ô÷	ô ˜$ÓÐ÷	ô ˜$ÓÐús   ÁA+CÃC)NNN)r†   rh   r‡   rb   r%   r^   rˆ   r]   r‰   ú%typing.Iterable[SOCKET_OPTION] | Noner_   r   rZ   )r•   rh   r%   r^   r‰   r—   r_   r   )ri   rj   rk   rŒ   r–   rm   r(   r&   r   r   »   s€   „ ð
 !%Ø$(Ø@Dð àð ð ð ð ð	 ð
 "ð ð >ð ð 
ó ðB !%Ø@Dð	 àð ð ð ð >ð	 ð
 
ô r(   r   )Ú
__future__r   r?   r:   r   r�   r<   Ú_exceptionsr   r   r   r   r	   r
   r   r   Ú_utilsr   Úbaser   r   r   r   ro   r   rm   r(   r&   ú<module>rœ      s[   ðÝ "ã Û Û 
Û 
Û ÷	÷ 	ó 	õ (ß >Ñ >ô^�]ô ^ôB@�ô @ôF6 �.õ 6 r(   