U
    >i                     @   s   d dl mZ d dlmZ d dlmZ d dlmZmZ d dl	mZ
 d dlmZ d dlmZ dd Zd	d
 Zdd Zdd Zdd Zdd Zdd ZG dd deZG dd deZdS )    email_address_data)get_adapter)APIResponse)ClientFlow)signup)OAuth2Providerc                 C   s    |j t| | |  dS )N)uidproviderZdisplay)r
   _provider_dataget_providerZget_provider_accountZto_str)requestaccount r   K/tmp/pip-unpacked-wheel-upujnpc2/allauth/headless/socialaccount/response.py_socialaccount_data
   s    
r   c                 C   sj   |j |jg d}|jr&|d tj |jr<|d tj t|t	rf|j
j|d< |jdkrf|j|d< |S )N)idnameflowsr   	client_idZopenid_connectZopenid_configuration_url)sub_idr   supports_redirectappendr   PROVIDER_REDIRECTsupports_token_authenticationPROVIDER_TOKEN
isinstancer	   Zappr   r   Z
server_url)r   r   retr   r   r   r      s    


r   c                 C   s   g }t | }|rdd |D }dd |D }|rR| jjjtjkrR|tj|d |rh|tj	|d t
| }|r|t| | |S )Nc                 S   s   g | ]}|j r|jqS r   )r   r   .0pr   r   r   
<listcomp>$   s      z"provider_flows.<locals>.<listcomp>c                 S   s   g | ]}|j r|jqS r   )r   r   r   r   r   r   r"   %   s     )r   	providers)_list_supported_providersallauthheadlessclientr   BROWSERr   r   r   r   r   Zget_pending_signup_signup_flow)r   r   r#   Zredirect_providersZtoken_providerssocialloginr   r   r   provider_flows    s.    
r+   c                 C   s   |j }tjt| |dd}|S )NT)r   r   Z
is_pending)r   r   ZPROVIDER_SIGNUPr   )r   r*   r   Zflowr   r   r   r)   <   s    r)   c                 C   s$   |t jkr| jS |t jkr | jS dS )NF)r   ZAPPr   r(   r   )r   r'   r   r   r   _is_provider_supportedF   s
    

r,   c                    s&   t  }| } fdd|D }|S )Nc                    s    g | ]}t | jjjr|qS r   )r,   r%   r&   r'   r   r   r   r   r"   Q   s   z-_list_supported_providers.<locals>.<listcomp>)get_socialaccount_adapterZlist_providers)r   adapterr#   r   r-   r   r$   N   s    

r$   c                 C   sF   g }dd|ii}t | }t|dd d}|D ]}|t| | q,|S )NZsocialaccountr#   c                 S   s   | j S )N)r   )r!   r   r   r   <lambda>]       z!get_config_data.<locals>.<lambda>)key)r$   sortedr   r   )r   entriesdatar#   r   r   r   r   get_config_dataY   s    r6   c                       s   e Zd Z fddZ  ZS )SocialAccountsResponsec                    s&    fdd|D }t  j |d d S )Nc                    s   g | ]}t  |qS r   )r   )r    r   r-   r   r   r"   e   s     z3SocialAccountsResponse.__init__.<locals>.<listcomp>r5   )super__init__)selfr   Zaccountsr5   	__class__r-   r   r:   d   s    zSocialAccountsResponse.__init____name__
__module____qualname__r:   __classcell__r   r   r<   r   r7   c   s   r7   c                       s   e Zd Z fddZ  ZS )SocialLoginResponsec                    sB   t  }||jt||jdd |jD d}t j||d d S )Nc                 S   s   g | ]}t |qS r   r   )r    Zear   r   r   r"   o   s     z0SocialLoginResponse.__init__.<locals>.<listcomp>)userr   emailr8   )r   Zserialize_userrD   r   r   Zemail_addressesr9   r:   )r;   r   r*   r/   r5   r<   r   r   r:   j   s    

zSocialLoginResponse.__init__r>   r   r   r<   r   rC   i   s   rC   N)Z!allauth.headless.account.responser   Zallauth.headless.adapterr   Zallauth.headless.base.responser   Zallauth.headless.constantsr   r   Zallauth.socialaccount.adapterr.   Z$allauth.socialaccount.internal.flowsr   Z/allauth.socialaccount.providers.oauth2.providerr	   r   r   r+   r)   r,   r$   r6   r7   rC   r   r   r   r   <module>   s   

