o
    ~jh                     @  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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   )is_valid_uuid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dBddZdCdDddZi fdEddZdFd"d#ZdGd&d'ZdHdId,d-ZdJd/d0Z	dKd1d2Z
dLdMd6d7ZdNd:d;ZdOd>d?ZdPd@dAZdS )Q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"    r1   S/var/www/html/bot/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logoutr5   T)queryr4   no_resolve_json_request)r0   r4   r5   r1   r1   r2   sign_out4   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.
        r6   invitedata)r=   r@   redirect_tobodyrA   xform)r;   getr   )r0   r=   r>   r1   r1   r2   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.
        r6   zadmin/generate_linktyper=   password	new_emailr>   r@   )rH   r=   rI   rJ   r@   rA   rB   )r;   rE   r
   r0   rG   r1   r1   r2   generate_linkP   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.
        r6   admin/usersrC   rD   )r;   r   )r0   rM   r1   r1   r2   create_userd   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.
        GETrN   )rQ   rS   c                 S  s   d| v rdd | d D S g S )Nusersc                 S  s   g | ]}t t|qS r1   )r	   r   ).0userr1   r1   r2   
<listcomp>~   s    zCSyncGoTrueAdminAPI.list_users.<locals>.<lambda>.<locals>.<listcomp>r1   )r@   r1   r1   r2   <lambda>}   s   z/SyncGoTrueAdminAPI.list_users.<locals>.<lambda>)r8   rD   r:   )r0   rQ   rS   r1   r1   r2   
list_usersr   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/rD   _validate_uuidr;   r   )r0   r\   r1   r1   r2   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]   rO   r_   )r0   r\   rM   r1   r1   r2   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.
        re   DELETEr]   )rC   )r`   r;   )r0   rd   re   rC   r1   r1   r2   delete_user   s   
zSyncGoTrueAdminAPI.delete_userr   r   c                 C  s4   |  |d | jdd|d dtttdS )Nuser_idrU   r]   z/factorsr^   )r`   rE   r;   r   r	   r   rK   r1   r1   r2   r,      s   z SyncGoTrueAdminAPI._list_factorsr   r   c                 C  sN   |  |d |  |d | jdd|d d|d tttdS )Nrh   rd   rf   r]   z	/factors/r^   )r`   rE   r;   r   r	   r   rK   r1   r1   r2   r.      s   z!SyncGoTrueAdminAPI._delete_factorc                 C  s   t |std| dd S )NzInvalid id, 'z' is not a valid uuid)r   
ValueError)r0   rd   r1   r1   r2   r`      s   z!SyncGoTrueAdminAPI._validate_uuid)r   r#   r   r$   r    r%   r!   r&   r"   r'   r(   r)   )r3   )r4   r#   r5   r   r(   r)   )r=   r#   r>   r   r(   r   )rG   r   r(   r   )rM   r   r(   r   )NN)rQ   rR   rS   rR   r(   rT   )r\   r#   r(   r   )r\   r#   rM   r   r(   r   )F)rd   r#   re   r&   r(   r)   )rG   r   r(   r   )rG   r   r(   r   )rd   r#   r(   r)   )__name__
__module____qualname__r*   r<   rF   rL   rP   r[   ra   rc   rg   r,   r.   r`   r1   r1   r1   r2   r      s&    





r   N) 
__future__r   	functoolsr   typingr   r   r   helpersr   r	   r
   r   http_clientsr   typesr   r   r   r   r   r   r   r   r   r   r   gotrue_admin_mfa_apir   gotrue_base_apir   r   r1   r1   r1   r2   <module>   s    4