
    i                         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 d dl	m
Z
mZ d dlmZmZ ddlmZ d dlmZmZ  G d d	e      Zy)
    N)BaseTransportRequestResponseSyncByteStreamLimits)DEFAULT_LIMITScreate_ssl_context)ResponseStreammap_httpcore_exceptions   )	SyncProxy)	ProxyTypeparse_proxy_urlc                       e Zd Zdddddddeddedededej                  de	d	e
fd
ZdedefdZed        ZddZd ZddZy)SyncProxyTransportNT)usernamepasswordrdns	proxy_sslverifycert	trust_envlimits
proxy_type
proxy_host
proxy_portr   r   r   c                    t        ||	|
      }t        d|||||||||j                  |j                  |j                  d|| _        y )N)r   r   r   )r   r   r   r   r   r   r   ssl_contextmax_connectionsmax_keepalive_connectionskeepalive_expiry )r	   r   r   r    r!   _pool)selfr   r   r   r   r   r   r   r   r   r   r   kwargsr   s                 N/root/searxng-venv/lib/python3.12/site-packages/httpx_socks/_sync_transport.py__init__zSyncProxyTransport.__init__   sg      )
  
!!!#"22&,&F&F#44
 

    requestreturnc           	         t        |j                  t              sJ t        j                  |j
                  t        j                  |j                  j                  |j                  j                  |j                  j                  |j                  j                        |j                  j                  |j                  |j                        }t               5  | j                   j#                  |      }d d d        t        j                  t$        j&                        sJ t)        |j*                  |j                  t-        |j                        |j                        S # 1 sw Y   oxY w)N)schemehostporttarget)methodurlheaderscontent
extensions)status_coder2   streamr4   )
isinstancer6   r   httpcorer   r0   URLr1   
raw_schemeraw_hostr.   raw_pathr2   rawr4   r   r#   handle_requesttypingIterabler   statusr
   )r$   r)   reqresps       r&   r>   z!SyncProxyTransport.handle_request7   s   '...999>>{{--[[))[[%%{{++	 OO''NN))
 %& 	2::,,S1D	2 $++v777LL!$++.	
 	
	2 	2s   E$$E-c           	      @    t        |      \  }}}}} | d|||||d|S )N)r   r   r   r   r   r"   )r   )clsr1   r%   r   r-   r.   r   r   s           r&   from_urlzSyncProxyTransport.from_urlS   sB    5DS5I2
D$( 
!
 
 	
r(   c                 8    | j                   j                          y N)r#   closer$   s    r&   rI   zSyncProxyTransport.close_   s    

r(   c                 :    | j                   j                          | S rH   )r#   	__enter__rJ   s    r&   rL   zSyncProxyTransport.__enter__b   s    

r(   c                 |    t               5  | j                  j                  |||       d d d        y # 1 sw Y   y xY wrH   )r   r#   __exit__)r$   exc_type	exc_value	tracebacks       r&   rN   zSyncProxyTransport.__exit__f   s7    $& 	@JJ)Y?	@ 	@ 	@s   2;)r*   N)NNN)__name__
__module____qualname__r   r   strintssl
SSLContextboolr   r'   r   r   r>   classmethodrF   rI   rL   rN   r"   r(   r&   r   r      s     $('#
 #
 	#

 #
 >>#
 #
 #
J
g 
( 
8 	
 	
@r(   r   )rW   r?   r8   httpxr   r   r   r   r   httpx._configr   r	   httpx._transports.defaultr
   r   _sync_proxyr   python_socksr   r   r   r"   r(   r&   <module>r`      s2    
   J J = M " 3W@ W@r(   