o
    gfv                     @   s   d Z ddlZddl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mZ d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 )zK
XING OAuth support

No extra configurations are needed to make this work.
    N)Token)	urlencode)
simplejson)ConsumerBasedOAuthOAuthBackend)AuthCanceledAuthUnknownErrorzxing.comzhttps://api.%s/v1/request_tokenzhttps://api.%s/v1/access_tokenzhttps://www.%s/v1/authorizezhttps://api.%s/v1/users/me.jsonc                   @   s$   e Zd ZdZdZddgZdd ZdS )XingBackendz!Xing OAuth authentication backendxing)idr   )user_idr   c                 C   s:   |d |d }}| dd}|| |d | |||dS )z%Return user details from Xing account
first_name	last_nameemail  )usernamefullnamer   r   r   )get)selfresponser   r   r    r   b/var/www/html/humari/django-venv/lib/python3.10/site-packages/social_auth/backends/contrib/xing.pyget_user_details)   s   
zXingBackend.get_user_detailsN)__name__
__module____qualname____doc__name
EXTRA_DATAr   r   r   r   r   r	   !   s    r	   c                       sL   e Zd ZdZeZeZeZ	e
ZdZdZdZdd Z fddZd	d
 Z  ZS )XingAuthz#Xing OAuth authentication mechanismXING_CONSUMER_KEYXING_CONSUMER_SECRET+c              	   O   s   |   \}}tj||d}t||}|td\}}	t|	d d }
z|
d |
d |
d |
d |
d d	W S  tt	fyC   Y d
S w )zReturn user data provided)keysecretGETusersr   r   r   r   active_email)r   r   r   r   r   N)
get_key_and_secretoauthConsumerClientrequestXING_CHECK_AUTHr   loadsKeyError
IndexError)r   access_tokenargskwargsr$   r%   consumerclientrespcontentprofiler   r   r   	user_data>   s   zXingAuth.user_datac                    sH   | j jd}|r|dkrt| dt| d| tt| j|i |S )z1Complete auth process. Check Xing error response.oauth_problemuser_refusedr   zXing error was %s)r-   r&   r   r   r   superr    auth_complete)r   r3   r4   r;   	__class__r   r   r>   Q   s   
zXingAuth.auth_completec                 C   sJ   | j }|  }|r|d t| }| jd||  d}| |}t|S )z<Makes first request to oauth. Returns an unauthorized Token.?N)tokenurlextra_params)REQUEST_TOKEN_URLget_scope_argumentr   oauth_requestrequest_token_extra_argumentsfetch_responser   from_string)r   request_token_urlscoper-   r   r   r   r   unauthorized_token\   s   

zXingAuth.unauthorized_token)r   r   r   r   r	   AUTH_BACKENDXING_AUTHORIZATION_URLAUTHORIZATION_URLXING_REQUEST_TOKEN_URLrE   XING_ACCESS_TOKEN_URLACCESS_TOKEN_URLSETTINGS_KEY_NAMESETTINGS_SECRET_NAMESCOPE_SEPARATORr:   r>   rM   __classcell__r   r   r?   r   r    4   s    r    r
   )r   oauth2r*   r   urllibr   jsonr   ImportErrordjango.utilssocial_auth.backendsr   r   social_auth.exceptionsr   r   XING_SERVERrQ   rR   rO   r.   r	   r    BACKENDSr   r   r   r   <module>   s>    :