o
    gf                     @   s   d dl Z d dlmZmZ zd dlZW n ey1   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mZ d dlmZ G dd deZG dd	 d	eZG d
d deZG dd de
ZG dd deZeedZdS )    N)RequestSignatureMethod_HMAC_SHA1)
simplejson)ConsumerBasedOAuthOAuthBackend
BaseOAuth2)dsa_urlopenc                   @   s   e Zd Zdd Zdd ZdS )RdioBaseBackendc                 C   s   |d S )Nkey )selfdetailsresponser   r   b/var/www/html/humari/django-venv/lib/python3.10/site-packages/social_auth/backends/contrib/rdio.pyget_user_id   s   zRdioBaseBackend.get_user_idc                 C   s   |d |d |d |d dS )Nusername	firstNamelastNamedisplayName)r   
first_name	last_namefullnamer   )r   r   r   r   r   get_user_details   s
   z RdioBaseBackend.get_user_detailsN)__name__
__module____qualname__r   r   r   r   r   r   r	      s    r	   c                       s0   e Zd ZdZdZg dZe fddZ  ZS )RdioOAuth1Backendz!Rdio OAuth authentication backendrdio-oauth1)r
   rdio_idiconrdio_icon_urlurlrdio_profile_urlr   rdio_usernamestreamRegionrdio_stream_regionc                    s<   t t| |}|rd|v rtdd |d dD }|S )Naccess_tokenc                 s   s    | ]}| d V  qdS )=N)split).0tokr   r   r   	<genexpr>-   s    z+RdioOAuth1Backend.tokens.<locals>.<genexpr>&)superr   tokensdictr-   )clsinstancetoken	__class__r   r   r3   )   s   zRdioOAuth1Backend.tokens)	r   r   r   __doc__name
EXTRA_DATAclassmethodr3   __classcell__r   r   r8   r   r      s    r   c                   @   s   e Zd ZdZg dZdS )RdioOAuth2Backendrdio-oauth2)r   r    r#   r&   r(   )refresh_tokenrA   T)
token_typerB   TN)r   r   r   r;   r<   r   r   r   r   r?   2   s    r?   c                   @   s8   e Zd ZeZdZdZdZdZdZ	dZ
dd Zd	d
 ZdS )
RdioOAuth1z'http://api.rdio.com/oauth/request_tokenz$https://www.rdio.com/oauth/authorizez&http://api.rdio.com/oauth/access_tokenzhttp://api.rdio.com/1/RDIO_OAUTH1_KEYRDIO_OAUTH1_SECRETc                 O   s`   ddd}| j || j|d}t|j| }d| }zt|d W S  t	y/   Y dS w )zReturn user data providedcurrentUser!username,displayName,streamRegion)methodextras)params
resultN)
oauth_post_requestRDIO_API_BASEr   r$   to_postdatajoin	readlinesr   loads
ValueError)r   r+   argskwargsrJ   requestr   jsonr   r   r   	user_dataH   s   
zRdioOAuth1.user_datac                 C   sD   d| j v r| j d |d< tj| j|||dd}|t | j| |S )z+Generate OAuth request, setups callback urloauth_verifierPOST)r7   http_url
parametershttp_method)dataOAuthRequestfrom_consumer_and_tokenconsumersign_requestr   )r   r7   r$   rJ   rV   r   r   r   rM   W   s   
zRdioOAuth1.oauth_post_requestN)r   r   r   r   AUTH_BACKENDREQUEST_TOKEN_URLAUTHORIZATION_URLACCESS_TOKEN_URLrN   SETTINGS_KEY_NAMESETTINGS_SECRET_NAMErX   rM   r   r   r   r   rC   ?   s    rC   c                   @   s4   e Zd ZeZdZdZdZdZdZ	dZ
dZdd	 Zd
S )
RdioOAuth2z%https://www.rdio.com/oauth2/authorizez!https://www.rdio.com/oauth2/tokenzhttps://www.rdio.com/api/1/RDIO_OAUTH2_KEYRDIO_OAUTH2_SECRETRDIO2_PERMISSIONSRDIO2_EXTRA_PARAMSc                 O   sD   dd|d}t | jt|}zt|d W S  ty!   Y d S w )NrF   rG   )rH   rI   r+   rL   )r   rN   urllib	urlencoder   loadrS   )r   r+   rT   rU   rJ   r   r   r   r   rX   n   s   zRdioOAuth2.user_dataN)r   r   r   r?   rc   re   rf   rN   rg   rh   SCOPE_VAR_NAMEEXTRA_PARAMS_VAR_NAMErX   r   r   r   r   ri   d   s    ri   )r   r@   )rn   oauth2r   r_   r   rW   r   ImportErrordjango.utilssocial_auth.backendsr   r   r   social_auth.utilsr   r	   r   r?   rC   ri   BACKENDSr   r   r   r   <module>   s,    %
