o
    e                     @   s|   d Z ddlZddl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 dd	lmZ G d
d deZdS )z.
This module provides a client class for DDC.
    N)utils)bce_v1_signer)BceBaseClient)bce_http_client)handler)http_methods)requiredc                   @   s   e Zd ZdZdZdZdddZeeeedddd	Z	eeeeddd
dZ
eeeeddddZeeeddddZedddZdd Z		dddZdS )	DdcClientz
    Ddc base sdk client
    z/v1z/ddcNc                 C   s   t | | dS )zV
        :type config: baidubce.BceClientConfiguration
        :param config:
        N)r   __init__)selfconfig r   PD:\Projects\ConvertPro\env\Lib\site-packages\baidubce/services/ddc/ddc_client.pyr
   &   s   zDdcClient.__init__)instance_iddb_name
table_namec                 C   sN   t jt j d | d | d }i }|dur||d< | jtj|t||dS )a  
            Create hard link.

            :param instance_id:
                The id of instance
            :type instance_id: string

            :param db_name:
                The database name
            :type db_name: string

            :param table_name:
                The table name
            :type table_name: string

            :param config:
            :type config: baidubce.BceClientConfiguration

            :return: 

            :rtype baidubce.bce_response.BceResponse
        
/instance/
/database/z/table/linkNZ	tableName)bodyr   )r	   versionprefix_send_requestr   POSTjsondumps)r   r   r   r   r   pathr   r   r   r   lazydrop_create_hard_link-   s   
z#DdcClient.lazydrop_create_hard_linkc                 C   s:   t jt j d | d | d | d }| jtj||dS )a  
            Delete hard link.

            :param instance_id:
                The id of instance
            :type instance_id: string

            :param db_name:
                The database name
            :type db_name: string

            :param table_name:
                The table name
            :type table_name: string

            :param config:
            :type config: baidubce.BceClientConfiguration

            :return: 

            :rtype baidubce.bce_response.BceResponse
        r   r   z/table/z/link)r   )r	   r   r   r   r   DELETE)r   r   r   r   r   r   r   r   r   lazydrop_delete_hard_linkM   s    
z#DdcClient.lazydrop_delete_hard_link)r   log_typedatetimec                 C   sN   dt j d | d }i }|dur||d< |dur||d< | jtj|||dS )a  
            Delete hard link.

            :param instance_id:
                The id of instance
            :type instance_id: string

            :param log_type:
                LogType
            :type log_type: string

            :param datetime:
                Datetime
            :type datetime: string

            :param config:
            :type config: baidubce.BceClientConfiguration

            :return: 

            :rtype baidubce.bce_response.BceResponse
        z/v2r   z/logsNZlogTyper    paramsr   )r	   r   r   r   GET)r   r   r   r    r   r   r"   r   r   r   list_log_by_instance_idj   s   z!DdcClient.list_log_by_instance_id)r   log_idc                 C   sD   t jt j d | d | }i }|dur||d< | jtj|||dS )a  
            Delete hard link.

            :param instance_id:
                The id of instance
            :type instance_id: string

            :param log_id:
                LogId
            :type log_id: string

            :param download_valid_time_in_sec:
                downloadValidTimeInSec
            :type download_valid_time_in_sec: Integer

            :param config:
            :type config: baidubce.BceClientConfiguration

            :return: 

            :rtype baidubce.bce_response.BceResponse
        r   z/logs/NZdownloadValidTimeInSecr!   )r	   r   r   r   r   r#   )r   r   r%   Zdownload_valid_time_in_secr   r   r"   r   r   r   get_log_by_id   s
   zDdcClient.get_log_by_idc                 C   s   | du rt j} tt j| S )zI
        :type prefix: string
        :param prefix: path prefix
        N)r	   r   r   Z
append_urir   )r   r   r   r   	_get_path   s   zDdcClient._get_pathc                 C   s(   |du r| j S t| j }|| |S )zh

        :type config: baidubce.BceClientConfiguration
        :param config:
        :return:
        N)r   copyZmerge_non_none_values)r   r   Z
new_configr   r   r   _merge_config   s
   
zDdcClient._merge_configc              
   C   sN   |  |}|du rtj}|du rddd}t|tjtj|g|| |||S )a  

        :param http_method:
        :param path:
        :param body:
        :param headers:
        :param params:

        :type config: baidubce.BceClientConfiguration
        :param config:

        :param body_parser:

        :return: baidubce.BceResponse
        Ns   */*s   application/json;charset=utf-8)s   Accepts   Content-Type)	r)   r   Z
parse_jsonr   send_requestr   signZparse_errorencode)r   Zhttp_methodr   r   headersr"   r   Zbody_parserr   r   r   r      s   


zDdcClient._send_request)N)NNNN)NNNNN)__name__
__module____qualname____doc__r   r   r
   r   strr   r   r$   r&   staticmethodr'   r)   r   r   r   r   r   r	      s&    

 	r	   )r1   r(   r   Zbaidubcer   Zbaidubce.authr   Zbaidubce.bce_base_clientr   Zbaidubce.httpr   r   r   Zbaidubce.utilsr   r	   r   r   r   r   <module>   s   