o
    f>h-                     @   s   d dl Z 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                    s   t  |d| |rt nd| _| jr"|dur"| jdt|d n| jdur8| jdttdt d d |p=t	
 | _|rF|| _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          )pool_maxsize)super__init__r   sessionmountr   minos	cpu_countr   default_hooksr   r   )selfr   r   r   r   r   r   	__class__ J/var/www/html/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}	|r*|ddkr*||	d< n|r8|ddkr8||	d< n||	d< | |	 d| _| jpIt }
t	d
i |	}t
d
i |	| _|
|}|
|j| jddd}|
j|f||d	|}| |j| tt|j|j|j| _| jS )aj  
        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 to allow redirects
        See the requests documentation for explanation of all these parameters

        :return: An HTTP response
        Nr   )r"   r#   r$   r&   r'   r   zContent-Typezapplication/jsonjsonzapplication/scim+jsonr%   )r(   r   r    )r   
ValueErrorupperr   get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!   r:   2   sL   



zTwilioHttpClient.request)NNNNNF)__name__
__module____qualname____doc___loggerboolr   r   strobjectfloatloggingLoggerr7   r   r   r
   r:   __classcell__r    r    r   r!   r      s\    "	
r   )r   rG   typingr   r   r   requestsr   r   r   requests.adaptersr   twilio.httpr	   twilio.http.requestr0   twilio.http.responser
   	getLoggerrB   r   r    r    r    r!   <module>   s    
