o
    RD©iÝ  ã                   @  sj   d dl mZ d dlZd dlmZmZ ddlmZ ddlm	Z	 er&ddl
mZ e e¡ZG d	d
„ d
e	ƒZdS )é    )ÚannotationsN)ÚTYPE_CHECKINGÚAnyé   ©ÚOAUTH_TYPE_CLIENT_CREDENTIALSé   )ÚAuthByOAuthBase)ÚSnowflakeConnectionc                      s<   e Zd ZdZ		d d!‡ fdd„Zd"dd„Zd#dd„Z‡  ZS )$ÚAuthByOauthCredentialszIAuthenticates user by OAuth credentials - a client_id/client_secret pair.NFÚapplicationÚstrÚ	client_idÚclient_secretÚtoken_request_urlÚscopeÚ
connectionúSnowflakeConnection | NoneÚcredentials_in_bodyÚboolÚreturnÚNonec           	   	     sD   |   |||¡ tƒ jd||||d ddœ|¤Ž || _|| _d | _d S )NF)r   r   r   r   Útoken_cacheÚrefresh_token_enabled© )Ú$_validate_client_credentials_presentÚsuperÚ__init__Ú_applicationÚ_credentials_in_bodyÚ_origin)	Úselfr   r   r   r   r   r   r   Úkwargs©Ú	__class__r   úc/var/www/Datamplify/venv/lib/python3.10/site-packages/snowflake/connector/auth/oauth_credentials.pyr      s   úù	
zAuthByOauthCredentials.__init__c                 C  s   t S )Nr   )r!   r   r   r%   Ú_get_oauth_type_id/   s   z)AuthByOauthCredentials._get_oauth_type_idÚconnr
   ÚauthenticatorÚservice_nameú
str | NoneÚaccountÚuserr"   r   ú(str | None, str | None)c                K  s<   t  d¡ d| jdœ}| jr| j|d< | j|d< |  ||¡S )Nz1authenticating with OAuth client credentials flowÚclient_credentials)Ú
grant_typer   r   r   )ÚloggerÚdebugÚ_scoper   Ú
_client_idÚ_client_secretÚ_get_request_token_response)r!   r'   r(   r)   r+   r,   r"   Úfieldsr   r   r%   Ú_request_tokens2   s   

þ

z&AuthByOauthCredentials._request_tokens)NF)r   r   r   r   r   r   r   r   r   r   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__r   r&   r7   Ú__classcell__r   r   r#   r%   r      s    	ø
r   )Ú
__future__r   ÚloggingÚtypingr   r   Ú	constantsr   Ú_oauth_baser	   Ú r
   Ú	getLoggerr8   r0   r   r   r   r   r%   Ú<module>   s   
