o
    ˷e                     @   s   d dl 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
 d dlmZ d dlmZmZ d d	lmZmZ d
dlmZ ddlmZ G dd deZdZdZdd Ze
dd Zdd ZdS )    N)md5)HttpResponseRedirect)reverse)	urlencode)csrf_exempt)	providers)complete_social_loginrender_authentication_error)SocialLoginSocialToken   )	AuthError   )DraugiemProviderc                   @   s   e Zd ZdS )DraugiemApiErrorN)__name__
__module____qualname__ r   r   e/var/www/ideatree/venv/lib/python3.10/site-packages/allauth/socialaccount/providers/draugiem/views.pyr      s    r   zhttp://api.draugiem.lv/jsonz http://api.draugiem.lv/authorizec                 C   sh   t jtj| | }| tt}t	|j
| d }|j||d}t|  tdtt|f S )Nzutf-8)apphashredirectz%s?%s)r   registryby_idr   idget_appbuild_absolute_urir   callbackr   secretencode	hexdigest	client_idr
   stash_stater   AUTHORIZE_URLr   )requestr   redirect_urlredirect_url_hashparamsr   r   r   login   s   
r)   c              
   C   s   d| j vrt| tjtjdS | j d dkrt| tjtjdS d| j vr,t| tjtjdS d }d }z!tj	tj| 
| }t| || j d }t| |_t| |}W n tjtfyh } z|}W Y d }~nd }~ww |sst| tj|d}|S )Ndr_auth_status)errorokdr_auth_code)	exception)GETr	   r   r   r   UNKNOWNDENIEDr   r   r   r   draugiem_complete_loginr
   unstash_statestater   requestsRequestExceptionr   )r%   retauth_exceptionr   r)   er   r   r   r   )   s8   




r   c                 C   sp   t jtj| }ttd|j|d}|	  |
 }d|v r%t|d t||d d}|| |}||_|S )N	authorize)actionr   coder+   apikey)r   token)r   r   r   r   r   r5   getACCESS_TOKEN_URLr   raise_for_statusjsonr   r   sociallogin_from_responser>   )r%   r   r<   providerresponseresponse_jsonr>   r)   r   r   r   r2   M   s   r2   )r5   hashlibr   django.httpr   django.urlsr   django.utils.httpr   django.views.decorators.csrfr   allauth.socialaccountr   allauth.socialaccount.helpersr   r	   allauth.socialaccount.modelsr
   r   baser   rD   r   	Exceptionr   r@   r$   r)   r   r2   r   r   r   r   <module>   s$    
#