o
    gëf¦
  ã                   @   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 )a[  
Skyrock OAuth support.

This adds support for Skyrock OAuth service. An application must
be registered first on skyrock and the settings SKYROCK_CONSUMER_KEY
and SKYROCK_CONSUMER_SECRET must be defined with they corresponding
values.

By default account id is stored in extra_data field, check OAuthBackend
class for details on how to extend it.
é    N)Ú
simplejson)ÚAuthCanceled)ÚConsumerBasedOAuthÚOAuthBackendzapi.skyrock.comzhttps://%s/v2/oauth/initiatezhttps://%s/v2/oauth/tokenzhttp://%s/v2/oauth/authenticatezhttps://%s/v2/user/get.jsonc                   @   s*   e Zd ZdZdZdgZdd„ Zdd„ ZdS )	ÚSkyrockBackendz$Skyrock OAuth authentication backendÚskyrock)Úidr   c                 C   s   |d S )NÚid_user© )ÚselfÚdetailsÚresponser
   r
   úe/var/www/html/humari/django-venv/lib/python3.10/site-packages/social_auth/backends/contrib/skyrock.pyÚget_user_id'   s   zSkyrockBackend.get_user_idc                 C   s0   |d |d |d d |d  |d |d dœS )z(Return user details from Skyrock accountÚusernameÚemailÚ	firstnameú Úname)r   r   ÚfullnameÚ
first_nameÚ	last_namer
   )r   r   r
   r
   r   Úget_user_details*   s   üzSkyrockBackend.get_user_detailsN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Ú
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‡ fdd„Z‡  ZS )ÚSkyrockAuthz&Skyrock OAuth authentication mechanismÚSKYROCK_CONSUMER_KEYÚSKYROCK_CONSUMER_SECRETc                 C   s8   |   |t¡}|  |¡}zt |¡W S  ty   Y dS w )zReturn user data providedN)Úoauth_requestÚSKYROCK_CHECK_AUTHÚfetch_responser   ÚloadsÚ
ValueError)r   Úaccess_tokenÚrequestÚjsonr
   r
   r   Ú	user_data<   s   
ÿzSkyrockAuth.user_datac                    s(   d| j v r	t| ƒ‚tt| ƒj|i |¤ŽS )z3Completes loging process, must return user instanceÚdenied)Údatar   Úsuperr   Úauth_complete)r   ÚargsÚkwargs©Ú	__class__r
   r   r-   E   s   
zSkyrockAuth.auth_complete)r   r   r   r   ÚSKYROCK_AUTHORIZATION_URLÚAUTHORIZATION_URLÚSKYROCK_REQUEST_TOKEN_URLÚREQUEST_TOKEN_URLÚSKYROCK_ACCESS_TOKEN_URLÚACCESS_TOKEN_URLr   ÚAUTH_BACKENDÚSETTINGS_KEY_NAMEÚSETTINGS_SECRET_NAMEr)   r-   Ú__classcell__r
   r
   r0   r   r   3   s    	r   r   )r   r(   r   ÚImportErrorÚdjango.utilsÚsocial_auth.exceptionsr   Úsocial_auth.backendsr   r   ÚSKYROCK_SERVERr4   r6   r2   r"   r   r   ÚBACKENDSr
   r
   r
   r   Ú<module>   s,    ÿ€ýÿ