o
    RD©iŠ  ã                   @  sH   d dl mZ d dlmZ ddlmZ ddlmZmZ G dd„ deƒZ	d	S )
é    )Úannotations)ÚAnyé   )ÚOAUTH_AUTHENTICATORé   )ÚAuthByPluginÚAuthTypec                      sf   e Zd ZdZeddd„ƒZeddd„ƒZd‡ fdd„Zddd„Zddd„Z	d dd„Z
d!dd„Z‡  ZS )"ÚAuthByOAuthzgOAuth Based Authentication.

    Works by accepting an OAuth token and using that to authenticate.
    Úreturnr   c                 C  s   t jS ©N)r   ÚOAUTH©Úself© r   úW/var/www/Datamplify/venv/lib/python3.10/site-packages/snowflake/connector/auth/oauth.pyÚtype_   s   zAuthByOAuth.type_ú
str | Nonec                 C  s   | j S )zReturns the token.©Ú_oauth_tokenr   r   r   r   Úassertion_content   s   zAuthByOAuth.assertion_contentÚoauth_tokenÚstrÚNonec                   s   t ƒ jdi |¤Ž || _dS )z,Initializes an instance with an OAuth Token.Nr   )ÚsuperÚ__init__r   )r   r   Úkwargs©Ú	__class__r   r   r      s   
zAuthByOAuth.__init__c                 C  s
   d | _ d S r   r   r   r   r   r   Úreset_secrets   s   
zAuthByOAuth.reset_secretsr   r   c                 K  s   dS )z@Nothing to do here, token should be obtained outside the driver.Nr   ©r   r   r   r   r   Úprepare!   s   zAuthByOAuth.prepareúdict[str, bool]c                 K  s   ddiS )NÚsuccessFr   r   r   r   r   Úreauthenticate(   s   zAuthByOAuth.reauthenticateÚbodyúdict[Any, Any]c                 C  s   t |d d< | j|d d< dS )z«Update some information required by OAuth.

        OAuth needs the authenticator and token attributes set, as well as loginname, which is set already in auth.py.
        ÚdataÚAUTHENTICATORÚTOKENN)r   r   )r   r$   r   r   r   Úupdate_body+   s   zAuthByOAuth.update_body)r
   r   )r
   r   )r   r   r
   r   )r
   r   )r   r   r
   r   )r   r   r
   r!   )r$   r%   r
   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úpropertyr   r   r   r   r    r#   r)   Ú__classcell__r   r   r   r   r	   
   s    


r	   N)
Ú
__future__r   Útypingr   Únetworkr   Ú	by_pluginr   r   r	   r   r   r   r   Ú<module>   s
   