o
    ˷e                     @   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 }|rBt|tr|}|S | di }| dddd}d|d |d	 g}||v r8| |}|S |rBtt| }|S )
N 	localizedpreferredLocaleUSen)countrylanguage_r   r   )get
isinstancestrjoinnextitervalues)data
field_nameretvr   preferred_locale
locale_key r   o/var/www/ideatree/venv/lib/python3.10/site-packages/allauth/socialaccount/providers/linkedin_oauth2/provider.py_extract_name_field	   s&   


r   c                 C   s8   d}|  dg }t|dkr|d  di  dd}|S )z
    {'elements': [{'handle': 'urn:li:emailAddress:319371470',
               'handle~': {'emailAddress': 'raymond.penners@intenct.nl'}}]}
    r   elementsr   zhandle~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}|s|r"d||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}||vrtt|  S |di }|dd}|dd}| j jdi d	i d
g }|D ]G}||d ksGq>|di di di }	|	sXq>|	d |	d }
}|
re|sfq>|
|d krr||d kssq>|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)PROFILEPICTUREdisplay_size_w_h)      Y@r3   authorization_methodPUBLICprofilePicturezdisplayImage~r   authorizationMethodr   z2com.linkedin.digitalmedia.mediaartifact.StillImagedisplaySizewidthheightr      identifiers
identifier)r(   get_providerget_settingsr   r&   r"   get_avatar_urlr)   )r+   provider_configurationconfigured_profile_fieldspicture_fieldprofile_picture_configreq_sizereq_auth_methodprofile_elementssingle_element
image_datar9   r:   	to_returnr.   r   r   r@   4   sF   	
z$LinkedInOAuth2Account.get_avatar_url)__name__
__module____qualname__r'   r@   __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 )LinkedInOAuth2Providerlinkedin_oauth2LinkedInc                 C   s   d|v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   g d}|   d|}|S )N)rR   r#   r$   r0   )r?   r   )r+   default_fieldsfieldsr   r   r   get_profile_fieldst   s   
z)LinkedInOAuth2Provider.get_profile_fieldsc                 C   s   dg}t jr|d |S )Nr_liteprofiler_emailaddress)r   QUERY_EMAILappend)r+   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!   rS   r   r   r   extract_common_fields   s
   z,LinkedInOAuth2Provider.extract_common_fieldsN)rK   rL   rM   rR   namer"   account_classrT   rW   r]   r`   r   r   r   r   rO   f   s    rO   N)allauth.socialaccountr   $allauth.socialaccount.providers.baser   r   /allauth.socialaccount.providers.oauth2.providerr   r   r!   r"   rO   provider_classesr   r   r   r   <module>   s    ;
*