
    p hj                         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e          Z G d	 d
e          ZdS )    )Logger)AnyDictOptionalTuple)	urlencode)ResponseTwilioException)Requestc                      e Zd Zddededee         fdZ	 	 	 	 	 	 	 ddeded	ee	ee
f                  d
ee	ee
f                  dee	eef                  deeeef                  dee         dedefdZde	eef         ddfdZdededdfdZdS )
HttpClientNloggeris_asynctimeoutc                 z    || _         || _        ||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   _test_only_last_request_test_only_last_response)selfr   r   r   s       P/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/twilio/http/__init__.py__init__zHttpClient.__init__   sK      7a<<W%%%@D$BF%%%    Fmethoduriparamsdataheadersauthallow_redirectsreturnc	                      t          d          )z'
        Make an HTTP request.
        zHttpClient is an abstract classr
   	r   r   r   r   r   r   r   r   r    s	            r   requestzHttpClient.request$   s     ?@@@r   kwargsc           
         | j                             d           |d         r| j                             d                    |d         |d         t          |d                                        | j                             d                    |d                              n:| j                             d                    |d         |d                              |d         r~| j                             d	           |d                                         D ]I\  }}d
|                                vr.| j                             d                    ||                     J| 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values       r   log_requestzHttpClient.log_request4   ss    	9:::( 	WK#**8$fUmYvh?O5P5P   
 K/66vh7GHHIIIIK-44VH5Eve}UUVVV) 	CKZ((($Y/5577 C C
U"#))++55K$$Y%5%5c5%A%ABBB788888r   status_coderesponsec                     | 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   r0   r1   s      r   log_responsezHttpClient.log_responseM   sW     	3::;GGHHH/66x7GHHIIIIIr   )NNNNNNF)__name__
__module____qualname__r   boolr   floatr   strr   objectr   TwilioResponser$   r   r/   intr	   r3    r   r   r   r      s|       G Gv G G G G G G& /3,0,0*.#' %A AA A c6k*+	A
 tCK()A $sCx.)A uS#X'A %A A 
A A A A 9$sCx. 9T 9 9 9 92J Jx JD J J J J J Jr   r   c                       e Zd ZdZ	 	 	 	 	 	 ddededeeeef                  deeeef                  deeeef                  d	eeeef                  d
ee	         de
defdZdS )AsyncHttpClientzE
    An abstract class representing an asynchronous HTTP client.
    NFr   r   r   r   r   r   r   r    r!   c	                 $   K   t          d          )z4
        Make an asynchronous HTTP request.
        z$AsyncHttpClient is an abstract classr
   r#   s	            r   r$   zAsyncHttpClient.requestZ   s       DEEEr   r4   )r5   r6   r7   __doc__r:   r   r   r;   r   r9   r8   r<   r$   r>   r   r   r@   r@   U   s          /3,0,0*.#' %F FF F c6k*+	F
 tCK()F $sCx.)F uS#X'F %F F 
F F F F F Fr   r@   N)loggingr   typingr   r   r   r   urllib.parser   requestsr	   twilio.base.exceptionsr   twilio.http.requestr   TwilioRequesttwilio.http.responser<   r;   r   r@   r>   r   r   <module>rK      s         - - - - - - - - - - - - " " " " " "       2 2 2 2 2 2 8 8 8 8 8 8 ; ; ; ; ; ;FJ FJ FJ FJ FJ FJ FJ FJRF F F F Fj F F F F Fr   