o
    ˷eW                     @   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 )NextCloudAdapter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_providersociallogin_from_response)selfrequestapptokenkwargs
extra_data r   f/var/www/ideatree/venv/lib/python3.10/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 )N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>   s   $ z2NextCloudAdapter.get_user_info.<locals>.<dictcomp>)	formatrequestsgetprofile_urlraise_for_statusET
fromstringcontentdecode)r   r   r   r   respdatar   r   r   r      s
   zNextCloudAdapter.get_user_infoN)__name__
__module____qualname__r   idprovider_idr   	PROVIDERSr"   settingsserverr    access_token_urlauthorize_urlr#   r   r   r   r   r   r   r      s    


r   )r!   xml.etree.ElementTreeetreeElementTreer%   allauth.socialaccountr   ,allauth.socialaccount.providers.oauth2.viewsr   r   r   providerr   r   adapter_viewoauth2_loginoauth2_callbackr   r   r   r   <module>   s    
