
    =hg0                        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 d dlZddlm	Z	 ddl
mZ ddlmZmZmZmZmZ ddlmZ ddlmZ d	j-                  g d
      Z e j0                  d      Z G d d      Z e       Z	 	 	 	 d!dej8                  e   dedededej<                  f
dZ G d d      Z  G d d      Z! G d d      Z" G d d      Z# e!d      Z$ e"dd       Z%dZ&y)"    N)Path   )set_minimum_tls_version_1_2)Headers)	CertTypesHeaderTypesTimeoutTypesURLTypesVerifyTypes)URL)get_ca_bundle_from_env:)zECDHE+AESGCMzECDHE+CHACHA20z
DHE+AESGCMzDHE+CHACHA20zECDH+AESGCMz	DH+AESGCMzECDH+AESzDH+AESz
RSA+AESGCMzRSA+AESz!aNULLz!eNULLz!MD5z!DSShttpxc                       e Zd Zy)	UnsetTypeN)__name__
__module____qualname__     ]/var/www/html/phonemate/phone_mate_backend/venv/lib/python3.12/site-packages/httpx/_config.pyr   r   '   s    r   r   certverify	trust_envhttp2returnc                 4    t        | |||      j                  S )Nr   r   r   r   )	SSLConfigssl_contextr   s       r   create_ssl_contextr!   .   s     &IUkr   c            	           e Zd ZdZ e ej                               Zddddddej                  e
   deded	efd
Zdej                  fdZdej                  fdZdej                  fdZdej                  fdZdej                  ddfdZy)r   z
    SSL Configuration.
    NTFr   r   r   r   r   c                f    || _         || _        || _        || _        | j	                         | _        y N)r   r   r   r   load_ssl_contextr    )selfr   r   r   r   s        r   __init__zSSLConfig.__init__@   s1     	"
002r   r   c                     t         j                  d| j                  | j                  | j                  | j
                         | j                  r| j                         S | j                         S )Nz8load_ssl_context verify=%r cert=%r trust_env=%r http2=%r)loggerdebugr   r   r   r   load_ssl_context_verifyload_ssl_context_no_verifyr&   s    r   r%   zSSLConfig.load_ssl_contextN   sT    FKKIINNJJ	
 ;;//11..00r   c                     | j                         }d|_        t        j                  |_        | j                  |       |S )zC
        Return an SSL context for unverified connections.
        F)_create_default_ssl_contextcheck_hostnamessl	CERT_NONEverify_mode_load_client_certs)r&   contexts     r   r,   z$SSLConfig.load_ssl_context_no_verify[   s9     224!&!mm(r   c                    | j                   r!| j                  du rt               }||| _        t        | j                  t        j
                        r| j                  }| j                  |       |S t        | j                  t              r| j                  }n]t        | j                        j                         rt        | j                        }n$t        dj                  | j                              | j                         }t        j                  |_        d|_        t"        j$                  dk\  r	 d|_        	 d|_        |j-                         r4t/        |      }t0        j3                  d|       |j5                  |       nC|j7                         r3t/        |      }t0        j3                  d|       |j5                  |       | j                  |       |S # t(        $ r Y w xY w# t(        $ r Y w xY w)	zA
        Return an SSL context for verified connections.
        TzECould not find a suitable TLS CA certificate bundle, invalid path: {}      Fzload_verify_locations cafile=%r)cafilezload_verify_locations capath=%r)capath)r   r   r   
isinstancer1   
SSLContextr4   boolDEFAULT_CA_BUNDLE_PATHr   existsIOErrorformatr/   CERT_REQUIREDr3   r0   sysversion_infopost_handshake_authAttributeErrorhostname_checks_common_nameis_filestrr)   r*   load_verify_locationsis_dir)r&   	ca_bundler5   ca_bundle_pathr:   r;   s         r   r+   z!SSLConfig.load_ssl_context_verifye   s    >>dkkT1.0I$'dkk3>>2kkG##G,NT*!88N$++%%'!$++.N##)6$++#6 
 224!//!% v%.2+	27G/ !!#(FLL:FC)))8""$(FLL:FC)))8(+ "   		s$   5G =G- 	G*)G*-	G98G9c                    t        j                  t         j                        }t        |       |xj                  t         j
                  z  c_        |j                  t               t         j                  r$| j                  rddgndg}|j                  |       t        j                  dk\  r4t        j                  j                  d      }|r| j                   r||_        |S )zy
        Creates the default SSLContext object that's used for both verified
        and unverified connections.
        zhttp/1.1h2r7   SSLKEYLOGFILE)r1   r=   PROTOCOL_TLS_CLIENTr   optionsOP_NO_COMPRESSIONset_ciphersDEFAULT_CIPHERSHAS_ALPNr   set_alpn_protocolsrD   rE   osenvirongetr   keylog_filename)r&   r5   alpn_idents
keylogfiles       r   r/   z%SSLConfig._create_default_ssl_context   s    
 ..!8!89#G,3000O,<<04

:t,K&&{3v%8Jdnn*4'r   r    c                 ,   | j                   t        | j                   t              r|j                  | j                          yt        | j                   t              rFt        | j                         dk(  r.|j                  | j                   d   | j                   d          yt        | j                   t              rUt        | j                         dk(  r<|j                  | j                   d   | j                   d   | j                   d          yyyy)	zF
        Loads client certificates into our SSLContext object
        N)certfile   r   r   )r`   keyfiler8   )r`   rb   password)r   r<   rJ   load_cert_chaintuplelen)r&   r    s     r   r4   zSSLConfig._load_client_certs   s     99 $))S)++TYY+?DIIu-#dii.A2E++TYYq\499UV<+XDIIu-#dii.A2E++!YYq\ IIaL!YYq\ ,  3F- !r   )r   r   r   __doc__r   certifiwherer?   typingOptionalr   r   r>   r'   r1   r=   r%   r,   r+   r/   r4   r   r   r   r   r   9   s     "-'--/2
 ,0"3 ooi(3 	3
 3 31#.. 1CNN 6 6pS^^ *cnn  r   r   c                   N   e Zd ZdZefeeeeddej                  eef   dej                  de	ef   dej                  de	ef   dej                  de	ef   dej                  de	ef   f
d	Z
d
ej                  eej                  e	   f   fdZdej                  d
efdZd
efdZy)Timeouta  
    Timeout configuration.

    **Usage**:

    Timeout(None)               # No timeouts.
    Timeout(5.0)                # 5s timeout on all operations.
    Timeout(None, connect=5.0)  # 5s timeout on connect, no other timeouts.
    Timeout(5.0, connect=10.0)  # 10s timeout on connect. 5s timeout elsewhere.
    Timeout(5.0, pool=None)     # No timeout on acquiring connection from pool.
                                # 5s timeout elsewhere.
    connectreadwritepooltimeoutro   Nrp   rq   rr   c                t   t        |t              rm|t        u sJ |t        u sJ |t        u sJ |t        u sJ |j                  | _        |j                  | _        |j
                  | _        |j                  | _        y t        |t              rO|d   | _        |d   | _        t        |      dk  rd n|d   | _        t        |      dk  rd | _        y |d   | _        y t        |t              sMt        |t              s=t        |t              s-t        |t              s|| _        || _        || _        || _        y t        |t              rt        d      t        |t              r|n|| _        t        |t              r|n|| _        t        |t              r|n|| _        t        |t              r|n|| _        y )Nr   r   r8   ra      zShttpx.Timeout must either include a default, or set all four parameters explicitly.)r<   rm   UNSETro   rp   rq   rr   re   rf   r   
ValueError)r&   rs   ro   rp   rq   rr   s         r   r'   zTimeout.__init__   sj    gw'e###5= =E>!>5= ="??DLDI DJDI'"1:DL
DI!$W!1wqzDJ #Gq 0DIgajDIw	*$	*%+$	*"DLDIDJDI'9- 2  '1)&D7'DL#-dI#>DDI$.ui$@eDJ#-dI#>DDIr   r   c                 `    | j                   | j                  | j                  | j                  dS )Nrn   rn   r-   s    r   as_dictzTimeout.as_dict   s(    ||IIZZII	
 	
r   otherc                    t        || j                        xrj | j                  |j                  k(  xrO | j                  |j                  k(  xr4 | j                  |j                  k(  xr | j
                  |j
                  k(  S r$   )r<   	__class__ro   rp   rq   rr   r&   rz   s     r   __eq__zTimeout.__eq__  sm    udnn- (-(		UZZ'( 

ekk)( 		UZZ'	
r   c           
      8   | j                   j                  }t        | j                  | j                  | j
                  | j                  h      dk(  r| d| j                   dS | d| j                   d| j                   d| j
                   d| j                   d
S )Nr   z	(timeout=)z	(connect=z, read=z, write=z, pool=)r|   r   rf   ro   rp   rq   rr   r&   
class_names     r   __repr__zTimeout.__repr__  s    ^^,,
diiTYY?@AE \4<<.::l)DLL> 2II;htzzl'$))AG	
r   )r   r   r   rg   rv   rj   Unionr	   r   floatr'   DictrJ   rk   ry   Anyr>   r~   r   r   r   r   rm   rm      s     :?,I 9>5:6;5:,IlI56,I dE945	,I
 ll4	12,I ||D%23,I ll4	12,I\
S&//%*@%@A 

FJJ 
4 

# 
r   rm   c                       e Zd ZdZdddddej
                  e   dej
                  e   dej
                  e   fdZd	ej                  d
e
fdZd
efdZy)Limitsa  
    Configuration for limits to various client behaviors.

    **Parameters:**

    * **max_connections** - The maximum number of concurrent connections that may be
            established.
    * **max_keepalive_connections** - Allow the connection pool to maintain
            keep-alive connections below this point. Should be less than or equal
            to `max_connections`.
    * **keepalive_expiry** - Time limit on idle keep-alive connections in seconds.
    N      @max_connectionsmax_keepalive_connectionskeepalive_expiryr   r   r   c                .    || _         || _        || _        y r$   r   )r&   r   r   r   s       r   r'   zLimits.__init__(  s      /)B& 0r   rz   r   c                     t        || j                        xrO | j                  |j                  k(  xr4 | j                  |j                  k(  xr | j                  |j                  k(  S r$   )r<   r|   r   r   r   r}   s     r   r~   zLimits.__eq__3  se    udnn- @$$(=(==@..%2Q2QQ@ %%)?)??		
r   c                     | j                   j                  }| d| j                   d| j                   d| j                   dS )Nz(max_connections=z, max_keepalive_connections=z, keepalive_expiry=r   )r|   r   r   r   r   r   s     r   r   zLimits.__repr__;  sT    ^^,,
l+D,@,@+A B))-)G)G(H I  $ 5 56a9	
r   )r   r   r   rg   rj   rk   intr   r'   r   r>   r~   rJ   r   r   r   r   r   r     ss      15:>36	1  -	1 $*??3#7		1
 !//%0	1
FJJ 
4 

# 
r   r   c                       e Zd Zddddedej
                  ej                  eef      dej
                  e   fdZ	e
dej
                  ej                  eef      fd       Zdefd	Zy)
ProxyN)authheadersurlr   r   c                   t        |      }t        |      }|j                  dvrt        d|      |j                  s|j
                  r+|j                  |j
                  f}|j                  d d       }|| _        || _        || _	        y )N)httphttpssocks5zUnknown scheme for proxy URL )usernamerc   )
r   r   schemerw   r   rc   	copy_withr   r   r   )r&   r   r   r   s       r   r'   zProxy.__init__E  s}     #h'"::88<SGDEE<<3<<LL#,,/D---=C	r   r   c                     | j                   d S | j                   d   j                  d      | j                   d   j                  d      fS )Nr   zutf-8r   )r   encoder-   s    r   raw_authzProxy.raw_auth[  sM    
 yy  	
 ))A,%%g.		!0C0CG0LM	
r   c                     | j                   r| j                   d   dfnd }t        | j                        }|rd|nd}| j                  rdt	        | j                        nd}d| | | dS )Nr   z********z, auth= z
, headers=zProxy(r   )r   rJ   r   r   dict)r&   r   url_strauth_strheaders_strs        r   r   zProxy.__repr__d  ss    -1YY		!j)D ]%)-WTH%2=A\\
4#5"89ry
;-q99r   )r   r   r   r
   rj   rk   TuplerJ   r   r'   propertybytesr   r   r   r   r   r   r   D  s    
 9=04 oofll3845	
 -, 
&//&,,ue|*DE 
 
:# :r   r   r   )rs   d      )r   r   )NTTF)'loggingrY   r1   rD   rj   pathlibr   rh   _compatr   _modelsr   _typesr   r   r	   r
   r   _urlsr   _utilsr   joinrV   	getLoggerr)   r   rv   rk   r>   r=   r!   r   rm   r   r   DEFAULT_TIMEOUT_CONFIGDEFAULT_LIMITSDEFAULT_MAX_REDIRECTSr   r   r   <module>r      s    	 
 
    0  O O  *((( 
		7	#	 	 	 (,	
//)
$  	
 	^^G GTT
 T
n'
 '
T(: (:V !- rJ r   