a
    u54`Ô	  ã                   @   sL   d dl Z d dl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 )é    N)ÚOrderedDict)Ú	urlencode)ÚOAuth2ClientÚOAuth2Errorc                   @   s(   e Zd ZdZdd„ Zdd„ Zdd„ ZdS )	ÚFeishuOAuth2ClientzChttps://open.feishu.cn/open-apis/auth/v3/app_access_token/internal/c                 C   s^   | j | j| jddœ}| jr$| j|d< | |¡ tƒ }t|ƒD ]}|| ||< q<d|t|ƒf S )NÚcode)Úapp_idZredirect_uriÚscopeZresponse_typeÚstatez%s?%s)Úconsumer_keyZcallback_urlr	   r
   Úupdater   Úsortedr   )ÚselfZauthorization_urlZextra_paramsÚparamsZsorted_paramsÚparam© r   úe/var/www/html/Ranjet/env/lib/python3.9/site-packages/allauth/socialaccount/providers/feishu/client.pyÚget_redirect_url   s    ü

z#FeishuOAuth2Client.get_redirect_urlc                 C   s`   | j | jdœ}|  |¡ | j}tjd||d}| ¡  | ¡ }|rJd|vrXtd|j	 ƒ‚|d S )N)r   Z
app_secretZPOST)ÚdataÚapp_access_tokenz%Error retrieving app access token: %s)
r   Zconsumer_secretÚ_strip_empty_keysÚapp_access_token_urlÚrequestsÚrequestÚraise_for_statusÚjsonr   Úcontent)r   r   ÚurlÚrespÚaccess_tokenr   r   r   r   $   s    þ
z#FeishuOAuth2Client.app_access_tokenc                 C   s”   d||   ¡ dœ}d }|  |¡ | j}| jdkr6|}d }tj| j||t |¡ddid}| ¡  | ¡ }|r~d|vs~d|d vrŒt	d	|j
 ƒ‚|d S )
NZauthorization_code)Z
grant_typer   r   ÚGETzContent-Typezapplication/json)r   r   Úheadersr   r   z!Error retrieving access token: %s)r   r   Zaccess_token_urlZaccess_token_methodr   r   r   Údumpsr   r   r   )r   r   r   r   r   r   r   r   r   r   Úget_access_token5   s6    ý

ûÿþ
ýz#FeishuOAuth2Client.get_access_tokenN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r#   r   r   r   r   r      s
   ÿr   )
r   r   Úcollectionsr   Zdjango.utils.httpr   Z-allauth.socialaccount.providers.oauth2.clientr   r   r   r   r   r   r   Ú<module>   s
   