U
    Z!c                     @   sb   d dl mZ d dlmZmZ d dlmZ dd Zdd ZG dd	 d	eZ	G d
d deZ
e
gZdS )    )app_settings)ProviderAccountProviderException)OAuth2Providerc                 C   s   d}|  |i }|rt|tr$|}n\| di }| dddd}d|d |d	 g}||krl| |}n|rtt| }|S )
N 	localizedZpreferredLocaleZUSen)countrylanguage_r
   r	   )get
isinstancestrjoinnextitervalues)data
field_nameretvr   Zpreferred_localeZ
locale_key r   |/var/www/html/crackeverytest/cet_env/lib/python3.8/site-packages/allauth/socialaccount/providers/linkedin_oauth2/provider.py_extract_name_field	   s$    
 r   c                 C   s8   d}|  dg }t|dkr4|d  di  dd}|S )z
    {'elements': [{'handle': 'urn:li:emailAddress:319371470',
               'handle~': {'emailAddress': 'raymond.penners@intenct.nl'}}]}
    r   elementsr   zhandle~ZemailAddress)r   len)r   r   r   r   r   r   _extract_email   s
    r   c                       s(   e Zd Z fddZ fddZ  ZS )LinkedInOAuth2Accountc                    sH   t t|  }t| jjd}t| jjd}|s2|rDd||g }|S )N	firstNamelastName )superr   to_strr   account
extra_datar   strip)selfr   
first_name	last_name	__class__r   r   r"   ,   s    zLinkedInOAuth2Account.to_strc                    s  | j   }|dg }d}||kr4tt|  S |di }|dd}|dd}| j jdi d	i d
g }|D ]}||d ksq||di di di }	|	sq||	d |	d  }
}|
r||sq||
|d kr|||d ksq||di gd d}|r||  S q|tt|  S )z
        Attempts the load the avatar associated to the avatar.

        Requires the `profilePicture(displayImage~:playableStreams)`
        profile field configured in settings.py

        :return:
        PROFILE_FIELDSz-profilePicture(displayImage~:playableStreams)ZPROFILEPICTUREZdisplay_size_w_h)      Y@r,   Zauthorization_methodZPUBLICZprofilePicturezdisplayImage~r   ZauthorizationMethodr   z2com.linkedin.digitalmedia.mediaartifact.StillImageZdisplaySizewidthheightr      Zidentifiers
identifier)r#   get_providerget_settingsr   r!   r   get_avatar_urlr$   )r&   Zprovider_configurationZconfigured_profile_fieldsZpicture_fieldZprofile_picture_configZreq_sizeZreq_auth_methodZprofile_elementsZsingle_elementZ
image_datar-   r.   Z	to_returnr)   r   r   r3   4   sT    	    
z$LinkedInOAuth2Account.get_avatar_url)__name__
__module____qualname__r"   r3   __classcell__r   r   r)   r   r   +   s   r   c                   @   s8   e Zd ZdZdZeZdd Zdd Zdd Z	d	d
 Z
dS )LinkedInOAuth2ProviderZlinkedin_oauth2ZLinkedInc                 C   s   d|krt dt|d S )NidzZLinkedIn encountered an internal error while logging in.                 Please try again.)r   r   r&   r   r   r   r   extract_uidl   s
    z"LinkedInOAuth2Provider.extract_uidc                 C   s   dddg}|   d|}|S )Nr9   r   r   r+   )r2   r   )r&   Zdefault_fieldsfieldsr   r   r   get_profile_fieldst   s    
z)LinkedInOAuth2Provider.get_profile_fieldsc                 C   s   dg}t jr|d |S )NZr_liteprofileZr_emailaddress)r   ZQUERY_EMAILappend)r&   Zscoper   r   r   get_default_scope   s    
z(LinkedInOAuth2Provider.get_default_scopec                 C   s   t t|dt|dt|dS )Nr   r   )r'   r(   email)dictr   r   r:   r   r   r   extract_common_fields   s
    z,LinkedInOAuth2Provider.extract_common_fieldsN)r4   r5   r6   r9   namer   Zaccount_classr;   r=   r?   rB   r   r   r   r   r8   f   s   r8   N)Zallauth.socialaccountr   Z$allauth.socialaccount.providers.baser   r   Z/allauth.socialaccount.providers.oauth2.providerr   r   r   r   r8   Zprovider_classesr   r   r   r   <module>   s   ;*