o
    h                     @   sx   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	 d dl
mZmZmZ G dd deZeeZeeZd	S )
    )	timedelta)timezone)app_settings)get_adapter)SocialToken)OAuth2AdapterOAuth2CallbackViewOAuth2LoginViewc                   @   s0   e Zd ZdZdZdZdZdZdd Zdd	 Z	d
S )LineOAuth2Adapterlinez%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/html/pos/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   r   get_requests_session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   access_token_urlauthorize_urlr*   r(   r"   r5   r    r    r    r!   r
      s    r
   N)datetimer   django.utilsr   allauth.socialaccountr   allauth.socialaccount.adapterr   allauth.socialaccount.modelsr   ,allauth.socialaccount.providers.oauth2.viewsr   r   r	   r
   adapter_viewoauth2_loginoauth2_callbackr    r    r    r!   <module>   s    
)