o
    gf	                     @   s   d dl Z d dlmZmZ d dlmZ zd dlZW n ey7   zd dlZW n ey4   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 G dd	 d	eZG d
d deZdeiZdS )    N)Request	HTTPError)	urlencode)
simplejson)
BaseOAuth2OAuthBackend)dsa_urlopen)AuthTokenErrorc                   @   s$   e Zd ZdZdZg dZdd ZdS )RedditBackendz$Reddit OAuth2 authentication backendreddit))idr   )
link_karmar   )comment_karmar   )refresh_tokenr   )
expires_inexpiresc                 C   s   | ddddddS )z'Return user details from reddit accountname )usernameemailfullname
first_name	last_name)get)selfresponse r   \/var/www/html/humari/django-venv/lib/python3.10/site-packages/social_auth/backends/reddit.pyget_user_details   s   zRedditBackend.get_user_detailsN)__name__
__module____qualname____doc__r   
EXTRA_DATAr   r   r   r   r   r
      s
    r
   c                   @   sV   e Zd ZdZdZeZdZdZdZ	dZ
dZdZd	gZed
d Zdd Zedd ZdS )
RedditAuthzReddit OAuth2 supportF,z'https://ssl.reddit.com/api/v1/authorizez*https://ssl.reddit.com/api/v1/access_tokenREDDIT_APP_IDREDDIT_API_SECRETREDDIT_EXTENDED_PERMISSIONSidentityc                 C   s<   |  |}||d< t| jt||  d}| t| S )Nredirect_uri)dataheaders)refresh_token_paramsr   ACCESS_TOKEN_URLr   auth_headersprocess_refresh_token_responser   read)clstokenr*   r+   requestr   r   r   r   1   s   
zRedditAuth.refresh_tokenc                 O   sN   zt ddd| id}tt|W S  ty   Y dS  ty&   t| w )z*Grab user profile information from reddit.z'https://oauth.reddit.com/api/v1/me.jsonAuthorizationz	bearer %s)r,   N)r   r   loadr   
ValueErrorr   r	   )r   access_tokenargskwargsr4   r   r   r   	user_data:   s   
zRedditAuth.user_datac                 C   s   ddt d|    iS )Nr5   zBasic %sz%s:%s)base64urlsafe_b64encodeget_key_and_secret)r2   r   r   r   r/   G   s   
zRedditAuth.auth_headersN)r   r    r!   r"   REDIRECT_STATEr
   AUTH_BACKENDSCOPE_SEPARATORAUTHORIZATION_URLr.   SETTINGS_KEY_NAMESETTINGS_SECRET_NAMESCOPE_VAR_NAMEDEFAULT_SCOPEclassmethodr   r;   r/   r   r   r   r   r$   %   s     
r$   r   )r<   urllib2r   r   urllibr   jsonr   ImportErrordjango.utilssocial_auth.backendsr   r   social_auth.utilsr   social_auth.exceptionsr	   r
   r$   BACKENDSr   r   r   r   <module>   s(    ,