
    f                         d dl mc 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mZ  G d de      Z ej"                  e      Z ej"                  e      Zy)	    N)context)app_settings)get_adapter)SocialToken)OAuth2AdapterOAuth2CallbackViewOAuth2LoginViewc                   ^    e Zd ZdZd Zed        Zed        Zed        Zde	fdZ
de	fdZy	)
NextCloudOAuth2Adapter	nextcloudc                 (   t         j                  j                  | j                  i       }|j                  dd      }t	               j                  t        j                  | j                        }|j                  j                  d|      }| | }|S )NSERVERzhttps://nextcloud.example.org)providerserver)	r   	PROVIDERSgetprovider_idr   get_appr   requestsettings)selfpathr   r   apprets         j/var/www/cs2snipe.com/venv/lib/python3.12/site-packages/allauth/socialaccount/providers/nextcloud/views.py_build_server_urlz(NextCloudOAuth2Adapter._build_server_url   s{    ))--d.>.>Ch(GHm##GOOd>N>N#O!!(F3
    c                 $    | j                  d      S )Nz/apps/oauth2/api/v1/tokenr   r   s    r   access_token_urlz'NextCloudOAuth2Adapter.access_token_url   s    %%&ABBr   c                 $    | j                  d      S )Nz/apps/oauth2/authorizer   r    s    r   authorize_urlz$NextCloudOAuth2Adapter.authorize_url   s    %%&>??r   c                 $    | j                  d      S )Nz/ocs/v1.php/cloud/users/r   r    s    r   profile_urlz"NextCloudOAuth2Adapter.profile_url"   s    %%&@AAr   tokenc                 r    | j                  ||d   d         }| j                         j                  ||      S )Nresponseuser_id)get_user_infoget_providersociallogin_from_response)r   r   r   r&   kwargs
extra_datas         r   complete_loginz%NextCloudOAuth2Adapter.complete_login&   s:    ''vj/A)/LM
  "<<WjQQr   c                    ddj                  |j                        i}t               j                         j	                  | j
                  |z   |      }|j                          t        j                  |j                  j                               d   }|D ci c]4  }|j                  |j                  |j                  j                         6 c}S c c}w )NAuthorizationz
Bearer {0})headers   )formatr&   r   get_requests_sessionr   r%   raise_for_statusET
fromstringcontentdecodetexttagstrip)r   r&   r)   r2   respdatads          r   r*   z$NextCloudOAuth2Adapter.get_user_info*   s    "L$7$7$DEM!!#S!!G+WS= 	
 	}}T\\0023A6/3J!qvv7Iqvv||~%JJJs   C*'CN)__name__
__module____qualname__r   r   propertyr!   r#   r%   r   r/   r*    r   r   r   r      sj    K C C @ @ B BR+ R	K; 	Kr   r   )xml.etree.ElementTreeetreeElementTreer7   allauth.corer   allauth.socialaccountr   allauth.socialaccount.adapterr   allauth.socialaccount.modelsr   ,allauth.socialaccount.providers.oauth2.viewsr   r   r	   r   adapter_viewoauth2_loginoauth2_callbackrE   r   r   <module>rQ      sY    " "   . 5 4 %K] %KP ,++,BC1$112HIr   