o
    ˷e	                     @   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_idredirect_uriscoperesponse_typestatez%s?%s)consumer_keycallback_urlr
   r   updater   sortedr   )selfauthorization_urlextra_paramsparamssorted_paramsparam r   d/var/www/ideatree/venv/lib/python3.10/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}|  | }|r%d|vr,td|j	 |d S )N)r   
app_secretPOST)dataapp_access_tokenz%Error retrieving app access token: %s)
r   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r|}d }tj| j||t|ddid}|  | }|r?d|vs?d|d vrFt	d	|j
 |d S )
Nauthorization_code)
grant_typer   r   GETzContent-Typezapplication/json)r   r   headersr   r(   z!Error retrieving access token: %s)r   r   access_token_urlaccess_token_methodr!   r"   r$   dumpsr#   r   r%   )r   r   r   r   r&   r'   r(   r   r   r   get_access_token5   s2   

z#FeishuOAuth2Client.get_access_tokenN)__name__
__module____qualname__r    r   r   r0   r   r   r   r   r      s    r   )
r$   r!   collectionsr   django.utils.httpr   -allauth.socialaccount.providers.oauth2.clientr   r   r   r   r   r   r   <module>   s   