U
    n/e                     @   s   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Zzd dl	m
Z
 dZW n   Y nX e jdd	Ze jd
dZe jddZe jddZe jddZG dd dZdS )    N   )utils)MinioF)clear_outputTZdiscovery_urlz$https://discovery.data.storemesh.comZBASE_DISCOVERY_APIz(https://api.discovery.data.storemesh.comZINTERNAL_BASE_DISCOVERY_APIzhttp://discovery-backend:8000Zbase_minio_urlzapi.minio.data.storemesh.comZ
bucketnameZdataplatformc                   @   sL   e Zd ZdddeeddfddZdd Zdd Zd	d
 Zdd Z	dd Z
dS )BaseNTc                 C   s  || _ tjdddko|| _| jr(tn|| _| j d| _| jrFtn|| _	|dkr|dkrt
d| jdd  td}trtd	 t  |d
kr|dkrtdd|rdnd d|r|n| i| _tj| j d| jd}|jdkr|jdk r| nd}	td|	 || _|| _d| _tj| jdd tj| j d| jd}|jdkrdtd| }
|
d | _|
d | _|s| jsdnd}t| j	| j| j|dkd| _| j| jd| d | j	 id!d!d"| _| j rt
d# dS )$aa  _summary_

        Args:
            token (str, required): token get from discovery. Defaults to None.
            verbose (bool, optional): display logging. Defaults to True.
            dataplatform_api_uri (str, optional): dataplatform uri. Defaults to "https://api.discovery.data.storemesh.com".

        Raises:
            Exception `Please enter your token from dsmOauth`: Invalid token
            Exception `Can not connect to DataPlatform`: Some thing wrong connection with dataplatform
            Exception `Can not get objectstorage user`: Some thing wrong connection with objectstorage
        ZinternalNtruez/api/v2zPlease get token from zapi. zYour Token :    )Nr   z&Please enter your token from discoveryAuthorizationZBearerzApi-Key z/api/v2/account/me/headers     z!Can not connect to DataPlatform, zdsm.tmpT)exist_okz/api/minio/minio-user/me/zCan not get objectstorage useraccesssecrethttpshttp)Z
access_keyZ
secret_keysecureZendpoint_urlz://F)keyr   Zclient_kwargsZuse_listings_cacheZdefault_fill_cachezInit DataNode sucessful!)Z_verboseosenvironget	_internal_internal_base_discovery_api_base_discovery_api_discovery_api_base_object_storage_url_base_minio_urlprintreplaceinputdefind_clear_outputtimesleepr   	Exception_jwt_headerrequestsstatus_codejsontokenapikeyZ	_tmp_pathmakedirsZ_minio_accessZ_minio_secretr   clientZ_storage_options)selfr+   r,   verboseZdataplatform_api_uriZobject_storage_uriZobject_storage_secueZuse_env_restxtdataZ_scheme r4   3/tmp/pip-unpacked-wheel-t2z2wkof/dsmlibrary/base.py__init__   s^    
 

 	 zBase.__init__c                 C   s   d| j  d}tjd||dS )Nzhttp://z/dataplatform/zhttp(s?)://(.*)/dataplatform/)patternreplstring)r   resub)r/   urlZreplace_withr4   r4   r5   _replace_minio_apid   s    zBase._replace_minio_apic                 C   s   t j| j d| d| | jd}|jdkr2d}nP|jdkr^td| dd	d
 dk}n$|jdk rp| nd
}t	d| |S )N/directory//fileExists/?filename=r   r   F.  zFile z- alrady exists, do you want to replace y/n : r   r   yr   check file exists error )
r(   r   r   r'   r)   r"   r!   lowerr*   r&   )r/   	directorynamer1   r!   statusr4   r4   r5   _check_fileExistsh   s    "

"zBase._check_fileExistsc                 C   sj   t j| j d| d| | jd}|jdkr2d}n4|jdkrBd}n$|jdk rT| nd	}td
| |S )Nr>   r?   r   r   Fr@   Tr   r   rB   )r(   r   r   r'   r)   r*   r&   )r/   rD   rE   r1   Zis_existrF   r4   r4   r5   _check_fileExists_no_asks   s    "

zBase._check_fileExists_no_askc                 C   s<   t j| j d| d| jd}tj j|d | dg S )Nr>   /r   responsefilesr(   r   r   r'   r   Zcheck_http_status_coder*   r/   rD   r1   r4   r4   r5   
list_files~   s    zBase.list_filesc                 C   s<   t j| j d| d| jd}tj j|d | dg S )Nr>   rI   r   rJ   Z
directorysrM   rN   r4   r4   r5   list_dir   s    zBase.list_dir)__name__
__module____qualname__r   r   r6   r=   rG   rH   rO   rP   r4   r4   r4   r5   r      s    
Kr   )r   r(   r$   r:   r   r   Zminior   r#   ZIPython.displayr   r   r   Z	discoveryr   r   r   Zbucket_namer   r4   r4   r4   r5   <module>   s"   