o
    ëË·e`  ã                   @   s|   d dl 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G d	d
„ d
eƒZe	 e¡Ze e¡ZdS )é    )ÚElementTree)Ú
ExpatError)ÚOAuth)ÚOAuthAdapterÚOAuthCallbackViewÚOAuthLoginViewé   )ÚOpenStreetMapProviderc                   @   s   e Zd ZdZdd„ ZdS )ÚOpenStreetMapAPIz2https://www.openstreetmap.org/api/0.6/user/detailsc              
   C   sl   |   | j¡}z"t |¡ d¡}|j}| d¡}|d ur&| d|j d¡i¡ |W S  tt	t
fy5   Y d S w )NÚuserÚimgÚavatarÚhref)ÚqueryÚurlr   Ú
fromstringÚfindÚattribÚupdateÚgetr   ÚKeyErrorÚ
IndexError)ÚselfÚraw_xmlÚuser_elementÚ	user_infoÚuser_avatar© r   új/var/www/ideatree/venv/lib/python3.10/site-packages/allauth/socialaccount/providers/openstreetmap/views.pyÚget_user_info   s   
ÿzOpenStreetMapAPI.get_user_infoN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r
      s    r
   c                   @   s&   e Zd ZejZdZdZdZdd„ Z	dS )ÚOpenStreetMapOAuthAdapterz1https://www.openstreetmap.org/oauth/request_tokenz0https://www.openstreetmap.org/oauth/access_tokenz-https://www.openstreetmap.org/oauth/authorizec                 C   s,   t ||j|j| jƒ}| ¡ }|  ¡  ||¡S )N)r
   Ú	client_idÚsecretÚrequest_token_urlr   Úget_providerÚsociallogin_from_response)r   ÚrequestÚappÚtokenÚresponseÚclientÚ
extra_datar   r   r   Úcomplete_login%   s
   ÿz(OpenStreetMapOAuthAdapter.complete_loginN)
r    r!   r"   r	   ÚidÚprovider_idr&   Úaccess_token_urlÚauthorize_urlr/   r   r   r   r   r#      s    r#   N)Ú	xml.etreer   Úxml.parsers.expatr   Ú,allauth.socialaccount.providers.oauth.clientr   Ú+allauth.socialaccount.providers.oauth.viewsr   r   r   Úproviderr	   r
   r#   Úadapter_viewÚoauth_loginÚoauth_callbackr   r   r   r   Ú<module>   s    
