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mZ ddlm	Z	 ddl
mZ dgZdZd	ZG d
d„ de	ƒZG dd„ deƒZdeiZdS )aÍ  
Orkut OAuth support.

This contribution adds support for Orkut OAuth service. The scope is
limited to http://orkut.gmodules.com/social/ by default, but can be
extended with ORKUT_EXTRA_SCOPE on project settings. Also name, display
name and emails are the default requested user data, but extra values
can be specified by defining ORKUT_EXTRA_DATA setting.

OAuth settings ORKUT_CONSUMER_KEY and ORKUT_CONSUMER_SECRET are needed
to enable this service support.
é    N)Ú
simplejson)ÚsettingÚdsa_urlopen)ÚOAuthBackend)ÚBaseGoogleOAuthz!http://orkut.gmodules.com/social/zhttp://www.orkut.com/social/rpczname,displayName,emailsc                   @   s   e Zd ZdZdZdd„ ZdS )ÚOrkutBackendz"Orkut OAuth authentication backendÚorkutc              	   C   sX   z
|d d d }W n t tfy   d}Y nw |d ||d |d d |d d d	œS )
z&Return user details from Orkut accountÚemailsr   ÚvalueÚ ÚdisplayNameÚnameÚ	givenNameÚ
familyName)ÚusernameÚemailÚfullnameÚ
first_nameÚ	last_name)ÚKeyErrorÚ
IndexError)ÚselfÚresponser	   © r   úc/var/www/html/humari/django-venv/lib/python3.10/site-packages/social_auth/backends/contrib/orkut.pyÚget_user_details&   s   ÿ

üzOrkutBackend.get_user_detailsN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r   r   "   s    r   c                       s6   e Zd ZdZeZdZdZdd„ Zd	‡ fdd„	Z	‡  Z
S )
Ú	OrkutAuthz$Orkut OAuth authentication mechanismÚORKUT_CONSUMER_KEYÚORKUT_CONSUMER_SECRETc           	   	   O   sŠ   t }tdƒr|dtdƒ 7 }ttdg ƒ }dddd|d |¡d	œ}|  |t|¡}t| ¡ ƒ ¡ }zt	 
|¡d
 W S  ttfyD   Y dS w )z"Loads user data from Orkut serviceÚORKUT_EXTRA_DATAú,ÚORKUT_EXTRA_SCOPEz
people.getÚmyselfz@mez@selfú )ÚmethodÚidÚuserIdÚgroupIdÚfieldsÚscopeÚdataN)ÚORKUT_DEFAULT_DATAr   ÚORKUT_SCOPEÚjoinÚoauth_requestÚORKUT_REST_ENDPOINTr   Úto_urlÚreadr   ÚloadsÚ
ValueErrorr   )	r   Úaccess_tokenÚargsÚkwargsr,   r-   ÚparamsÚrequestr   r   r   r   Ú	user_data:   s$   ûÿzOrkutAuth.user_dataNc                    s8   |pi }t tdg ƒ }d |¡|d< tt| ƒ |||¡S )Nr%   r'   r-   )r0   r   r1   Úsuperr    r2   )r   ÚtokenÚurlÚextra_paramsr-   ©Ú	__class__r   r   r2   M   s   zOrkutAuth.oauth_request)N)r   r   r   r   r   ÚAUTH_BACKENDÚSETTINGS_KEY_NAMEÚSETTINGS_SECRET_NAMEr=   r2   Ú__classcell__r   r   rB   r   r    4   s    r    r   )r   Újsonr   ÚImportErrorÚdjango.utilsÚsocial_auth.utilsr   r   Úsocial_auth.backendsr   Úsocial_auth.backends.googler   r0   r3   r/   r   r    ÚBACKENDSr   r   r   r   Ú<module>   s*    ÿ€ý"ÿ