o
    ˷e                     @   s\   d dl 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 )    N)app_settings)GitHubProvider)OAuth2AdapterOAuth2CallbackViewOAuth2LoginViewc                   @   s   e Zd ZejZejei Z	de	v r e	d
dZdeZndZdZdeZdeZdeZd	eZd
d Zdd ZdS )GitHubOAuth2Adapter
GITHUB_URL/z
{0}/api/v3zhttps://github.comzhttps://api.github.comz{0}/login/oauth/access_tokenz{0}/login/oauth/authorizez{0}/userz{0}/user/emailsc                 K   s^   dd |ji}tj| j|d}|  | }tjr'|ds'| 	||d< | 
 ||S )NAuthorizationztoken {}headersemail)formattokenrequestsgetprofile_urlraise_for_statusjsonr   QUERY_EMAIL	get_emailget_providersociallogin_from_response)selfrequestappr   kwargsr   resp
extra_data r   c/var/www/ideatree/venv/lib/python3.10/site-packages/allauth/socialaccount/providers/github/views.pycomplete_login   s   z"GitHubOAuth2Adapter.complete_loginc                 C   sn   d }t j| j|d}|  | }|jdkr5|r5|d }dd |D }|r*|d }t|tr5|dd}|S )Nr      r   c                 S   s$   g | ]}t |tr|d r|qS )primary)
isinstancedictr   ).0er   r   r    
<listcomp>,   s    
z1GitHubOAuth2Adapter.get_email.<locals>.<listcomp>r    )r   r   
emails_urlr   r   status_coder$   r%   )r   r   r   r   emailsprimary_emailsr   r   r    r   %   s   
zGitHubOAuth2Adapter.get_emailN)__name__
__module____qualname__r   idprovider_idr   	PROVIDERSr   settingsrstripweb_urlr   api_urlaccess_token_urlauthorize_urlr   r*   r!   r   r   r   r   r    r      s    



	r   )r   allauth.socialaccountr   /allauth.socialaccount.providers.github.providerr   ,allauth.socialaccount.providers.oauth2.viewsr   r   r   r   adapter_viewoauth2_loginoauth2_callbackr   r   r   r    <module>   s    
*