a
    ù!fj  ã                   @   s„   d dl mZ d dlmZmZ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 G dd„ deƒZG d	d
„ d
eƒZdS )é    )ÚLogger)ÚAnyÚDictÚOptionalÚTuple)Ú	urlencode)ÚResponse©ÚTwilioException)ÚRequestc                   @   s¢   e Zd Zdeeee dœdd„Zdeeee	ee
f  ee	ee
f  ee	eef  eeeef  ee eedœ	dd„Ze	eef dd	œd
d„Zeeddœdd„ZdS )Ú
HttpClientN)ÚloggerÚis_asyncÚtimeoutc                 C   s:   || _ || _|dur$|dkr$t|ƒ‚|| _d| _d| _dS )a  
        Constructor for the abstract HTTP client

        :param logger
        :param is_async: Whether the client supports async request calls.
        :param timeout: Timeout for the requests.
                        Timeout should never be zero (0) or less.
        Nr   )r   r   Ú
ValueErrorr   Z_test_only_last_requestZ_test_only_last_response)Úselfr   r   r   © r   úU/var/www/html/python-backend/venv/lib/python3.9/site-packages/twilio/http/__init__.pyÚ__init__   s    	zHttpClient.__init__F©	ÚmethodÚuriÚparamsÚdataÚheadersÚauthr   Úallow_redirectsÚreturnc	           	      C   s   t dƒ‚dS )z'
        Make an HTTP request.
        zHttpClient is an abstract classNr	   ©	r   r   r   r   r   r   r   r   r   r   r   r   Úrequest$   s    zHttpClient.request)Úkwargsr   c              	   C   sÈ   | j  d¡ |d rR| j  d |d |d t|d ƒ¡¡ | j  d |d ¡¡ n| j  d |d |d ¡¡ |d r¸| j  d	¡ |d  ¡ D ](\}}d
| ¡ vrŽ| j  d ||¡¡ qŽ| j  d¡ dS )z'
        Logs the HTTP request
        z-- BEGIN Twilio API Request --r   z{} Request: {}?{}r   ÚurlzQuery Params: {}z{} Request: {}r   zHeaders:Úauthorizationz{} : {}z-- END Twilio API Request --N)r   ÚinfoÚformatr   ÚitemsÚlower)r   r    ÚkeyÚvaluer   r   r   Úlog_request4   s    ÿÿzHttpClient.log_request)Ústatus_codeÚresponser   c                 C   s*   | j  d |¡¡ | j  d |j¡¡ dS )z(
        Logs the HTTP response
        zResponse Status Code: {}zResponse Headers: {}N)r   r#   r$   r   )r   r*   r+   r   r   r   Úlog_responseM   s    zHttpClient.log_response)N)NNNNNF)Ú__name__Ú
__module__Ú__qualname__r   Úboolr   Úfloatr   Ústrr   Úobjectr   ÚTwilioResponser   r   r)   Úintr   r,   r   r   r   r   r      s(         ÷ör   c                   @   sd   e Zd ZdZdeeeeeef  eeeef  eeeef  eeeef  ee	 e
edœ	dd„ZdS )ÚAsyncHttpClientzE
    An abstract class representing an asynchronous HTTP client.
    NFr   c	           	      Ã   s   t dƒ‚dS )z4
        Make an asynchronous HTTP request.
        z$AsyncHttpClient is an abstract classNr	   r   r   r   r   r   Z   s    zAsyncHttpClient.request)NNNNNF)r-   r.   r/   Ú__doc__r2   r   r   r3   r   r1   r0   r4   r   r   r   r   r   r6   U   s$         ÷ör6   N)Úloggingr   Útypingr   r   r   r   Úurllib.parser   Úrequestsr   Ztwilio.base.exceptionsr
   Ztwilio.http.requestr   ZTwilioRequestZtwilio.http.responser4   r3   r   r6   r   r   r   r   Ú<module>   s   I