o
    4g                     @   s~   d dl Z d dlmZmZmZ d dl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 e dZG d	d
 d
eZdS )    N)DictOptionalTuple)RequestSessionhooks)HTTPAdapter)
HttpClient)r   )Responseztwilio.http_clientc                       s   e Zd ZdZdddeddfdedeeee	f  dee
 dejdeeeef  d	ee f fd
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dZ  ZS )TwilioHttpClientzI
    General purpose HTTP Client for interacting with the Twilio API
    TNpool_connectionsrequest_hookstimeoutloggerproxymax_retriesc                    sh   t  |d| |rt nd| _| jr!|dur!| jdt|d |p&t | _|r/|| _	dS i | _	dS )a  
        Constructor for the TwilioHttpClient

        :param pool_connections
        :param request_hooks
        :param timeout: Timeout for the requests.
                        Timeout should never be zero (0) or less.
        :param logger
        :param proxy: Http proxy for the requests session
        :param max_retries: Maximum number of retries each request should attempt
        FNzhttps://)r   )
super__init__r   sessionmountr   r   default_hooksr   r   )selfr   r   r   r   r   r   	__class__ c/var/www/html/Testing_prj/Navya-Bakers/venv/lib/python3.10/site-packages/twilio/http/http_client.pyr      s   zTwilioHttpClient.__init__Fmethodurlparamsdataheadersauthallow_redirectsreturnc	                 C   s   |du r| j }n|dkrt|| |||||| jd}	| |	 d| _| jp*t }
tdi |	}t	di |	| _
|
|}|
|j| jddd}|
j|f||d|}| |j| tt|j|j|j| _| jS )aq  
        Make an HTTP Request with parameters provided.

        :param method: The HTTP method to use
        :param url: The URL to request
        :param params: Query parameters to append to the URL
        :param data: Parameters to go in the body of the HTTP request
        :param headers: HTTP Headers to send with the request
        :param auth: Basic Auth arguments
        :param timeout: Socket/Read timeout for the request
        :param allow_redirects: Whether or not to allow redirects
        See the requests documentation for explanation of all these parameters

        :return: An http response
        Nr   )r   r   r   r   r    r!   r   )r"   r   r   )r   
ValueErrorupperr   log_request_test_only_last_responser   r   r   TwilioRequest_test_only_last_requestprepare_requestmerge_environment_settingsr   r   sendlog_responsestatus_coder
   inttextr    )r   r   r   r   r   r    r!   r   r"   kwargsr   requestprepped_requestsettingsresponser   r   r   r2   /   sD   


zTwilioHttpClient.request)NNNNNF)__name__
__module____qualname____doc___loggerboolr   r   strobjectfloatloggingLoggerr/   r   r   r
   r2   __classcell__r   r   r   r   r      s\     	
r   )r?   typingr   r   r   requestsr   r   r   requests.adaptersr   twilio.httpr	   twilio.http.requestr(   twilio.http.responser
   	getLoggerr:   r   r   r   r   r   <module>   s    
