
    pij                         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y)    )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y)
HttpClientNloggeris_asynctimeoutc                 n    || _         || _        ||dk  rt        |      || _        d| _        d| _        y)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       V/opt/services/ai/voice_agent/venv/lib/python3.12/site-packages/twilio/http/__init__.py__init__zHttpClient.__init__   s@      7a<W%%@D$BF%    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                   j                  d       |d   rl| j                   j                  dj                  |d   |d   t        |d                      | j                   j                  dj                  |d                n1| j                   j                  dj                  |d   |d                |d   rt| j                   j                  d	       |d   j	                         D ]C  \  }}d
|j                         vs| j                   j                  dj                  ||             E | j                   j                  d       y)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   s&    	9:(KK#**8$fUmYvh?O5P
 KK/66vh7GHIKK-44VH5Eve}UV)KKZ($Y/557 C
U"#))+5KK$$Y%5%5c5%ABC
 	78r   status_coderesponsec                     | j                   j                  dj                  |             | j                   j                  dj                  |j                               y)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   sF     	3::;GH/66x7G7GHIr   )NNNNNNF)__name__
__module____qualname__r   boolr   floatr   strr   objectr   TwilioResponser$   r   r/   intr	   r3    r   r   r   r      s   Gv G G G& /3,0,0*.#' %AA A c6k*+	A
 tCK()A $sCx.)A uS#X'A %A A 
A 9$sCx. 9T 92J Jx JD 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y)AsyncHttpClientzE
    An abstract class representing an asynchronous HTTP client.
    Nr   r   r   r   r   r   r   r    r!   c	                     K   t        d      w)z4
        Make an asynchronous HTTP request.
        z$AsyncHttpClient is an abstract classr
   r#   s	            r   r$   zAsyncHttpClient.requestZ   s      DEEs   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 c6k*+	F
 tCK()F $sCx.)F uS#X'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 8 ;FJ FJRFj Fr   