o
    zsg                     @  s   d dl mZ d dlmZ d dlmZmZmZ ddlm	Z	m
Z
mZ ddlmZ ddlmZmZmZmZmZmZmZmZmZmZmZ dd	lmZ dd
lmZ G dd deZdS )    )annotations)partial)DictListOptional   )model_validateparse_link_responseparse_user_response)
SyncClient)AdminUserAttributesAuthMFAAdminDeleteFactorParams AuthMFAAdminDeleteFactorResponseAuthMFAAdminListFactorsParamsAuthMFAAdminListFactorsResponseGenerateLinkParamsGenerateLinkResponseInviteUserByEmailOptionsSignOutScopeUserUserResponse   )SyncGoTrueAdminMFAAPI)SyncGoTrueBaseAPIc                   @  s   e Zd Zdi ddddd@ddZdAdBddZi fdCddZdDd"d#ZdEd&d'ZdFdGd,d-ZdHd/d0Z	dId1d2Z
dJdKd6d7ZdLd:d;ZdMd>d?ZdS )NSyncGoTrueAdminAPI NTurlheadershttp_clientverifyproxyr   strr   Dict[str, str]r   Optional[SyncClient]r    boolr!   Optional[str]returnNonec                C  s6   t j| |||||d t | _| j| j_| j| j_d S )Nr   )r   __init__r   mfa_list_factorslist_factors_delete_factordelete_factor)selfr   r   r   r    r!    r0   Y/var/www/html/minecraft/env/lib/python3.10/site-packages/gotrue/_sync/gotrue_admin_api.pyr)      s   	
zSyncGoTrueAdminAPI.__init__globaljwtscoper   c                 C  s   | j ddd|i|ddS )z.
        Removes a logged-in session.
        POSTlogoutr4   T)queryr3   no_resolve_json_request)r/   r3   r4   r0   r0   r1   sign_out/   s   zSyncGoTrueAdminAPI.sign_outemailoptionsr   r   c                 C  s&   | j dd||dd|dtdS )z;
        Sends an invite link to an email address.
        r5   invitedata)r<   r?   redirect_tobodyr@   xform)r:   getr
   )r/   r<   r=   r0   r0   r1   invite_user_by_email;   s   z'SyncGoTrueAdminAPI.invite_user_by_emailparamsr   r   c                 C  sT   | j dd|d|d|d|d|di dd	|di d
tdS )zX
        Generates email links and OTPs to be sent via a custom email provider.
        r5   zadmin/generate_linktyper<   password	new_emailr=   r?   )rG   r<   rH   rI   r?   r@   rA   )r:   rD   r	   r/   rF   r0   r0   r1   generate_linkK   s   z SyncGoTrueAdminAPI.generate_link
attributesr   c                 C  s   | j dd|tdS )z
        Creates a new user.

        This function should only be called on a server.
        Never expose your `service_role` key in the browser.
        r5   admin/usersrB   rC   r:   r
   )r/   rL   r0   r0   r1   create_user_   s   zSyncGoTrueAdminAPI.create_userpageintper_page
List[User]c                 C  s   | j dd||ddd dS )z
        Get a list of users.

        This function should only be called on a server.
        Never expose your `service_role` key in the browser.
        GETrM   )rQ   rS   c                 S  s   d| v rdd | d D S g S )Nusersc                 S  s   g | ]}t t|qS r0   )r   r   ).0userr0   r0   r1   
<listcomp>y   s    zCSyncGoTrueAdminAPI.list_users.<locals>.<lambda>.<locals>.<listcomp>r0   )r?   r0   r0   r1   <lambda>x   s   z/SyncGoTrueAdminAPI.list_users.<locals>.<lambda>)r7   rC   r9   )r/   rQ   rS   r0   r0   r1   
list_usersm   s   zSyncGoTrueAdminAPI.list_usersuidc                 C  s   | j dd| tdS )z
        Get user by id.

        This function should only be called on a server.
        Never expose your `service_role` key in the browser.
        rU   admin/users/rC   rO   )r/   r\   r0   r0   r1   get_user_by_id   s
   z!SyncGoTrueAdminAPI.get_user_by_idc                 C  s   | j dd| |tdS )z
        Updates the user data.

        This function should only be called on a server.
        Never expose your `service_role` key in the browser.
        PUTr]   rN   rO   )r/   r\   rL   r0   r0   r1   update_user_by_id   s   z$SyncGoTrueAdminAPI.update_user_by_idFidshould_soft_deletec                 C  s   d|i}| j dd| |dS )z
        Delete a user. Requires a `service_role` key.

        This function should only be called on a server.
        Never expose your `service_role` key in the browser.
        rc   DELETEr]   )rB   r9   )r/   rb   rc   rB   r0   r0   r1   delete_user   s   zSyncGoTrueAdminAPI.delete_userr   r   c                 C  s$   | j dd|d dtttdS )NrU   r]   user_idz/factorsr^   )r:   rD   r   r   r   rJ   r0   r0   r1   r+      s
   z SyncGoTrueAdminAPI._list_factorsr   r   c                 C  s.   | j dd|d d|d tttdS )Nrd   r]   rf   z	/factors/	factor_idr^   )r:   rD   r   r   r   rJ   r0   r0   r1   r-      s
   z!SyncGoTrueAdminAPI._delete_factor)r   r"   r   r#   r   r$   r    r%   r!   r&   r'   r(   )r2   )r3   r"   r4   r   r'   r(   )r<   r"   r=   r   r'   r   )rF   r   r'   r   )rL   r   r'   r   )NN)rQ   rR   rS   rR   r'   rT   )r\   r"   r'   r   )r\   r"   rL   r   r'   r   )F)rb   r"   rc   r%   r'   r(   )rF   r   r'   r   )rF   r   r'   r   )__name__
__module____qualname__r)   r;   rE   rK   rP   r[   r_   ra   re   r+   r-   r0   r0   r0   r1   r      s$    






r   N)
__future__r   	functoolsr   typingr   r   r   helpersr   r	   r
   http_clientsr   typesr   r   r   r   r   r   r   r   r   r   r   gotrue_admin_mfa_apir   gotrue_base_apir   r   r0   r0   r0   r1   <module>   s    4