o
    tBh                     @   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 g dZG dd de	Z
G dd 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ZdS )    N)ClientError)Cache)aws_access_keyaws_secret_key
lwa_app_idlwa_client_secretc                   @   s   e Zd ZdZdS )MissingCredentialszO
    Credentials are missing, see the error output to find possible causes
    N)__name__
__module____qualname____doc__ r   r   v/var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/sp_api/base/credential_provider.pyr      s    r   c                   @   s<   e Zd Zg ZdZddefddZdd Zdd	 Zd
d Z	dS )BaseCredentialProviderNdefaultaccountc                 O   s
   || _ d S N)r   )selfr   argskwargsr   r   r   __init__   s   
zBaseCredentialProvider.__init__c                 O   s   |    |  S r   )load_credentialscheck_credentials)r   r   r   r   r   r   __call__   s   zBaseCredentialProvider.__call__c                 C   s   t  r   )NotImplementedErrorr   r   r   r   r   #   s   z'BaseCredentialProvider.load_credentialsc              	      sf   z fddt D  _W n ttfy   tddt  w t js( jS tdd j )Nc                    s(   g | ]}| j  vs j | s|qS r   )credentialskeys).0cr   r   r   
<listcomp>(   s    z<BaseCredentialProvider.check_credentials.<locals>.<listcomp>Credentials are missing: , )required_credentialserrorsAttributeError	TypeErrorr   joinlenr   r   r   r   r   r   &   s   
z(BaseCredentialProvider.check_credentials)r   )
r	   r
   r   r$   r   strr   r   r   r   r   r   r   r   r      s    r   c                       s*   e Zd Zdd Zdef fddZ  ZS )FromCodeCredentialProviderc                 C   s   d S r   r   r   r   r   r   r   2   s   z+FromCodeCredentialProvider.load_credentialsr   c                    s   t t| d| || _d S )Nr   )superr*   r   r   )r   r   r   r   	__class__r   r   r   5   s   
z#FromCodeCredentialProvider.__init__)r	   r
   r   r   dictr   __classcell__r   r   r,   r   r*   1   s    r*   c                   @      e Zd Zdd ZdS ) FromConfigFileCredentialProviderc              	   C   sb   z t d}tj| d}|| || j  }|| _	W d S  t j
jt j
jfy0   Y d S w )Nzpython-sp-apizcredentials.yml)confuseConfigurationospathr'   
config_dirset_filer   getr   
exceptionsNotFoundErrorConfigReadError)r   configconfig_filenameaccount_datar   r   r   r   ;   s   

z1FromConfigFileCredentialProvider.load_credentialsNr	   r
   r   r   r   r   r   r   r1   :       r1   c                   @   r0   )FromSecretsCredentialProviderc              	   C   s   t jdd s	d S z5td}|jt jdd}t|d}t|d|d|d|d|d	|d
d}W n
 t	yH   Y d S w || _
d S )NSP_API_AWS_SECRET_IDsecretsmanager)SecretIdSecretStringSP_API_REFRESH_TOKEN
LWA_APP_IDLWA_CLIENT_SECRETSP_API_SECRET_KEYSP_API_ACCESS_KEYSP_API_ROLE_ARNrefresh_tokenr   r   r   r   role_arn)r4   environr8   boto3clientget_secret_valuejsonloadsr.   r   r   )r   rQ   responsesecretr>   r   r   r   r   G   s(   



z.FromSecretsCredentialProvider.load_credentialsNr?   r   r   r   r   rA   F   r@   rA   c                   @   s   e Zd Zdd Zdd ZdS )*FromEnvironmentVariablesCredentialProviderc              	   C   sB   t | d| d| d| d| d| dd}|| _d S )NrF   rG   rH   rI   rJ   rK   rL   )r.   _get_envr   )r   r>   r   r   r   r   _   s   
z;FromEnvironmentVariablesCredentialProvider.load_credentialsc                 C   s"   t j| d| j t j|S )N_)r4   rO   r8   r   )r   keyr   r   r   rX   j   s   
z3FromEnvironmentVariablesCredentialProvider._get_envN)r	   r
   r   r   rX   r   r   r   r   rW   ^   s    rW   c                   @   s>   e Zd ZdZeddZeeee	gZ
d	ddZG dd dZdS )
CredentialProviderN
   )maxsizer   c              	   C   sl   || _ | jD ]}z|||d | _W  n	 ty   Y qw | jr,| jdi | j| _d S tddt )N)r   r   r!   r"   r   )r   CREDENTIAL_PROVIDERSr   r   Configr'   r#   )r   r   r   cpr   r   r   r   z   s   
zCredentialProvider.__init__c                   @   r0   )zCredentialProvider.Configc                 K   sL   | d| _| d| _| d| _| d| _| d| _| d| _d S )NrM   r   r   r   r   rN   )r8   rM   r   r   r   r   rN   )r   r   r   r   r   r      s   z"CredentialProvider.Config.__init__N)r	   r
   r   r   r   r   r   r   r_      r@   r_   )r   N)r	   r
   r   r   r   cacher*   rW   rA   r1   r^   r   r_   r   r   r   r   r[   o   s    

r[   )rS   r4   r2   rP   botocore.exceptionsr   
cachetoolsr   r#   	Exceptionr   r   r*   r1   rA   rW   r[   r   r   r   r   <module>   s    	