a
    ‹Qx_ð  ã                   @   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 )ÚGitHubOAuth2AdapterZ
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rN| d¡sN|  	|¡|d< |  
¡  ||¡S )NZAuthorizationztoken {}©ÚheadersÚemail)ÚformatÚtokenÚrequestsÚgetÚprofile_urlÚraise_for_statusÚjsonr   ZQUERY_EMAILÚ	get_emailÚget_providerZsociallogin_from_response)ÚselfÚrequestZappr   Úkwargsr
   ÚrespÚ
extra_data© r   úd/var/www/html/Ranjet/env/lib/python3.9/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rj|rj|d }dd„ |D ƒ}|rT|d }t|tƒrj| dd¡}|S )Nr	   éÈ   r   c                 S   s$   g | ]}t |tƒr| d ¡r|‘qS )Zprimary)Ú
isinstanceÚdictr   )Ú.0Úer   r   r   Ú
<listcomp>,   s   z1GitHubOAuth2Adapter.get_email.<locals>.<listcomp>r   Ú )r   r   Ú
emails_urlr   r   Zstatus_coder   r   )r   r
   r   r   ZemailsZprimary_emailsr   r   r   r   %   s    ÿ
zGitHubOAuth2Adapter.get_emailN)Ú__name__Ú
__module__Ú__qualname__r   ÚidZprovider_idr   Z	PROVIDERSr   ÚsettingsÚrstripZweb_urlr   Zapi_urlZaccess_token_urlZauthorize_urlr   r$   r   r   r   r   r   r   r      s   



	r   )r   Zallauth.socialaccountr   Z/allauth.socialaccount.providers.github.providerr   Z,allauth.socialaccount.providers.oauth2.viewsr   r   r   r   Zadapter_viewZoauth2_loginZoauth2_callbackr   r   r   r   Ú<module>   s   *
