a
    Qx_W                     @   sn   d dl Z d dlm  mZ d dlmZ d dlmZm	Z	m
Z
 ddlmZ G dd deZe
eZe	eZdS )    N)app_settings)OAuth2AdapterOAuth2CallbackViewOAuth2LoginView   )NextCloudProviderc                   @   sZ   e Zd ZejZejei Z	e	ddZ
de
Zde
Zde
Zdd Zdd	 Zd
S )NextCloudAdapterZSERVERzhttps://nextcloud.example.orgz{0}/apps/oauth2/api/v1/tokenz{0}/apps/oauth2/authorizez{0}/ocs/v1.php/cloud/users/c                 K   s$   |  ||d d }|  ||S )Nresponseuser_id)get_user_infoget_providerZsociallogin_from_response)selfrequestZapptokenkwargs
extra_data r   g/var/www/html/Ranjet/env/lib/python3.9/site-packages/allauth/socialaccount/providers/nextcloud/views.pycomplete_login   s    zNextCloudAdapter.complete_loginc                 C   sL   dd |i}tj| j| |d}|  t|j d }dd |D S )NZAuthorizationz
Bearer {0})headersr   c                 S   s$   i | ]}|j d ur|j|j  qS )N)texttagstrip).0dr   r   r   
<dictcomp>       z2NextCloudAdapter.get_user_info.<locals>.<dictcomp>)	formatrequestsgetprofile_urlZraise_for_statusETZ
fromstringcontentdecode)r   r   r
   r   Zrespdatar   r   r   r      s
    zNextCloudAdapter.get_user_infoN)__name__
__module____qualname__r   idZprovider_idr   Z	PROVIDERSr   settingsserverr   Zaccess_token_urlZauthorize_urlr    r   r   r   r   r   r   r      s   


r   )r   Zxml.etree.ElementTreeetreeZElementTreer!   Zallauth.socialaccountr   Z,allauth.socialaccount.providers.oauth2.viewsr   r   r   Zproviderr   r   Zadapter_viewZoauth2_loginZoauth2_callbackr   r   r   r   <module>   s   
