o
    ˷ee                     @   s   d dl Z d dlmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
mZmZ ddlmZ G d	d
 d
e
ZeeZeeZdS )    N)	timedelta)timezone)app_settings)SocialToken)OAuth2AdapterOAuth2CallbackViewOAuth2LoginView   )LineProviderc                   @   s2   e Zd ZejZdZdZdZdZ	dd Z
dd Zd	S )
LineOAuth2Adapterz%https://api.line.me/oauth2/v2.1/tokenz,https://access.line.me/oauth2/v2.1/authorizezhttps://api.line.me/v2/profilez&https://api.line.me/oauth2/v2.1/verifyc                 C   sz   t j| ji }d|ddv rt|d d}nt|d d}|dd|_|| jd}|r;t t	t
|d	 |_|S )
z3
        data: access_token data from line
        emailSCOPE id_token)tokenaccess_tokenrefresh_tokenN)seconds)r   	PROVIDERSgetprovider_idr   token_secretexpires_in_keyr   nowr   int
expires_at)selfdatasettingsr   
expires_in r    a/var/www/ideatree/venv/lib/python3.10/site-packages/allauth/socialaccount/providers/line/views.pyparse_token   s   zLineOAuth2Adapter.parse_tokenc           
      K   s~   t j| ji }d|ddv r|j|jd}t| j|}ndd	|ji}tj| j
|d}|  | }	|  ||	S )Nr   r   r   )	client_idr   Authorizationz
Bearer {0})headers)r   r   r   r   r#   r   requestspostid_token_urlformatprofile_urlraise_for_statusjsonget_providersociallogin_from_response)
r   requestappr   kwargsr   payloadrespr%   
extra_datar    r    r!   complete_login(   s   z LineOAuth2Adapter.complete_loginN)__name__
__module____qualname__r
   idr   access_token_urlauthorize_urlr*   r(   r"   r5   r    r    r    r!   r      s    r   )r&   datetimer   django.utilsr   allauth.socialaccountr   allauth.socialaccount.modelsr   ,allauth.socialaccount.providers.oauth2.viewsr   r   r   providerr
   r   adapter_viewoauth2_loginoauth2_callbackr    r    r    r!   <module>   s    
$