o
    tBh                     @   sh   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	 d dl
mZ d dlmZ G dd	 d	e	Zd
S )    )CacheControl)session)HTTPAdapter)Retry)
HttpClient)HttpMethodEnum)HttpResponsec                   @   s\   e Zd ZdZ									dddZ							ddd	Zd
d Zdd Zdd ZdS )RequestsClientzAn implementation of HttpClient that uses Requests as its HTTP Client

    Attributes:
        timeout (int): The default timeout for all API requests.

    <   FNTc
              	   C   s   |dkr|  ||||||| dS |	dkr7||_||j_|jj}
|
 D ]}||j_||j_||j_	||j_
q$|j| _|j| _dS )zkThe constructor.

        Args:
            timeout (float): The default global timeout(seconds).

        NT)create_default_http_cienttimeoutr   verifyadaptersvaluesmax_retriestotalbackoff_factorstatus_forcelistallowed_methods)selfr   cacher   r   retry_statusesretry_methodsr   http_client_instance"override_http_client_configurationr   adapter r   r/var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/square/http/requests_client.py__init__   s    

zRequestsClient.__init__c           	      C   sb   || _ t | _t||||d}| jdt|d | jdt|d |r+t| j| _|| j_d S )N)r   r   r   r   zhttp://)r   zhttps://)r   r   r   mountr   r   r   )	r   r   r   r   r   r   r   r   retriesr   r   r   r   8   s   z(RequestsClient.create_default_http_cientc              	   C   <   | j jt|j|j|j|j|j|j	| j
d}| |d|S )zExecute a given HttpRequest to get a string response back

        Args:
            request (HttpRequest): The given HttpRequest to execute.

        Returns:
            HttpResponse: The response of the HttpRequest.

        headersparamsdatafilesr   Fr   requestr   	to_stringhttp_method	query_urlr#   query_parameters
parametersr&   r   convert_responser   r(   responser   r   r   execute_as_stringM   s   


z RequestsClient.execute_as_stringc              	   C   r!   )zExecute a given HttpRequest to get a binary response back

        Args:
            request (HttpRequest): The given HttpRequest to execute.

        Returns:
            HttpResponse: The response of the HttpRequest.

        r"   Tr'   r/   r   r   r   execute_as_binaryc   s   

z RequestsClient.execute_as_binaryc                 C   s4   |rt |j|j|j|j|S t |j|j|j|j|S )aB  Converts the Response object of the HttpClient into an
        HttpResponse object.

        Args:
            response (dynamic): The original response object.
            http_request (HttpRequest): The original HttpRequest object.

        Returns:
            HttpResponse: The converted HttpResponse object.

        )r   status_codereasonr#   contenttext)r   r0   binaryhttp_requestr   r   r   r.   z   s   zRequestsClient.convert_response)	r
   FNNNNTNF)r
   FNNNNT)	__name__
__module____qualname____doc__r   r   r1   r2   r.   r   r   r   r   r	      s.    
#
r	   N)cachecontrolr   requestsr   requests.adaptersr   urllib3.util.retryr   square.http.http_clientr   square.http.http_method_enumr   square.http.http_responser   r	   r   r   r   r   <module>   s   