o
    hk                     @   sl   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
mZ G dd de	ZeeZe
eZdS )	    )context)app_settings)get_adapter)SocialToken)OAuth2AdapterOAuth2CallbackViewOAuth2LoginViewc                   @   sX   e Zd ZdZdd Zedd Zedd Zedd	 Zd
e	fddZ
d
e	fddZdS )NextCloudOAuth2Adapter	nextcloudc                 C   sN   t j| ji }|dd}t jtj| jd}|jd|}| | }|S )NSERVERzhttps://nextcloud.example.org)providerserver)	r   	PROVIDERSgetprovider_idr   get_appr   requestsettings)selfpathr   r   appret r   f/var/www/html/pos/venv/lib/python3.10/site-packages/allauth/socialaccount/providers/nextcloud/views.py_build_server_url   s   z(NextCloudOAuth2Adapter._build_server_urlc                 C   
   |  dS )Nz/apps/oauth2/api/v1/tokenr   r   r   r   r   access_token_url      
z'NextCloudOAuth2Adapter.access_token_urlc                 C   r   )Nz/apps/oauth2/authorizer   r   r   r   r   authorize_url   r   z$NextCloudOAuth2Adapter.authorize_urlc                 C   r   )Nz/ocs/v1.php/cloud/users/r   r   r   r   r   profile_url    r   z"NextCloudOAuth2Adapter.profile_urltokenc                 K   s$   |  ||d d }|  ||S )Nresponseuser_id)get_user_infoget_providersociallogin_from_response)r   r   r   r"   kwargs
extra_datar   r   r   complete_login$   s   z%NextCloudOAuth2Adapter.complete_loginc                 C   sL   dd |ji}t  j| j| ddi|d}|  | d d }|S )NAuthorizationz
Bearer {0}formatjson)paramsheadersocsdata)r,   r"   r   get_requests_sessionr   r!   raise_for_statusr-   )r   r"   r$   r/   respr1   r   r   r   r%   (   s   z$NextCloudOAuth2Adapter.get_user_infoN)__name__
__module____qualname__r   r   propertyr   r    r!   r   r*   r%   r   r   r   r   r	      s    	


r	   N)allauth.corer   allauth.socialaccountr   allauth.socialaccount.adapterr   allauth.socialaccount.modelsr   ,allauth.socialaccount.providers.oauth2.viewsr   r   r   r	   adapter_viewoauth2_loginoauth2_callbackr   r   r   r   <module>   s    
(