o
    h                     @   sn   d dl mZ d dlmZmZ d dl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)LinkedInOAuth2Adapter)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/html/pos/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                    sb   t t|  }| jjdr| jjd S t| jjd}t| jjd}|s&|r/d||g }|S )Nr    	firstNamelastName )	superr#   to_straccount
extra_datar   r   r   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@r4   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_datar:   r;   	to_returnr/   r   r   rA   4   sN   	
z$LinkedInOAuth2Account.get_avatar_url)__name__
__module____qualname__r(   rA   __classcell__r   r   r/   r   r#   )   s    
r#   c                   @   s<   e Zd ZdZdZe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_uidr   s
   z"LinkedInOAuth2Provider.extract_uidc                 C   s   g d}|   d|}|S )N)rS   r$   r%   r1   )r@   r   )r,   default_fieldsfieldsr   r   r   get_profile_fieldsz   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"   rT   r   r   r   extract_common_fields   s
   z,LinkedInOAuth2Provider.extract_common_fieldsN)rL   rM   rN   rS   namer#   account_classr   oauth2_adapter_classrU   rX   r^   ra   r   r   r   r   rP   k   s    rP   N)allauth.socialaccountr   $allauth.socialaccount.providers.baser   r   5allauth.socialaccount.providers.linkedin_oauth2.viewsr   /allauth.socialaccount.providers.oauth2.providerr   r   r"   r#   rP   provider_classesr   r   r   r   <module>   s    B
+