a
    $ñ»j   ã                   @  sD  d dl mZ d dlZd dlZd dlmZ ddlmZmZ G dd„ dej	ƒZ
G dd	„ d	ej	ƒZG d
d„ dej	ƒZG dd„ dej	ƒZeG dd„ dƒƒZd.dddœdd„Zddœdd„Zddddœdd„Zddddœdd„Zddddd œd!d"„Zd/dddd#œd$d%„Zddœd&d'„Zed(ƒeG d)d*„ d*ƒƒƒZed+ƒeG d,d-„ d-ƒƒƒZdS )0é    )ÚannotationsN)Ú	dataclassé   )Úevent_classÚT_JSON_DICTc                   @  s:   e Zd ZdZdZdZddœdd„Zedd dœd	d
„ƒZdS )Ú
LoginStatez–
    Whether this is a sign-up or sign-in action for this account, i.e.
    whether this account has ever been used to sign in to this RP before.
    ZSignInZSignUpÚstr©Úreturnc                 C  s   | j S ©N©Úvalue©Úself© r   ú2E:\soccer\ml_env\Lib\site-packages\mycdp/fed_cm.pyÚto_json   s    zLoginState.to_json©Újsonr
   c                 C  s   | |ƒS r   r   ©Úclsr   r   r   r   Ú	from_json   s    zLoginState.from_jsonN)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__ZSIGN_INZSIGN_UPr   Úclassmethodr   r   r   r   r   r      s   r   c                   @  sB   e Zd ZdZdZdZdZdZddœdd	„Ze	dd d
œdd„ƒZ
dS )Ú
DialogTypezThe types of FedCM dialogs.ZAccountChooserZAutoReauthnZConfirmIdpLoginÚErrorr   r	   c                 C  s   | j S r   r   r   r   r   r   r   &   s    zDialogType.to_jsonr   c                 C  s   | |ƒS r   r   r   r   r   r   r   )   s    zDialogType.from_jsonN)r   r   r   r   ZACCOUNT_CHOOSERZAUTO_REAUTHNZCONFIRM_IDP_LOGINÚERRORr   r   r   r   r   r   r   r      s   r   c                   @  s>   e Zd ZdZdZdZdZddœdd„Zedd d	œd
d„ƒZ	dS )ÚDialogButtonz The buttons on the FedCM dialog.ZConfirmIdpLoginContinueZ
ErrorGotItZErrorMoreDetailsr   r	   c                 C  s   | j S r   r   r   r   r   r   r   4   s    zDialogButton.to_jsonr   c                 C  s   | |ƒS r   r   r   r   r   r   r   7   s    zDialogButton.from_jsonN)
r   r   r   r   ZCONFIRM_IDP_LOGIN_CONTINUEZERROR_GOT_ITZERROR_MORE_DETAILSr   r   r   r   r   r   r   r    .   s   r    c                   @  s:   e Zd ZdZdZdZddœdd„Zedd dœd	d
„ƒZdS )ÚAccountUrlTypezThe URLs that each account has.ZTermsOfServiceZPrivacyPolicyr   r	   c                 C  s   | j S r   r   r   r   r   r   r   A   s    zAccountUrlType.to_jsonr   c                 C  s   | |ƒS r   r   r   r   r   r   r   D   s    zAccountUrlType.from_jsonN)	r   r   r   r   ZTERMS_OF_SERVICEZPRIVACY_POLICYr   r   r   r   r   r   r   r!   <   s   r!   c                   @  sŒ   e Zd ZU dZded< ded< ded< ded< ded< ded< ded	< d
ed< dZded< dZded< ddœdd„Zedd dœdd„ƒZ	dS )ÚAccountz&Corresponds to IdentityRequestAccount.r   Ú
account_idÚemailÚnameÚ
given_nameÚpicture_urlÚidp_config_urlÚidp_login_urlr   Úlogin_stateNútyping.Optional[str]Úterms_of_service_urlÚprivacy_policy_urlr   r	   c                 C  s†   t ƒ }| j|d< | j|d< | j|d< | j|d< | j|d< | j|d< | j|d< | j 	¡ |d< | j
d urn| j
|d	< | jd ur‚| j|d
< |S )NÚ	accountIdr$   r%   Ú	givenNameÚ
pictureUrlÚidpConfigUrlÚidpLoginUrlÚ
loginStateÚtermsOfServiceUrlÚprivacyPolicyUrl)Údictr#   r$   r%   r&   r'   r(   r)   r*   r   r,   r-   )r   r   r   r   r   r   X   s    










zAccount.to_jsonr   c                 C  s–   | t |d ƒt |d ƒt |d ƒt |d ƒt |d ƒt |d ƒt |d ƒt |d ¡| d	d ¡d urpt |d	 ƒnd | d
d ¡d urŽt |d
 ƒnd d�
S )Nr.   r$   r%   r/   r0   r1   r2   r3   r4   r5   )
r#   r$   r%   r&   r'   r(   r)   r*   r,   r-   )r   r   r   Úgetr   r   r   r   r   h   s     






ÿÿïzAccount.from_json)
r   r   r   r   Ú__annotations__r,   r-   r   r   r   r   r   r   r   r"   I   s   
r"   ztyping.Optional[bool]z0typing.Generator[T_JSON_DICT, T_JSON_DICT, None])Údisable_rejection_delayr
   c                 c  s*   t ƒ }| dur| |d< d|dœ}|V }dS )a  
    :param disable_rejection_delay: *(Optional)*
    Allows callers to disable the promise rejection delay that would
    normally happen, if this is unimportant to what's being tested.
    (step 4 of https://fedidcg.github.io/FedCM/#browser-api-rp-sign-in)
    NZdisableRejectionDelayzFedCm.enable©ÚmethodÚparams©r6   )r9   r<   Úcmd_dictr   r   r   r   Úenable€   s    	þr?   r	   c                  c  s   ddi} | V }d S )Nr;   zFedCm.disabler   ©r>   r   r   r   r   Údisable“   s    ÿrA   r   Úint)Ú	dialog_idÚaccount_indexr
   c                 c  s*   t ƒ }| |d< ||d< d|dœ}|V }dS )z5
    :param dialog_id:
    :param account_index:
    ÚdialogIdÚaccountIndexzFedCm.selectAccountr:   Nr=   )rC   rD   r<   r>   r   r   r   r   Úselect_accountš   s    þrG   )rC   Údialog_buttonr
   c                 c  s.   t ƒ }| |d< | ¡ |d< d|dœ}|V }dS )z5
    :param dialog_id:
    :param dialog_button:
    rE   ZdialogButtonzFedCm.clickDialogButtonr:   N©r6   r   )rC   rH   r<   r>   r   r   r   r   Úclick_dialog_button«   s    þrJ   )rC   rD   Úaccount_url_typer
   c                 c  s6   t ƒ }| |d< ||d< | ¡ |d< d|dœ}|V }dS )zR
    :param dialog_id:
    :param account_index:
    :param account_url_type:
    rE   rF   ZaccountUrlTypezFedCm.openUrlr:   NrI   )rC   rD   rK   r<   r>   r   r   r   r   Úopen_url¼   s    þrL   )rC   Útrigger_cooldownr
   c                 c  s2   t ƒ }| |d< |dur||d< d|dœ}|V }dS )zE
    :param dialog_id:
    :param trigger_cooldown: *(Optional)*
    rE   NZtriggerCooldownzFedCm.dismissDialogr:   r=   )rC   rM   r<   r>   r   r   r   r   Údismiss_dialogÏ   s    þrN   c                  c  s   ddi} | V }dS )z�
    Resets the cooldown time, if any, to allow the next FedCM call to show
    a dialog even if one was recently dismissed by the user.
    r;   zFedCm.resetCooldownNr   r@   r   r   r   Úreset_cooldowná   s    ÿrO   zFedCm.dialogShownc                   @  sJ   e Zd ZU ded< ded< ded< ded< ded	< ed
d dœdd„ƒZdS )ÚDialogShownr   rC   r   Údialog_typeztyping.List[Account]ÚaccountsÚtitler+   Úsubtitler   r   c              	   C  sV   | t |d ƒt |d ¡dd„ |d D ƒt |d ƒ| dd ¡d urNt |d ƒnd d�S )	NrE   Z
dialogTypec                 S  s   g | ]}t  |¡‘qS r   )r"   r   )Ú.0Úir   r   r   Ú
<listcomp>ü   ó    z)DialogShown.from_json.<locals>.<listcomp>rR   rS   rT   )rC   rQ   rR   rS   rT   )r   r   r   r7   r   r   r   r   r   ÷   s    

ÿøzDialogShown.from_jsonN)r   r   r   r8   r   r   r   r   r   r   rP   ì   s   
rP   zFedCm.dialogClosedc                   @  s.   e Zd ZU dZded< edd dœdd„ƒZdS )	ÚDialogClosedze
    Triggered when a dialog is closed, either by JS abort,
    user action, or a command below.
    r   rC   r   r   c                 C  s   | t |d ƒd�S )NrE   )rC   )r   r   r   r   r   r     s    zDialogClosed.from_jsonN)r   r   r   r   r8   r   r   r   r   r   r   rY     s   
rY   )N)N)Ú
__future__r   ÚenumÚtypingÚdataclassesr   Úutilr   r   ÚEnumr   r   r    r!   r"   r?   rA   rG   rJ   rL   rN   rO   rP   rY   r   r   r   r   Ú<module>   s2   7 ÿ ÿ