
    WhB.                        d dl Z d dlZd dlZd dlmZ d dlmZ d dlZddlm	Z	 ddl
mZmZ ddlmZmZmZmZmZ ddlmZmZ d	                    g d
          Z ee          Z G d d          Z e            Z	 	 	 	 d"d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%dS )#    N)	b64encode)Path   )set_minimum_tls_version_1_2)URLHeaders)	CertTypesHeaderTypesTimeoutTypesURLTypesVerifyTypes)get_ca_bundle_from_env
get_logger:)zECDHE+AESGCMzECDHE+CHACHA20z
DHE+AESGCMzDHE+CHACHA20zECDH+AESGCMz	DH+AESGCMzECDH+AESzDH+AESz
RSA+AESGCMzRSA+AESz!aNULLz!eNULLz!MD5z!DSSc                       e Zd ZdS )	UnsetTypeN)__name__
__module____qualname__     S/var/www/html/movieo_spanner_bot/venv/lib/python3.11/site-packages/httpx/_config.pyr   r   %   s        Dr   r   TFcertverify	trust_envhttp2returnc                 2    t          | |||          j        S )Nr   r   r   r   )	SSLConfigssl_contextr   s       r   create_ssl_contextr"   ,   s'     &IU  r   c            	           e Zd ZdZ e ej                              Zdddddd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dS )r    z
    SSL Configuration.
    NTFr   r   r   r   r   c                p    || _         || _        || _        || _        |                                 | _        d S N)r   r   r   r   load_ssl_contextr!   )selfr   r   r   r   s        r   __init__zSSLConfig.__init__>   s:     	"
0022r   r   c           
          t                               d| j        d| j        d| j        d| j                   | j        r|                                 S |                                 S )Nzload_ssl_context verify=z cert=z trust_env=z http2=)loggertracer   r   r   r   load_ssl_context_verifyload_ssl_context_no_verifyr'   s    r   r&   zSSLConfig.load_ssl_contextL   s    $k$ $I$ $ $ $ Z	$ $	
 	
 	
 ; 	2//111..000r   c                     |                                  }d|_        t          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_verifyY   s@     2244!&!m(((r   c                    | j         r | j        du rt                      }||| _        t          | j        t          j                  r| j        }|                     |           |S t          | j        t                    r| j        }nbt          | j                  
                                rt          | j                  }n't          d                    | j                            |                                 }t          j        |_        d|_        	 d|_        n# t$          $ r Y nw xY w	 d|_        n# t$          $ r Y nw xY w|                                rAt*                              d|           |                    t1          |                     nT|                                r@t*                              d|           |                    t1          |                     |                     |           |S )	zA
        Return an SSL context for verified connections.
        TNzECould not find a suitable TLS CA certificate bundle, invalid path: {}Fzload_verify_locations cafile=)cafilezload_verify_locations capath=)capath)r   r   r   
isinstancer2   
SSLContextr5   boolDEFAULT_CA_BUNDLE_PATHr   existsIOErrorformatr0   CERT_REQUIREDr4   r1   post_handshake_authAttributeErrorhostname_checks_common_nameis_filer*   r+   load_verify_locationsstris_dir)r'   	ca_bundler6   ca_bundle_paths       r   r,   z!SSLConfig.load_ssl_context_verifyc   s    > 	(dkT11.00I$'dk3>22 	kG##G,,,NT** 	!8NN$+%%'' 	!$+..NN##)6$+#6#6  
 2244!/!%	*.G'' 	 	 	D	
	27G// 	 	 	D	 !!## 	FLLKKKLLL))^1D1D)EEEE""$$ 	FLLKKKLLL))^1D1D)EEE(((s$   D 
D+*D+/D7 7
EEc                    t          j        t           j                  }t          |           |xj        t           j        z  c_        |                    t                     t           j        r#| j	        rddgndg}|
                    |           t          |d          r/t          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h2keylog_filenameSSLKEYLOGFILE)r2   r;   PROTOCOL_TLS_CLIENTr   optionsOP_NO_COMPRESSIONset_ciphersDEFAULT_CIPHERSHAS_ALPNr   set_alpn_protocolshasattrosenvirongetr   rM   )r'   r6   alpn_idents
keylogfiles       r   r0   z%SSLConfig._create_default_ssl_context   s    
 .!899#G,,,300O,,,< 	404
L:t,,K&&{3337-.. 	588J 5dn 5*4'r   r!   c                 (   | j         t          | j         t                    r|                    | j                    dS t          | j         t                    rGt          | j                   dk    r/|                    | j         d         | j         d                    dS t          | j         t                    rUt          | j                   dk    r?|                    | j         d         | j         d         | j         d                    dS dS dS dS )	zF
        Loads client certificates into our SSLContext object
        N)certfile   r   r   )r]   keyfile   )r]   r_   password)r   r:   rG   load_cert_chaintuplelen)r'   r!   s     r   r5   zSSLConfig._load_client_certs   s    9 $)S)) 	++TY+?????DIu-- #di..A2E2E++TYq\49UV<+XXXXXDIu-- #di..A2E2E++!Yq\ IaL!Yq\ ,      ! 
 2E2Er   )r   r   r   __doc__r   certifiwherer=   r	   r   r<   r(   r2   r;   r&   r-   r,   r0   r5   r   r   r   r    r    7   s%         "T-'-//22
 "3 3 3 3 	3
 3 3 3 3 31#. 1 1 1 1CN    3 3 3 3 3jS^    *cn       r   r    c                   *   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dS )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timeoutrk   Nrl   rm   rn   c                   t          |t                    r^|t          u sJ |t          u sJ |t          u sJ |t          u sJ |j        | _        |j        | _        |j        | _        |j        | _        d S t          |t                    r`|d         | _        |d         | _        t          |          dk     rd n|d         | _        t          |          dk     rd n|d         | _        d S t          |t                    s]t          |t                    sHt          |t                    s3t          |t                    s|| _        || _        || _        || _        d S t          |t                    rt          d          t          |t                    r|n|| _        t          |t                    r|n|| _        t          |t                    r|n|| _        t          |t                    r|n|| _        d S )Nr   r   r`   r^      zShttpx.Timeout must either include a default, or set all four parameters explicitly.)r:   ri   UNSETrk   rl   rm   rn   rc   rd   r   
ValueError)r'   ro   rk   rl   rm   rn   s         r   r(   zTimeout.__init__   s    gw'' #	Ie####5====E>>>>5===="?DLDI DJDIII'' 	I"1:DL
DI!$W!1!1wqzDJ #Gq 0 0gajDIIIw	**	I$	**	I %++	I $	**		I #DLDIDJDIII'9--  2   '1)&D&DQ77'DL#-dI#>#>HDDI$.ui$@$@KeDJ#-dI#>#>HDDIIIr   r   c                 8    | j         | j        | j        | j        dS )Nrj   rj   r.   s    r   as_dictzTimeout.as_dict   s%    |IZI	
 
 	
r   otherc                     t          || j                  o?| j        |j        k    o/| j        |j        k    o| j        |j        k    o| j        |j        k    S r%   )r:   	__class__rk   rl   rm   rn   r'   rv   s     r   __eq__zTimeout.__eq__  s^    udn-- (-(	UZ'( 
ek)( 	UZ'	
r   c           
          | 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=)rx   r   rd   rk   rl   rm   rn   r'   
class_names     r   __repr__zTimeout.__repr__  s    ^,
diTY?@@AEE ::4<:::: G GDL G GIG G'+zG G:>)G G G	
r   )r   r   r   re   rr   typingUnionr   r   floatr(   DictrG   Optionalru   Anyr<   rz   r   r   r   r   ri   ri      sB         :?,I 9>5:6;5:,I ,I ,IlI56,I dE945	,I
 l4	12,I |D%23,I l4	12,I ,I ,I ,I\
S&/%*@%@A 
 
 
 

FJ 
4 
 
 
 

# 
 
 
 
 
 
r   ri   c                   l    e Zd ZdZdddddededej        e         fdZd	ej	        d
e
fdZd
efdZdS )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`.
    N      @max_connectionsmax_keepalive_connectionskeepalive_expiryr   r   r   c                0    || _         || _        || _        d S r%   r   )r'   r   r   r   s       r   r(   zLimits.__init__"  s"      /)B& 0r   rv   r   c                     t          || j                  o/| j        |j        k    o| j        |j        k    o| j        |j        k    S r%   )r:   rx   r   r   r   ry   s     r   rz   zLimits.__eq__-  sT    udn-- @$(==@.%2QQ@ %)??		
r   c                 T    | j         j        }| d| j         d| j         d| j         dS )Nz(max_connections=z, max_keepalive_connections=z, keepalive_expiry=r|   )rx   r   r   r   r   r}   s     r   r   zLimits.__repr__5  sR    ^,
 9 9D,@ 9 9)-)G9 9 $ 59 9 9	
r   )r   r   r   re   intr   r   r   r(   r   r<   rz   rG   r   r   r   r   r   r     s        
 
  $)-36	1 	1 	1 	1 $'		1
 !/%0	1 	1 	1 	1
FJ 
4 
 
 
 

# 
 
 
 
 
 
r   r   c                   D    e Zd ZdddedefdZdededefd	Zdefd
ZdS )ProxyN)headersurlr   c                F   t          |          }t          |          }|j        dvrt          d|          |j        s|j        rK|                    d|                     |j        |j                             |                    d d           }|| _	        || _
        d S )N)httphttpszUnknown scheme for proxy URL zProxy-Authorization)usernamera   )r   r   schemers   r   ra   
setdefault_build_auth_header	copy_withr   r   )r'   r   r   s      r   r(   zProxy.__init__?  s    #hh'"":...DSDDEEE< 	>3< 	>%''clCC   ---==Cr   r   ra   r   c                     |                     d          |                     d          f}t          d                    |                                                    }d| S )Nzutf-8   :zBasic )encoder   joindecode)r'   r   ra   userpasstokens        r   r   zProxy._build_auth_headerR  sW    OOG,,hoog.F.FG$))H--..5577r   c                 \    dt          | j                  dt          | j                  dS )Nz
Proxy(url=z
, headers=r|   )rG   r   dictr   r.   s    r   r   zProxy.__repr__W  s-    NCMMNNtDL7I7INNNNr   )	r   r   r   r   r
   r(   rG   r   r   r   r   r   r   r   >  s        @D   H +    & 3  #  #        
O# O O O O O Or   r   r   )ro   d      )r   r   )NTTF)&rW   r2   r   base64r   pathlibr   rf   _compatr   _modelsr   r   _typesr	   r
   r   r   r   _utilsr   r   r   rS   r   r*   r   rr   r<   r;   r"   r    ri   r   r   DEFAULT_TIMEOUT_CONFIGDEFAULT_LIMITSDEFAULT_MAX_REDIRECTSr   r   r   <module>r      sh   				 



               0 0 0 0 0 0 ! ! ! ! ! ! ! ! O O O O O O O O O O O O O O 6 6 6 6 6 6 6 6((   ( 
H			 	 	 	 	 	 	 	 		 	 
  	
 	^   D D D D D D D DNT
 T
 T
 T
 T
 T
 T
 T
n&
 &
 &
 &
 &
 &
 &
 &
RO O O O O O O O: !--- rJJJ   r   