o
    gëf­  ã                   @   sx   d Z ddlmZ ddlmZ ddlmZ ddlmZ ddl	m
Z
mZ dZdZG d	d
„ d
e
ƒZG dd„ deƒZdeiZdS )z
Twilio support
é    )Ú	urlencode)Úsub)Úauthenticate)Úsettings)ÚSocialAuthBackendÚBaseAuthzhttps://www.twilio.comz!https://www.twilio.com/authorize/c                   @   s    e Zd ZdZdd„ Zdd„ ZdS )ÚTwilioBackendÚtwilioc                 C   s   |d S )NÚ
AccountSid© )ÚselfÚdetailsÚresponser   r   úd/var/www/html/humari/django-venv/lib/python3.10/site-packages/social_auth/backends/contrib/twilio.pyÚget_user_id   s   zTwilioBackend.get_user_idc                 C   s   |d }|dddddœS )zMReturn twilio details, Twilio only provides AccountSID as
        parameters.r
   Ú )ÚusernameÚemailÚfullnameÚ
first_nameÚ	last_namer   )r   r   Úaccount_sidr   r   r   Úget_user_details   s   üzTwilioBackend.get_user_detailsN)Ú__name__Ú
__module__Ú__qualname__Únamer   r   r   r   r   r   r      s    r   c                   @   sP   e Zd ZdZeZdZdZdd„ Zdd„ Z	e
dd	„ ƒZe
d
d„ ƒZe
dd„ ƒZdS )Ú
TwilioAuthzTwilio authenticationÚTWILIO_CONNECT_KEYÚTWILIO_AUTH_TOKENc                 C   s<   |   ¡ }| j | j¡}tdd|ƒ}td|iƒ}dt||f S )z"Return authorization redirect url.z^httpsÚhttpÚcbz%s%s?%s)Úconnect_api_keyÚrequestÚbuild_absolute_uriÚredirectr   r   ÚTWILIO_AUTHORIZATION_URL)r   ÚkeyÚcallbackÚqueryr   r   r   Úauth_url*   s
   zTwilioAuth.auth_urlc                 O   s>   | j  d¡}|stdƒ‚| d| j | jjdi¡ t|i |¤ŽS )z3Completes loging process, must return user instancer
   zNo AccountSid returnedr   T)ÚdataÚgetÚ
ValueErrorÚupdateÚAUTH_BACKENDr   r   )r   ÚargsÚkwargsr   r   r   r   Úauth_complete2   s
   zTwilioAuth.auth_completec                 C   s   | j o| jS )z$Enable only if settings are defined.)r"   Ú
secret_key©Úclsr   r   r   Úenabled<   s   zTwilioAuth.enabledc                 C   ó   t t| jdƒS ©Nr   )Úgetattrr   ÚSETTINGS_KEY_NAMEr4   r   r   r   r"   A   ó   zTwilioAuth.connect_api_keyc                 C   r7   r8   )r9   r   ÚSETTINGS_SECRET_NAMEr4   r   r   r   r3   E   r;   zTwilioAuth.secret_keyN)r   r   r   Ú__doc__r   r/   r:   r<   r*   r2   Úclassmethodr6   r"   r3   r   r   r   r   r   $   s    


r   r	   N)r=   Úurllibr   Úrer   Údjango.contrib.authr   Údjango.confr   Úsocial_auth.backendsr   r   ÚTWILIO_SERVERr&   r   r   ÚBACKENDSr   r   r   r   Ú<module>   s    (ÿ