
    f                         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e      Z ej                  e      Z ej                  e      Zy	)
    )	timedelta)timezone)app_settings)get_adapter)SocialToken)OAuth2AdapterOAuth2CallbackViewOAuth2LoginViewc                   ,    e Zd ZdZdZdZdZdZd Zd Z	y)	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                    t         j                  j                  | j                  i       }d|j                  dd      v rt	        |d         }nt	        |d         }|j                  dd      |_        |j                  | j                  d      }|r/t        j                         t        t        |      	      z   |_        |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_ins        e/var/www/cs2snipe.com/venv/lib/python3.12/site-packages/allauth/socialaccount/providers/line/views.pyparse_tokenzLineOAuth2Adapter.parse_token   s      ))--d.>.>Chll7B//d:&67Ed>&:;E!XXor:XXd1148
'||~	#j/0RRE    c                 6   t         j                  j                  | j                  i       }d|j                  dd      v rL|j                  |j
                  d}t               j                         j                  | j                  |      }nPddj                  |j
                        i}t               j                         j                  | j                  |      }|j                          |j                         }	| j                         j                  ||	      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_datas
             r#   complete_loginz LineOAuth2Adapter.complete_login&   s    ))--d.>.>Chll7B//$'MMu{{KG=557<<T=N=NPWXD&(;(;EKK(HIG%%'T%%w7 
 	YY[
  "<<WjQQr%   N)
__name__
__module____qualname__r   access_token_urlauthorize_urlr.   r,   r$   r9    r%   r#   r   r      s'    K>BM2K;L Rr%   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#   <module>rI      sV     ! . 5 4 %R %RP ,++,=>1$112CDr%   