o
    Lf                     @   sr   d dl m  mZ d dl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)get_adapter)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   p/var/www/html/humari/django-venv/lib/python3.10/site-packages/allauth/socialaccount/providers/nextcloud/views.pycomplete_login   s   zNextCloudAdapter.complete_loginc                 C   sR   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>)
formatr   get_requests_session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	   )xml.etree.ElementTreeetreeElementTreer&   allauth.socialaccountr   allauth.socialaccount.adapterr   ,allauth.socialaccount.providers.oauth2.viewsr   r   r   providerr   r	   adapter_viewoauth2_loginoauth2_callbackr   r   r   r   <module>   s    
