U
    [!c                     @   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	   r/var/www/html/crackeverytest/cet_env/lib/python3.8/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   sP   t t|dddddgt|ddddgt|ddddgd	}t d
d | D S )NZpersonZemailsemailr   namezfamily-namevaluezgiven-names)r   	last_nameZ
first_namec                 s   s   | ]\}}|r||fV  qd S r   r	   ).0keyr   r	   r	   r
   	<genexpr>&   s      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k
r8   Y dS X 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   