a
    ‹Qx_Ÿ  ã                   @   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 ¡}|r€t|tƒr$|}n\|  di ¡}|  ddddœ¡}d |d |d	 g¡}||v rl|  |¡}n|r€t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   úp/var/www/html/Ranjet/env/lib/python3.9/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}||vr4tt| ƒ ¡ S | di ¡}| dd¡}| dd¡}| j j di ¡ d	i ¡ d
g ¡}|D ]Ž}||d ksŽq|| di ¡ di ¡ di ¡}	|	s°q||	d |	d  }
}|
r||sÌq||
|d kr|||d ksæq|| 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   sL    	ÿþÿÿþÿÿþ
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|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)r9   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   ;*