o
    øÎ
`ëe  ã                   @   s”   d Z ddlmZ ddlZddlZddlZddlmZ ddlZddl	Z	ddl
Z
ddlZddlmZ ddlmZ ddlZddlmZ G dd	„ d	eƒZdS )
aø  
    SendinBlue API

    SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to :   - Manage your campaigns and get the statistics   - Manage your contacts   - Send transactional Emails and SMS   - and much more...  You can download our wrappers at https://github.com/orgs/sendinblue  **Possible responses**   | Code | Message |   | :-------------: | ------------- |   | 200  | OK. Successful Request  |   | 201  | OK. Successful Creation |   | 202  | OK. Request accepted |   | 204  | OK. Successful Update/Deletion  |   | 400  | Error. Bad Request  |   | 401  | Error. Authentication Needed  |   | 402  | Error. Not enough credit, plan upgrade needed  |   | 403  | Error. Permission denied  |   | 404  | Error. Object does not exist |   | 405  | Error. Method not allowed  |   | 406  | Error. Not Acceptable  |   # noqa: E501

    OpenAPI spec version: 3.0.0
    Contact: contact@sendinblue.com
    Generated by: https://github.com/swagger-api/swagger-codegen.git
é    )Úabsolute_importN)Ú
ThreadPool)Úquote)ÚConfiguration)Úrestc                	   @   s>  e Zd ZdZeeeejfej	 Z
eejreneeeeejejedœZ		d4dd„Zdd„ Zedd	„ ƒZed
d„ ƒZejdd„ ƒZdd„ Z					d5dd„Zdd„ Zdd„ Zdd„ Z					d6dd„Z			d7dd„Zdd„ Z d8dd„Z!d d!„ Z"d"d#„ Z#d$d%„ Z$d&d'„ Z%d(d)„ Z&d*d+„ Z'd,d-„ Z(d.d/„ Z)d0d1„ Z*d2d3„ Z+dS )9Ú	ApiClienta  Generic API client for Swagger client library builds.

    Swagger generic API client. This client handles the client-
    server communication, and is invariant across implementations. Specifics of
    the methods and models for each application are generated from the Swagger
    templates.

    NOTE: This class is auto generated by the swagger code generator program.
    Ref: https://github.com/swagger-api/swagger-codegen
    Do not edit the class manually.

    :param configuration: .Configuration object for this client
    :param header_name: a header to pass when making calls to the API.
    :param header_value: a header value to pass when making calls to
        the API.
    :param cookie: a cookie to include in the header when making calls
        to the API
    )ÚintÚlongÚfloatÚstrÚboolÚdateÚdatetimeÚobjectNc                 C   s€   |d u rt ƒ }|| _d | _t |¡| _i | _|d ur*|dkr*d| ¡ v r*|| j|< n|d ur8|dkr8|| j|< nd| _|| _	d S )Nú
User-AgentÚsendinblue_z"sendinblue_clientAPI/v7.2.0/python)
r   ÚconfigurationÚ_poolr   ÚRESTClientObjectÚrest_clientÚdefault_headersÚlowerÚ
user_agentÚcookie)Úselfr   Úheader_nameÚheader_valuer   © r   úK/var/www/html/env/lib/python3.10/site-packages/sib_api_v3_sdk/api_client.pyÚ__init__?   s   
zApiClient.__init__c                 C   s&   | j d ur| j  ¡  | j  ¡  d S d S ©N)r   ÚcloseÚjoin©r   r   r   r   Ú__del__S   s   

þzApiClient.__del__c                 C   s   | j d u r	tƒ | _ | j S r    )r   r   r#   r   r   r   ÚpoolX   s   
zApiClient.poolc                 C   s
   | j d S )zUser agent for this API clientr   ©r   r#   r   r   r   r   ^   s   
zApiClient.user_agentc                 C   s   || j d< d S )Nr   r&   ©r   Úvaluer   r   r   r   c   s   c                 C   s   || j |< d S r    r&   )r   r   r   r   r   r   Úset_default_headerg   s   zApiClient.set_default_headerTc              
   C   sP  | j }|pi }| | j¡ | jr| j|d< |r$|  |¡}t|  ||¡ƒ}|rG|  |¡}|  ||¡}|D ]\}}| d| tt	|ƒ|j
d�¡}q3|rT|  |¡}|  ||¡}|sX|ri|  ||¡}|  |¡}|  ||¡}|  |||
¡ |rw|  |¡}| j j| }| j||||||||d�}|| _|}|rœ|	rš|  ||	¡}nd }|r |S ||j| ¡ fS )NÚCookiez{%s})Úsafe)Úquery_paramsÚheadersÚpost_paramsÚbodyÚ_preload_contentÚ_request_timeout)r   Úupdater   r   Úsanitize_for_serializationÚdictÚparameters_to_tuplesÚreplacer   r   Úsafe_chars_for_path_paramÚprepare_post_parametersÚupdate_params_for_authÚhostÚrequestÚlast_responseÚdeserializeÚstatusÚ
getheaders)r   Úresource_pathÚmethodÚpath_paramsr,   Úheader_paramsr/   r.   ÚfilesÚresponse_typeÚauth_settingsÚ_return_http_data_onlyÚcollection_formatsr0   r1   ÚconfigÚkÚvÚurlÚresponse_dataÚreturn_datar   r   r   Ú
__call_apij   sh   

ÿ
ÿþ
ÿ
ÿ
üÿzApiClient.__call_apic                    s´   ˆ du rdS t ˆ ˆjƒrˆ S t ˆ tƒr‡fdd„ˆ D ƒS t ˆ tƒr,t‡fdd„ˆ D ƒƒS t ˆ tjtjfƒr9ˆ  ¡ S t ˆ tƒrAˆ }n‡ fdd„t 	ˆ j
¡D ƒ}‡fdd„t 	|¡D ƒS )	aè  Builds a JSON POST object.

        If obj is None, return None.
        If obj is str, int, long, float, bool, return directly.
        If obj is datetime.datetime, datetime.date
            convert to string in iso8601 format.
        If obj is list, sanitize each element in the list.
        If obj is dict, return the dict.
        If obj is swagger model, return the properties dict.

        :param obj: The data to serialize.
        :return: The serialized form of data.
        Nc                    s   g | ]}ˆ   |¡‘qS r   ©r3   ©Ú.0Úsub_objr#   r   r   Ú
<listcomp>Ê   s    ÿz8ApiClient.sanitize_for_serialization.<locals>.<listcomp>c                 3   s   � | ]}ˆ   |¡V  qd S r    rP   rQ   r#   r   r   Ú	<genexpr>Í   s   € ÿz7ApiClient.sanitize_for_serialization.<locals>.<genexpr>c                    s0   i | ]\}}t ˆ |ƒd urˆ j| t ˆ |ƒ“qS r    )ÚgetattrÚattribute_map)rR   ÚattrÚ_)Úobjr   r   Ú
<dictcomp>Ú   s
    þz8ApiClient.sanitize_for_serialization.<locals>.<dictcomp>c                    s   i | ]
\}}|ˆ   |¡“qS r   rP   )rR   ÚkeyÚvalr#   r   r   r[   Þ   s    ÿ)Ú
isinstanceÚPRIMITIVE_TYPESÚlistÚtupler   r   Ú	isoformatr4   ÚsixÚ	iteritemsÚswagger_types)r   rZ   Úobj_dictr   )rZ   r   r   r3   ·   s,   

ÿ
ÿ


ÿ
ÿz$ApiClient.sanitize_for_serializationc                 C   sH   |dkr	|   |¡S zt |j¡}W n ty   |j}Y nw |  ||¡S )a  Deserializes response into an object.

        :param response: RESTResponse object to be deserialized.
        :param response_type: class literal for
            deserialized object, or string of class name.

        :return: deserialized object.
        Úfile)Ú_ApiClient__deserialize_fileÚjsonÚloadsÚdataÚ
ValueErrorÚ_ApiClient__deserialize)r   ÚresponserE   rk   r   r   r   r=   á   s   

ÿzApiClient.deserializec                    sü   |du rdS t |ƒtkrP| d¡r$t d|¡ d¡‰‡ ‡fdd„|D ƒS | d¡r?t d|¡ d	¡‰‡ ‡fd
d„t |¡D ƒS |ˆ jv rJˆ j| }nt	t
j|ƒ}|ˆ jv r[ˆ  ||¡S |tkrdˆ  |¡S |tjkrnˆ  |¡S |tjkrxˆ  |¡S ˆ  ||¡S )z¶Deserializes dict, list, str into an object.

        :param data: dict, list or str.
        :param klass: class literal, or string of class name.

        :return: object.
        Nzlist[zlist\[(.*)\]é   c                    s   g | ]}ˆ   |ˆ¡‘qS r   ©rm   )rR   Úsub_data©r   Úsub_klsr   r   rT     s    ÿz+ApiClient.__deserialize.<locals>.<listcomp>zdict(zdict\(([^,]*), (.*)\)é   c                    s   i | ]\}}|ˆ   |ˆ¡“qS r   rp   )rR   rJ   rK   rr   r   r   r[   
  s    ÿz+ApiClient.__deserialize.<locals>.<dictcomp>)Útyper   Ú
startswithÚreÚmatchÚgrouprc   rd   ÚNATIVE_TYPES_MAPPINGrV   Úsib_api_v3_sdkÚmodelsr_   Ú!_ApiClient__deserialize_primitiver   Ú_ApiClient__deserialize_objectr   r   Ú_ApiClient__deserialize_dateÚ _ApiClient__deserialize_datatimeÚ_ApiClient__deserialize_model©r   rk   Úklassr   rr   r   Ú__deserialize÷   s2   
ÿ
ÿ






zApiClient.__deserializec                 C   sX   |s|   |||||||||	|
||||¡S | j | j |||||||||	|
||||f¡}|S )a”  Makes the HTTP request (synchronous) and returns deserialized data.

        To make an async request, set the async_req parameter.

        :param resource_path: Path to method endpoint.
        :param method: Method to call.
        :param path_params: Path parameters in the url.
        :param query_params: Query parameters in the url.
        :param header_params: Header parameters to be
            placed in the request header.
        :param body: Request body.
        :param post_params dict: Request post form parameters,
            for `application/x-www-form-urlencoded`, `multipart/form-data`.
        :param auth_settings list: Auth Settings names for the request.
        :param response: Response data type.
        :param files dict: key -> filename, value -> filepath,
            for `multipart/form-data`.
        :param async_req bool: execute request asynchronously
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param collection_formats: dict of collection formats for path, query,
            header, and post parameters.
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :param _request_timeout: timeout setting for this request. If one
                                 number provided, it will be total request
                                 timeout. It can also be a pair (tuple) of
                                 (connection, read) timeouts.
        :return:
            If async_req parameter is True,
            the request will be called asynchronously.
            The method will return the request thread.
            If parameter async_req is False or missing,
            then the method will return the response directly.
        )Ú_ApiClient__call_apir%   Úapply_async)r   r@   rA   rB   r,   rC   r/   r.   rD   rE   rF   Ú	async_reqrG   rH   r0   r1   Úthreadr   r   r   Úcall_api  s$   *ûùzApiClient.call_apic	           	   	   C   sì   |dkr| j j|||||d�S |dkr| j j|||||d�S |dkr/| j j|||||||d�S |dkr@| j j|||||||d�S |dkrQ| j j|||||||d�S |dkrb| j j|||||||d�S |d	krr| j j||||||d
�S tdƒ‚)z(Makes the HTTP request using RESTClient.ÚGET)r,   r0   r1   r-   ÚHEADÚOPTIONS)r,   r-   r.   r0   r1   r/   ÚPOSTÚPUTÚPATCHÚDELETE)r,   r-   r0   r1   r/   zQhttp method must be `GET`, `HEAD`, `OPTIONS`, `POST`, `PATCH`, `PUT` or `DELETE`.)	r   rŠ   r‹   rŒ   r�   rŽ   r�   r�   rl   )	r   rA   rL   r,   r-   r.   r/   r0   r1   r   r   r   r;   Z  sz   üüúúúúûÿzApiClient.requestc                    sÄ   g }|du ri }t |tƒrt |¡n|D ]K\‰ }ˆ |v rX|ˆ  }|dkr1| ‡ fdd„|D ƒ¡ q|dkr8d}n|dkr?d}n	|d	krFd
}nd}| ˆ | dd„ |D ƒ¡f¡ q| ˆ |f¡ q|S )a  Get parameters as list of tuples, formatting collections.

        :param params: Parameters as dict or list of two-tuples
        :param dict collection_formats: Parameter collection formats
        :return: Parameters as list of tuples, collections formatted
        NÚmultic                 3   s   � | ]}ˆ |fV  qd S r    r   ©rR   r(   ©rJ   r   r   rU   ¥  ó   € z1ApiClient.parameters_to_tuples.<locals>.<genexpr>Ússvú Útsvú	Úpipesú|ú,c                 s   s   � | ]}t |ƒV  qd S r    )r   r’   r   r   r   rU   °  r”   )r^   r4   rc   rd   ÚextendÚappendr"   )r   ÚparamsrH   Ú
new_paramsrK   Úcollection_formatÚ	delimiterr   r“   r   r5   —  s(    ÿzApiClient.parameters_to_tuplesc                 C   s¼   g }|r|}|r\t  |¡D ]N\}}|sqt|ƒtu r|n|g}|D ]9}t|dƒ�*}tj |j¡}	| 	¡ }
t
 |	¡d p<d}| t|t|	|
|gƒgƒ¡ W d  ƒ n1 sUw   Y  q!q|S )z©Builds form parameters.

        :param post_params: Normal form parameters.
        :param files: File parameters.
        :return: Form parameters with files.
        Úrbr   zapplication/octet-streamN)rc   rd   ru   r`   ÚopenÚosÚpathÚbasenameÚnameÚreadÚ	mimetypesÚ
guess_typer�   ra   )r   r.   rD   rž   rJ   rK   Ú
file_namesÚnÚfÚfilenameÚfiledataÚmimetyper   r   r   r8   µ  s,   ÿÿû€ÿ	z!ApiClient.prepare_post_parametersc                 C   s,   |sdS dd„ |D ƒ}d|v rdS d  |¡S )z›Returns `Accept` based on an array of accepts provided.

        :param accepts: List of headers.
        :return: Accept (e.g. application/json).
        Nc                 S   ó   g | ]}|  ¡ ‘qS r   ©r   ©rR   Úxr   r   r   rT   Ú  ó    z2ApiClient.select_header_accept.<locals>.<listcomp>úapplication/jsonz, )r"   )r   Úacceptsr   r   r   Úselect_header_acceptÑ  s   
zApiClient.select_header_acceptc                 C   s2   |sdS dd„ |D ƒ}d|v sd|v rdS |d S )z¹Returns `Content-Type` based on an array of content_types provided.

        :param content_types: List of content-types.
        :return: Content-Type (e.g. application/json).
        r¶   c                 S   r±   r   r²   r³   r   r   r   rT   ê  rµ   z8ApiClient.select_header_content_type.<locals>.<listcomp>z*/*r   r   )r   Úcontent_typesr   r   r   Úselect_header_content_typeá  s   z$ApiClient.select_header_content_typec                 C   s~   |sdS |D ]6}| j  ¡  |¡}|r<|d sq|d dkr&|d ||d < q|d dkr8| |d |d f¡ qtdƒ‚qdS )a  Updates header and query params based on authentication setting.

        :param headers: Header parameters dict to be updated.
        :param querys: Query parameters tuple list to be updated.
        :param auth_settings: Authentication setting identifiers list.
        Nr(   ÚinÚheaderr\   Úqueryz3Authentication token must be in `query` or `header`)r   rF   Úgetr�   rl   )r   r-   ÚquerysrF   ÚauthÚauth_settingr   r   r   r9   ñ  s    ÿøþz ApiClient.update_params_for_authc                 C   sš   t j| jjd�\}}t |¡ t |¡ | d¡}|r/t 	d|¡ 
d¡}tj tj |¡|¡}t|dƒ�}| |j¡ W d  ƒ |S 1 sFw   Y  |S )zõDeserializes body to file

        Saves response body into a file in a temporary folder,
        using the filename from the `Content-Disposition` header if provided.

        :param response:  RESTResponse.
        :return: file path.
        )ÚdirzContent-Dispositionz filename=[\'"]?([^\'"\s]+)[\'"]?ro   ÚwbN)ÚtempfileÚmkstempr   Útemp_folder_pathr¤   r!   ÚremoveÚ	getheaderrw   Úsearchry   r¥   r"   Údirnamer£   Úwriterk   )r   rn   Úfdr¥   Úcontent_dispositionr®   r­   r   r   r   Ú__deserialize_file	  s"   	


ÿÿ
ÿýzApiClient.__deserialize_filec                 C   s<   z||ƒW S  t y   t |¡ Y S  ty   | Y S w )zžDeserializes string to primitive type.

        :param data: str.
        :param klass: class literal.

        :return: int, long, float, str, bool.
        )ÚUnicodeEncodeErrorrc   Ú	text_typeÚ	TypeErrorr‚   r   r   r   Ú__deserialize_primitive!  s   
ÿz!ApiClient.__deserialize_primitivec                 C   s   |S )z;Return a original value.

        :return: object.
        r   r'   r   r   r   Ú__deserialize_object0  s   zApiClient.__deserialize_objectc                 C   sR   zddl m} ||ƒ ¡ W S  ty   | Y S  ty(   tjdd |¡d�‚w )zYDeserializes string to date.

        :param string: str.
        :return: date.
        r   ©Úparsez$Failed to parse `{0}` as date object©r>   Úreason)Údateutil.parserrÕ   r   ÚImportErrorrl   r   ÚApiExceptionÚformat©r   ÚstringrÕ   r   r   r   Ú__deserialize_date7  s   þÿzApiClient.__deserialize_datec                 C   sN   zddl m} ||ƒW S  ty   | Y S  ty&   tjdd |¡d�‚w )z›Deserializes string to datetime.

        The string should be in iso8601 datetime format.

        :param string: str.
        :return: datetime.
        r   rÔ   z(Failed to parse `{0}` as datetime objectrÖ   )rØ   rÕ   rÙ   rl   r   rÚ   rÛ   rÜ   r   r   r   Ú__deserialize_datatimeH  s   
üÿz ApiClient.__deserialize_datatimec                 C   s   ||j jv S r    )Ú	__class__Ú__dict__)r   r   r§   r   r   r   Ú	__hasattr^  s   zApiClient.__hasattrc           
      C   sö   |j s|  |d¡s|S i }|j dur>t |j ¡D ]%\}}|dur=|j| |v r=t|ttfƒr=||j|  }|  ||¡||< q|di |¤Ž}t|tƒrf|j durft|tƒrf| 	¡ D ]\}}||j vre|||< qX|  |d¡ry| 
|¡}	|	ry|  ||	¡}|S )z’Deserializes list or dict to model.

        :param data: dict, list.
        :param klass: class literal.
        :return: model object.
        Úget_real_child_modelNr   )re   Ú_ApiClient__hasattrrc   rd   rW   r^   r`   r4   rm   Úitemsrã   )
r   rk   rƒ   ÚkwargsrX   Ú	attr_typer(   Úinstancer\   Ú
klass_namer   r   r   Ú__deserialize_modela  s8   
ÿ
ÿ€

ÿ
€
zApiClient.__deserialize_model)NNNN)NNNNNNNNNNTN)NNNNNNNNNNNTN)NNNNTN)NN),Ú__name__Ú
__module__Ú__qualname__Ú__doc__r
   r   Úbytesrc   rÐ   Úinteger_typesr_   r   ÚPY3r	   r   r   r   r   rz   r   r$   Úpropertyr%   r   Úsetterr)   r…   r3   r=   rm   r‰   r;   r5   r8   r¸   rº   r9   rh   r}   r~   r   r€   rä   r�   r   r   r   r   r      sl    ø
ÿ



ûM*(
û<
þ=
r   )rî   Ú
__future__r   r   ri   r©   Úmultiprocessing.poolr   r¤   rw   rÄ   rc   Úsix.moves.urllib.parser   Úsib_api_v3_sdk.configurationr   Úsib_api_v3_sdk.modelsr{   r   r   r   r   r   r   r   Ú<module>   s   
