U
    ]~                     @   s  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mZmZmZ ddlmZ ddlmZmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddl m!Z!m"Z" ddl#m$Z$ ddl%m&Z& ddl'm(Z( ddl)m*Z* ddl+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z= ddl>m?Z?m@Z@mAZA G dd dZBG dd deBZCG dd deBZDejEe6 eejEe eejEe ee	eFejGeHef d	ddZIdS )    N)TracebackType   )AsyncioBackend)ConcurrencyBackend)DEFAULT_MAX_REDIRECTSDEFAULT_POOL_LIMITSDEFAULT_TIMEOUT_CONFIG	CertTypesHTTPVersionTypes
PoolLimitsTimeoutTypesVerifyTypes)ASGIDispatch)AsyncDispatcher
Dispatcher)ConnectionPool)	HTTPProxy)ThreadedDispatcher)WSGIDispatch)	HTTPError
InvalidURL)BaseMiddleware)BasicAuthMiddleware)CustomAuthMiddleware)RedirectMiddleware)URLAsyncRequestAsyncRequestDataAsyncResponseAsyncResponseContent	AuthTypesCookiesCookieTypesHeadersHeaderTypesProxiesTypesQueryParamsQueryParamTypesRequestDataRequestFilesResponseResponseContentURLTypes)ElapsedTimerget_environment_proxiesget_netrc_loginc                   @   s  e Zd Zddddddddeeeddddddeeee	e
eeeeeeeejeef ejeedddZeedddZejedd	d
dZeedddZeje	ddddZee dddZ!e!jeddddZ!eddddZ"ee#dddZ$d.e	ej%e	 dddZ&d/eej%e d	ddZ'd0eej%e dddZ(dddddddd e)eeee
eeee*d!	d"d#Z+d1e)eeej%e, d$d%d&Z-e)ej.e/ef ed'd(d)Z0ddddddd*e/ee1e2ej3eee	e)d+	d,d-Z4dS )2
BaseClientNT)authparamsheaderscookiesverifycerthttp_versionsproxiestimeoutpool_limitsmax_redirectsbase_urldispatchappbackend	trust_envc             
   C   sJ  |d krt  }| | |d k	r\tt|j}|dks<t|dkrPt|d}nt||d}|d krhdn|| _	|d krt
|||	||
|| j	d}nt|trt||}n|}|d krtddd| _n
t|| _|d kri }|| _t|| _t|| _t|| _|| _|| _|| _|d kr,|r,ttt }t||||	||
||d| _d S )	N)      rA   )r>   )r>   r?   T)r5   r6   r9   r7   r:   r?   r@    )Zallow_relative) r   check_concurrency_backendleninspect	signature
parametersAssertionErrorr   r   r@   r   
isinstancer   r   r   r<   r1   r&   _paramsr#   _headersr!   _cookiesr;   r=   concurrency_backendtypingcastr%   r.   _proxies_to_dispatchersr8   )selfr1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   Zparam_countZasync_dispatch rS   l/var/www/html/staging.mfahmagazine.net/magazine_api/magazine_env/lib/python3.8/site-packages/httpx/client.py__init__7   s^    
	




zBaseClient.__init__returnc                 C   s   | j S N)rL   rR   rS   rS   rT   r3      s    zBaseClient.headers)r3   rW   c                 C   s   t || _d S rX   )r#   rL   )rR   r3   rS   rS   rT   r3      s    c                 C   s   | j S rX   )rM   rY   rS   rS   rT   r4      s    zBaseClient.cookies)r4   rW   c                 C   s   t || _d S rX   )r!   rM   )rR   r4   rS   rS   rT   r4      s    c                 C   s   | j S rX   )rK   rY   rS   rS   rT   r2      s    zBaseClient.params)r2   rW   c                 C   s   t || _d S rX   )r&   rK   )rR   r2   rS   rS   rT   r2      s    r?   rW   c                 C   s   d S rX   rS   rR   r?   rS   rS   rT   rD      s    z$BaseClient.check_concurrency_backendurlrW   c                 C   s4   | j j|d}|jdkr0t|jr0|jdd}|S )N)Zrelative_urlhttphttps)scheme)r<   joinr`   hstspreloadZin_hsts_preloadhostZ	copy_with)rR   r]   rS   rS   rT   	merge_url   s    zBaseClient.merge_urlc                 C   s&   |s
| j r"t| j }|| |S |S rX   )r4   r!   update)rR   r4   Zmerged_cookiesrS   rS   rT   merge_cookies   s
    


zBaseClient.merge_cookiesc                 C   s&   |s
| j r"t| j }|| |S |S rX   )r3   r#   re   )rR   r3   Zmerged_headersrS   rS   rT   merge_headers   s
    


zBaseClient.merge_headersc                 C   s&   |s
| j r"t| j }|| |S |S rX   )r2   r&   re   )rR   r2   Zmerged_queryparamsrS   rS   rT   merge_queryparams   s
    


zBaseClient.merge_queryparamsFstreamr1   allow_redirectsr5   r6   r9   r@   	requestrj   r1   rk   r5   r6   r9   r@   rW   c                   s   |j jdkrtd|jttd fdd}	tjt	tjddd}
|
|	t
|jd	}	j||d kr~jn||d krjn|d
}|d k	r|
|	|}	|	|I d H S )Nr^   r_   z%URL scheme must be "http" or "https".)rm   rW   c              
      s   z6t  }j|  dI d H }W 5 Q R X |j|_W n4 tk
rj } z|jd krX| |_ W 5 d }~X Y nX j| sz| I d H  W 5 | I d H  X |S )N)r5   r6   r9   )	r-   sendelapsedr   rm   r4   Zextract_cookiescloseread)rm   Ztimerresponseexcr6   r=   rR   rj   r9   r5   rS   rT   get_response   s&       
z.BaseClient._get_response.<locals>.get_response)rv   
middlewarerW   c                 S   s   t j|| dS )N)rv   )	functoolspartial)rv   rw   rS   rS   rT   wrap   s    z&BaseClient._get_response.<locals>.wrap)rk   r4   )rm   r@   r1   )r]   r`   r   _dispatcher_for_requestr8   r   r   rO   Callabler   r   r4   _get_auth_middlewarer@   r1   )rR   rm   rj   r1   rk   r5   r6   r9   r@   rv   rz   Zauth_middlewarerS   ru   rT   _get_response   s(     
zBaseClient._get_response)rm   r@   r1   rW   c                 C   s   t |trt|d |d dS t |tr,|S t|r>t|dS |d k	rVtd|d|jjsf|jj	rzt|jj|jj	dS |rt
|jj}|r|\}}}t||dS d S )Nr   r   )usernamepassword)r1   z}When specified, "auth" must be a (username, password) tuple or a callable with signature (AsyncRequest) -> AsyncRequest (got ))rJ   tupler   r   callabler   	TypeErrorr]   r   r   r/   Z	authority)rR   rm   r@   r1   Znetrc_loginr   _r   rS   rS   rT   r}     s*    



 
zBaseClient._get_auth_middleware)rm   r8   rW   c           	      C   s   |r|j }|jdkr|jdkp0|jdko0|jdk}|j d|j }|j d| |rh|j d|j ndd| |rd|j nd|jd	f}|D ] }|r||kr|| }|  S q| jS )
zIGets the AsyncDispatcher instance that should be used for a given Requestr^   P   r_   i  :z://Nzall://all)r]   r`   portrc   r=   )	rR   rm   r8   r]   Zis_default_porthostnameZ
proxy_keysZ	proxy_key
dispatcherrS   rS   rT   r{     s$    
z"BaseClient._dispatcher_for_requestdatafilesjsonr2   r3   r4   )	methodr]   r   r   r   r2   r3   r4   rW   c          
   
   C   sD   |  |}| |}| |}| |}t||||||||d}	|	S )Nr   )rd   rg   rf   rh   r   )
rR   r   r]   r   r   r   r2   r3   r4   rm   rS   rS   rT   build_request8  s    




zBaseClient.build_request)N)N)N)N)5__name__
__module____qualname__r   r   r   r    r'   r$   r"   r   r	   r
   r%   r   r   intr,   rO   Unionr   r   r|   r   boolrU   propertyr#   r3   setterr!   r4   r&   r2   rD   r   rd   Optionalrf   rg   rh   r   r   r~   r   r}   Dictstrr{   r   r)   Anyr   rS   rS   rS   rT   r0   6   s   P 
 
 ?    r0   c                   @   s  e Zd Zddddddddddd
eeeeeeee	e
eeedddZddddddddddd
eeeeeeee	e
eeeddd	Zddddddddddd
eeeeeeee	e
eeedd
dZddddddddddddddeeeejeeeeeee	e
eeedddZddddddddddddddeeeejeeeeeee	e
eeedddZddddddddddddddeeeejeeeeeee	e
eeedddZddddddddddddddeeeejeeeeeee	e
eeedddZddddddddddddddeeeeejeeeeeee	e
eeedddZddddddddeeeee
e	eeed	ddZddddZd dd d!Zd%eje ee dd"d#d$Z!dS )&AsyncClientNFT
r2   r3   r4   rj   r1   rk   r6   r5   r9   r@   r]   r2   r3   r4   rj   r1   rk   r6   r5   r9   r@   rW   c       
            s(   | j d||||||||	||
|dI d H S NGET
r2   r3   r4   rj   r1   rk   r5   r6   r9   r@   rm   rR   r]   r2   r3   r4   rj   r1   rk   r6   r5   r9   r@   rS   rS   rT   getV  s    zAsyncClient.getc       
            s(   | j d||||||||	||
|dI d H S NZOPTIONSr   r   r   rS   rS   rT   optionst  s    zAsyncClient.optionsc       
            s(   | j d||||||||	||
|dI d H S NZHEADr   r   r   rS   rS   rT   head  s    zAsyncClient.headr   r   r   r2   r3   r4   rj   r1   rk   r6   r5   r9   r@   r]   r   r   r   r2   r3   r4   rj   r1   rk   r6   r5   r9   r@   rW   c                   s.   | j d|||||||||	|
||||dI d H S NZPOSTr   r   r   r2   r3   r4   rj   r1   rk   r5   r6   r9   r@   r   rR   r]   r   r   r   r2   r3   r4   rj   r1   rk   r6   r5   r9   r@   rS   rS   rT   post  s"    zAsyncClient.postc                   s.   | j d|||||||||	|
||||dI d H S NPUTr   r   r   rS   rS   rT   put  s"    zAsyncClient.putc                   s.   | j d|||||||||	|
||||dI d H S NZPATCHr   r   r   rS   rS   rT   patch  s"    zAsyncClient.patchc                   s.   | j d|||||||||	|
||||dI d H S NZDELETEr   r   r   rS   rS   rT   delete  s"    zAsyncClient.deleter   r]   r   r   r   r2   r3   r4   rj   r1   rk   r6   r5   r9   r@   rW   c             
      s>   | j ||||||||d}| j||	|
|||||dI d H }|S N)r   r]   r   r   r   r2   r3   r4   ri   )r   ro   rR   r   r]   r   r   r   r2   r3   r4   rj   r1   rk   r6   r5   r9   r@   rm   rs   rS   rS   rT   rm   @  s*    

zAsyncClient.requestri   rl   c          	   
      s    | j ||||||||dI d H S )N)rm   rj   r1   rk   r5   r6   r9   r@   )r~   )	rR   rm   rj   r1   rk   r5   r6   r9   r@   rS   rS   rT   ro   i  s    zAsyncClient.sendrV   c                    s   | j  I d H  d S rX   )r=   rq   rY   rS   rS   rT   rq     s    zAsyncClient.closec                    s   | S rX   rS   rY   rS   rS   rT   
__aenter__  s    zAsyncClient.__aenter__exc_type	exc_value	tracebackrW   c                    s   |   I d H  d S rX   rq   rR   r   r   r   rS   rS   rT   	__aexit__  s    zAsyncClient.__aexit__)NNN)"r   r   r   r,   r'   r$   r"   r   r    r	   r   r   r   r   r   r   r   r)   rO   r   r   r   r   r   r   rm   r   ro   rq   r   TypeBaseExceptionr   r   rS   rS   rS   rT   r   U  s  """((()-   r   c                   @   s  e Zd ZeddddZd-eeje dddZ	e
eddd	Zddddddd
dddddddeeeeejeeeeeeeeeeedddZd
dddddddeeeeeeeeed	ddZdddd
ddddddd
eeeeeeeeeeeedddZdddd
ddddddd
eeeeeeeeeeeedddZdddd
dd
ddddd
eeeeeeeeeeeedddZddddddd
dddddddeeeejeeeeeeeeeeedddZ ddddddd
dddddddeeeejeeeeeeeeeeeddd Z!ddddddd
dddddddeeeejeeeeeeeeeeedd!d"Z"ddddddd
dddddddeeeejeeeeeeeeeeedd#d$Z#dd%d&d'Z$d d%d(d)Z%d.ej&e' e'e(dd*d+d,Z)dS )/ClientNrZ   c                 C   s(   t |trd S t|drd S tdd S )NZloopz9'Client' only supports asyncio-based concurrency backends)rJ   r   hasattr
ValueErrorr[   rS   rS   rT   rD     s
    	

z Client.check_concurrency_backend)r   rW   c                 C   s6   |dkst |tttfr|S t|ds*t| j|S )z}
        If the request data is an bytes iterator then return an async bytes
        iterator onto the request data.
        N__iter__)rJ   r   bytesdictr   rI   rN   Ziterate_in_threadpoolrR   r   rS   rS   rT   _async_request_data  s    zClient._async_request_datac                 C   s(   t |tr|S t|dst| j|S )N	__aiter__)rJ   r   r   rI   rN   Ziterater   rS   rS   rT   
_sync_data  s    
zClient._sync_dataFTr   r   c             
   C   s>   | j ||| ||||||d}| j||	|
|||||d}|S r   )r   r   ro   r   rS   rS   rT   rm     s*    

zClient.requestri   rl   c             
      s   | j | j}	|g}
d||||||d}j|	f|
| t dt dd }| |}d d fdd}t j j j|| j	 j
 jd}|sz|  W 5 |  X |S )	NTri   Z_raw_contentZ_raw_streamrV   c                      s     j d S rX   )runon_closerS   Zasync_responserN   rS   rT   sync_on_close  s    z"Client.send.<locals>.sync_on_close)status_codehttp_versionr3   contentr   rm   historyrp   )rN   r~   r   getattrr   r*   r   r   r3   rm   r   rp   rq   rr   )rR   rm   rj   r1   rk   r5   r6   r9   r@   	coroutineargskwargsr   Zsync_contentr   rs   rS   r   rT   ro     sD    	  



zClient.sendr   r   c       
         C   s"   | j d||||||||	||
|dS r   r   r   rS   rS   rT   r     s    z
Client.getc       
         C   s"   | j d||||||||	||
|dS r   r   r   rS   rS   rT   r   7  s    zClient.optionsc       
         C   s"   | j d||||||||	||
|dS r   r   r   rS   rS   rT   r   U  s    zClient.headr   c                C   s(   | j d|||||||||	|
||||dS r   r   r   rS   rS   rT   r   s  s"    zClient.postc                C   s(   | j d|||||||||	|
||||dS r   r   r   rS   rS   rT   r     s"    z
Client.putc                C   s(   | j d|||||||||	|
||||dS r   r   r   rS   rS   rT   r     s"    zClient.patchc                C   s(   | j d|||||||||	|
||||dS r   r   r   rS   rS   rT   r     s"    zClient.deleterV   c                 C   s   | j j}| j| d S rX   )r=   rq   rN   r   )rR   r   rS   rS   rT   rq     s    zClient.closec                 C   s   | S rX   rS   rY   rS   rS   rT   	__enter__  s    zClient.__enter__r   c                 C   s   |    d S rX   r   r   rS   rS   rT   __exit__
  s    zClient.__exit__)N)NNN)*r   r   r   r   rD   r(   rO   r   r   r   r   r+   r   r   r,   r)   r   r'   r$   r"   r   r    r	   r   r   r*   rm   r   ro   r   r   r   r   r   r   r   rq   r   r   r   r   r   rS   rS   rS   rT   r     s   -:"""((($   r   )	r8   r5   r6   r9   r7   r:   r?   r@   rW   c                    s   t td fdd}| d kr,i S t| ttfrFd|| iS t| trXd| iS i }	|  D ]4\}
}t|ttfr|||	t|
< qd||	t|
< qd|	S d S )Nr\   c              
      s<   t | } | jdkr*t|  dS td| d S )Nrn   )r5   r6   r9   r:   r?   r@   r7   zUnknown proxy for )r   r`   r   r   )r]   r?   r6   r7   r:   r9   r@   r5   rS   rT   _proxy_from_url  s    

z0_proxies_to_dispatchers.<locals>._proxy_from_urlr   )r,   r   rJ   r   r   items)r8   r5   r6   r9   r7   r:   r?   r@   r   Znew_proxieskeyZdispatcher_or_urlrS   r   rT   rQ     s    
 
rQ   )Jrx   rF   rO   typesr   rb   Zconcurrency.asyncior   Zconcurrency.baser   configr   r   r   r	   r
   r   r   r   Zdispatch.asgir   Zdispatch.baser   r   Zdispatch.connection_poolr   Zdispatch.proxy_httpr   Zdispatch.threadedr   Zdispatch.wsgir   
exceptionsr   r   Zmiddleware.baser   Zmiddleware.basic_authr   Zmiddleware.custom_authr   Zmiddleware.redirectr   Zmodelsr   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   utilsr-   r.   r/   r0   r   r   r   r   r   r   rQ   rS   rS   rS   rT   <module>   sP   (
P  !  <   