o
    gëfM
  ã                   @   s¼   d Z zddlZW n ey'   zddlZW n ey$   ddlmZ Y nw Y nw ddlmZ ddlmZm	Z	 dZ
de
 Zde Zd	e
 Zd
e ZG dd„ de	ƒZG dd„ deƒZdeiZdS )ad  
Dropbox OAuth support.

This contribution adds support for Dropbox OAuth service. The settings
DROPBOX_APP_ID and DROPBOX_API_SECRET must be defined with the values
given by Dropbox application registration process.

By default account id and token expiration time are stored in extra_data
field, check OAuthBackend class for details on how to extend it.
é    N)Ú
simplejson©Úsetting)ÚConsumerBasedOAuthÚOAuthBackendzdropbox.comzapi.%sz https://%s/1/oauth/request_tokenz https://www.%s/1/oauth/authorizezhttps://%s/1/oauth/access_tokenc                   @   s,   e Zd ZdZdZddgZdd„ Zdd„ Zd	S )
ÚDropboxBackendz$Dropbox OAuth authentication backendÚdropbox)Úidr	   )Úexpiresr
   c                 C   s"   t | d¡ƒ| d¡| d¡dœS )z(Return user details from Dropbox accountÚuidÚemailÚdisplay_name)Úusernamer   Ú
first_name)ÚstrÚget)ÚselfÚresponse© r   úe/var/www/html/humari/django-venv/lib/python3.10/site-packages/social_auth/backends/contrib/dropbox.pyÚget_user_details(   s   þzDropboxBackend.get_user_detailsc                 C   s   |d S )z4OAuth providers return an unique user id in responser   r   )r   Údetailsr   r   r   r   Úget_user_id.   s   zDropboxBackend.get_user_idN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚnameÚ
EXTRA_DATAr   r   r   r   r   r   r      s    þr   c                   @   s<   e Zd ZdZeZeZeZ	e
ZdZdZdd„ Zedd„ ƒZdS )	ÚDropboxAuthz&Dropbox OAuth authentication mechanismÚDROPBOX_APP_IDÚDROPBOX_API_SECRETc                 O   sD   dt  d }|  ||¡}|  |¡}zt |¡W S  ty!   Y dS w )zLoads user data from servicezhttps://z/1/account/infoN)ÚDROPBOX_APIÚoauth_requestÚfetch_responser   ÚloadsÚ
ValueError)r   Úaccess_tokenÚargsÚkwargsÚurlÚrequestr   r   r   r   Ú	user_data=   s   
ÿzDropboxAuth.user_datac                 C   s   t dƒot dƒS )z8Return backend enabled status by checking basic settingsr    r!   r   )Úclsr   r   r   ÚenabledG   s   zDropboxAuth.enabledN)r   r   r   r   ÚDROPBOX_AUTHORIZATION_URLÚAUTHORIZATION_URLÚDROPBOX_REQUEST_TOKEN_URLÚREQUEST_TOKEN_URLÚDROPBOX_ACCESS_TOKEN_URLÚACCESS_TOKEN_URLr   ÚAUTH_BACKENDÚSETTINGS_KEY_NAMEÚSETTINGS_SECRET_NAMEr,   Úclassmethodr.   r   r   r   r   r   4   s    
r   r   )r   Újsonr   ÚImportErrorÚdjango.utilsÚsocial_auth.utilsr   Úsocial_auth.backendsr   r   ÚDROPBOX_SERVERr"   r1   r/   r3   r   r   ÚBACKENDSr   r   r   r   Ú<module>   s,    
ÿ€ýÿ