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r�t
|||	||
|| j	d�}nt|tƒr¦t||ƒ}n|}|d krÂtddd�| _n
t|ƒ| _|d krØi }|| _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 |¡ ˆs z| ¡ 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 |r¤t
|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|› �|r‚d|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�}|sªz| ¡  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  !  <   ÷