a
    Qx_                     @   sZ   d dl mZ d dlmZ G dd deZG dd deZG dd deZegZd	d
 Z	dS )    )ProviderAccount)OAuth2Providerc                   @   s   e Zd ZdZdS )Scopez/authenticateN)__name__
__module____qualname__USERINFO_PROFILE r	   r	   f/var/www/html/Ranjet/env/lib/python3.9/site-packages/allauth/socialaccount/providers/orcid/provider.pyr      s   r   c                   @   s   e Zd Zdd Zdd ZdS )OrcidAccountc                 C   s   t | jjddgS )Norcid-identifierZuri)extract_from_dictaccount
extra_dataselfr	   r	   r
   get_profile_url
   s    zOrcidAccount.get_profile_urlc                 C   s   | j jS N)r   uidr   r	   r	   r
   to_str   s    zOrcidAccount.to_strN)r   r   r   r   r   r	   r	   r	   r
   r   	   s   r   c                   @   s0   e Zd ZdZdZeZdd Zdd Zdd Z	d	S )
OrcidProviderZorcidz	Orcid.orgc                 C   s   t jgS r   )r   r   r   r	   r	   r
   get_default_scope   s    zOrcidProvider.get_default_scopec                 C   s   t |ddgS )Nr   path)r   )r   datar	   r	   r
   extract_uid   s    zOrcidProvider.extract_uidc                 C   sB   t t|g dt|g dt|g dd}t dd | D S )N)personZemailsemailr   r   )r   namezfamily-namevalue)r   r   zgiven-namesr   )r   	last_nameZ
first_namec                 s   s   | ]\}}|r||fV  qd S r   r	   ).0keyr   r	   r	   r
   	<genexpr>&       z6OrcidProvider.extract_common_fields.<locals>.<genexpr>)dictr   items)r   r   Zcommon_fieldsr	   r	   r
   extract_common_fields   s    	z#OrcidProvider.extract_common_fieldsN)
r   r   r   idr   r   Zaccount_classr   r   r&   r	   r	   r	   r
   r      s   r   c              
   C   s<   | }z|D ]}|| }q
|W S  t ttfy6   Y dS 0 dS )zo
    Navigate `data`, a multidimensional array (list or dictionary), and returns
    the object at `path`.
     N)KeyError
IndexError	TypeError)r   r   r   r!   r	   r	   r
   r   ,   s    
r   N)
Z$allauth.socialaccount.providers.baser   Z/allauth.socialaccount.providers.oauth2.providerr   objectr   r   r   Zprovider_classesr   r	   r	   r	   r
   <module>   s   