o
    i                     @   s   d dl Z d dl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
mZ eeZG dd deZdZd	ZG d
d deZG dd deZG dd deZG dd deZG dd deZG dd deZdS )    N   )ClientError)to_unixtime)
to_unicodec                   @   s.   e Zd ZdddZdd Zdd Zdd	 Zd
S )Credentials c                 C   s   || _ || _|| _d S Naccess_key_idaccess_key_secretsecurity_tokenselfr
   r   r    r   D/home/ubuntu/.local/lib/python3.10/site-packages/oss2/credentials.py__init__      
zCredentials.__init__c                 C      | j S r   r
   r   r   r   r   get_access_key_id      zCredentials.get_access_key_idc                 C   r   r   r   r   r   r   r   get_access_key_secret   r   z!Credentials.get_access_key_secretc                 C   r   r   r   r   r   r   r   get_security_token   r   zCredentials.get_security_tokenNr   r   r   )__name__
__module____qualname__r   r   r   r   r   r   r   r   r      s
    
r   i`T  g333333?c                   @   s8   e Zd Z	dddZdd Zdd Zdd	 Zd
d ZdS )EcsRamRoleCredentialNc                 C   s,   || _ || _|| _|| _|| _|pt| _d S r   )r
   r   r   
expirationduration"DEFAULT_ECS_SESSION_EXPIRED_FACTORexpired_factor)r   r
   r   r   r!   r"   r$   r   r   r   r   $   s   zEcsRamRoleCredential.__init__c                 C   r   r   r   r   r   r   r   r   2   r   z&EcsRamRoleCredential.get_access_key_idc                 C   r   r   r   r   r   r   r   r   5   r   z*EcsRamRoleCredential.get_access_key_secretc                 C   r   r   r   r   r   r   r   r   8   r   z'EcsRamRoleCredential.get_security_tokenc                 C   s&   t t }| jd| j  | j| kS )Ng      ?)inttimer"   r$   r!   )r   nowr   r   r   will_soon_expire;   s   z%EcsRamRoleCredential.will_soon_expirer   )r   r   r   r   r   r   r   r(   r   r   r   r   r    #   s    
r    c                   @   s   e Zd Zdd ZdS )CredentialsProviderc                 C   s   d S r   r   r   r   r   r   get_credentialsA   s   z#CredentialsProvider.get_credentialsN)r   r   r   r*   r   r   r   r   r)   @   s    r)   c                   @   s   e Zd ZdddZdd ZdS )StaticCredentialsProviderr   c                 C   s   t |||| _d S r   )r   credentialsr   r   r   r   r   F   s   z"StaticCredentialsProvider.__init__c                 C   r   r   )r,   r   r   r   r   r*   I   r   z)StaticCredentialsProvider.get_credentialsNr   r   r   r   r   r*   r   r   r   r   r+   E   s    
r+   c                   @   s   e Zd ZdddZdd ZdS )	EcsRamRoleCredentialsProvider   
   c                 C   s*   t || _|| _|| _d | _t | _d S r   )EcsRamRoleCredentialsFetcherfetchermax_retriestimeoutr,   	threadingLock$_EcsRamRoleCredentialsProvider__lock)r   	auth_hostr3   r4   r   r   r   r   N   s
   
z&EcsRamRoleCredentialsProvider.__init__c                 C   s   | j d u s
| j  rh| jS | j d u s| j  rEz| j| j| j| _ W n) tyD } zt	d
| | j d u r: W Y d }~nd }~ww W d    | j S W d    | j S W d    | j S 1 scw   Y  | j S )NException: {0})r,   r(   r7   r2   fetchr3   r4   	Exceptionloggererrorformat)r   er   r   r   r*   U   s.   

	
	
		z-EcsRamRoleCredentialsProvider.get_credentialsNr/   r0   r-   r   r   r   r   r.   M   s    
r.   c                   @   s   e Zd Zdd ZdddZdS )	r1   c                 C   s
   || _ d S r   )r8   )r   r8   r   r   r   r   d   s   
z%EcsRamRoleCredentialsFetcher.__init__r/   r0   c                 C   s2  t d|D ]}zhtj| j|d}|jdkrtd|j|jt	t
|j}|d}|d}|d}|d}	|d	}
|d
}|dkrPtd|t|
d}t}|d urdt|d}|| }t|||	||tW   S  ty } z||d krtd| td|W Y d }~qd }~ww d S )Nr   )r4      z7Failed to fetch credentials url, http code:{0}, msg:{1}CodeAccessKeyIdAccessKeySecretSecurityToken
ExpirationLastUpdatedSuccessz:Get credentials from ECS metadata service error, code: {0}z%Y-%m-%dT%H:%M:%SZr   r9   z8Failed to get credentials from ECS metadata service. {0})rangerequestsgetr8   status_coder   r>   textjsonloadsr   contentr   *DEFAULT_ECS_SESSION_TOKEN_DURATION_SECONDSr    r#   r;   r<   r=   )r   retry_timesr4   iresponsediccoder
   r   r   expiration_datelast_updated_dateexpiration_stampr"   last_updated_stampr?   r   r   r   r:   g   sD   










z"EcsRamRoleCredentialsFetcher.fetchNr@   )r   r   r   r   r:   r   r   r   r   r1   c   s    r1   c                   @   s   e Zd Zdd Zdd ZdS )&EnvironmentVariableCredentialsProviderc                 C   s   d| _ d| _d| _d S )Nr   r	   r   r   r   r   r      r   z/EnvironmentVariableCredentialsProvider.__init__c                 C   sB   t d}t d}t d}|std|stdt|||S )NOSS_ACCESS_KEY_IDOSS_ACCESS_KEY_SECRETOSS_SESSION_TOKENz*Access key id should not be null or empty.z.Secret access key should not be null or empty.)osgetenvr   r   r   r   r   r   r*      s   


z6EnvironmentVariableCredentialsProvider.get_credentialsNr-   r   r   r   r   r[      s    r[   )r_   r&   rJ   rN   loggingr5   
exceptionsr   utilsr   compatr   	getLoggerr   r<   objectr   rQ   r#   r    r)   r+   r.   r1   r[   r   r   r   r   <module>   s&   
$