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Zde 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  
Readability OAuth support.

This contribution adds support for Readability OAuth service. The settings
READABILITY_CONSUMER_KEY and READABILITY_CONSUMER_SECRET must be defined with
the values given by Readability in the Connections page of your account
settings.é    N)Ú
simplejson)ÚConsumerBasedOAuthÚOAuthBackend)ÚAuthCanceled©Úsettingzwww.readability.comzhttps://%s/api/rest/v1z%s/oauth/authorize/z%s/oauth/access_token/z%s/oauth/request_token/z%s/users/_currentc                       s@   e Zd ZdZdZg d¢Zdd„ Zdd„ Ze‡ fdd	„ƒZ	‡  Z
S )
ÚReadabilityBackendz(Readability OAuth authentication backendÚreadability))Údate_joinedr
   )Úkindle_email_addressr   )Ú
avatar_urlr   )Úemail_into_addressr   c                 C   s&   |d }|d |d }}|||dœS )NÚusernameÚ
first_nameÚ	last_name)r   r   r   © )ÚselfÚresponser   r   r   r   r   úi/var/www/html/humari/django-venv/lib/python3.10/site-packages/social_auth/backends/contrib/readability.pyÚget_user_details'   s   þz#ReadabilityBackend.get_user_detailsc                 C   s   |d S )z Returns a unique username to user   r   )r   Údetailsr   r   r   r   Úget_user_id.   s   zReadabilityBackend.get_user_idc                    sF   t t| ƒ |¡}|r!d|v r!ttdd„ tdd„ |d  d¡ƒƒƒ}|S )a  Return the tokens needed to authenticate the access to any API the
        service might provide. Readability uses a pair of OAuthToken consisting
        of an oauth_token and oauth_token_secret.

        instance must be a UserSocialAuth instance.
        Úaccess_tokenc                 S   s   | d dv S )Nr   )Úoauth_tokenÚoauth_token_secretr   ©Úxr   r   r   Ú<lambda>?   s    z+ReadabilityBackend.tokens.<locals>.<lambda>c                 S   s
   |   d¡S )Nú=)Úsplitr   r   r   r   r   A   s   
 ú&)Úsuperr   ÚtokensÚdictÚfilterÚmapr   )ÚclsÚinstanceÚtoken©Ú	__class__r   r   r"   2   s   þþÿzReadabilityBackend.tokens)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚnameÚ
EXTRA_DATAr   r   Úclassmethodr"   Ú__classcell__r   r   r)   r   r      s    r   c                       sP   e Zd ZdZeZeZeZ	e
ZeZdZdZdd„ Z‡ fdd„Zedd	„ ƒZ‡  ZS )
ÚReadabilityAuthz*Readability OAuth authentication mechanismÚREADABILITY_CONSUMER_KEYÚREADABILITY_CONSUMER_SECRETc                 O   s<   t }|  ||¡}|  |¡}zt |¡W S  ty   Y d S w )N)ÚREADABILITY_USER_DATA_URLÚoauth_requestÚfetch_responser   ÚloadsÚ
ValueError)r   r   ÚargsÚkwargsÚurlÚrequestÚjsonr   r   r   Ú	user_dataQ   s   
ÿzReadabilityAuth.user_datac                    s(   d| j v r	t| ƒ‚tt| ƒj|i |¤ŽS )z2Completes login process, must return user instanceÚerror)Údatar   r!   r3   Úauth_complete)r   r;   r<   r)   r   r   rC   Z   s   
zReadabilityAuth.auth_completec                 C   s   t dƒot dƒS )z8Return backend enabled status by checking basic settingsr4   r5   r   )r&   r   r   r   Úenableda   s   ÿzReadabilityAuth.enabled)r+   r,   r-   r.   ÚREADABILITY_AUTHORIZATION_URLÚAUTHORIZATION_URLÚREADABILITY_REQUEST_TOKEN_URLÚREQUEST_TOKEN_URLÚREADABILITY_ACCESS_TOKEN_URLÚACCESS_TOKEN_URLÚREADABILITY_SERVERÚ
SERVER_URLr   ÚAUTH_BACKENDÚSETTINGS_KEY_NAMEÚSETTINGS_SECRET_NAMEr@   rC   r1   rD   r2   r   r   r)   r   r3   G   s    	r3   r	   )r.   r?   r   ÚImportErrorÚdjango.utilsÚsocial_auth.backendsr   r   Úsocial_auth.exceptionsr   Úsocial_auth.utilsr   rK   ÚREADABILITY_APIrE   rI   rG   r6   r   r3   ÚBACKENDSr   r   r   r   Ú<module>   s0    ÿ€ý)"ÿ