
    gm                        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e      Zy)    )annotations)partial)DictListOptional   )model_validateparse_link_responseparse_user_response)AsyncClient)AdminUserAttributesAuthMFAAdminDeleteFactorParams AuthMFAAdminDeleteFactorResponseAuthMFAAdminListFactorsParamsAuthMFAAdminListFactorsResponseGenerateLinkParamsGenerateLinkResponseInviteUserByEmailOptionsSignOutScopeUserUserResponse   )AsyncGoTrueAdminMFAAPI)AsyncGoTrueBaseAPIc                      e Zd Zdi dddd	 	 	 	 	 	 	 	 	 	 	 ddZdddZi f	 	 	 	 	 ddZddZdd	Zddd
ZddZ		 	 	 	 	 	 ddZ
dddZ	 	 	 	 ddZ	 	 	 	 ddZy)AsyncGoTrueAdminAPI NTurlheadershttp_clientverifyproxyc                   t        j                  | |||||       t               | _        | j                  | j                  _        | j                  | j                  _        y )Nr   )r   __init__r   mfa_list_factorslist_factors_delete_factordelete_factor)selfr   r    r!   r"   r#   s         S/var/www/openai/venv/lib/python3.12/site-packages/gotrue/_async/gotrue_admin_api.pyr%   zAsyncGoTrueAdminAPI.__init__   sT     	###	
 *+ $ 2 2!%!4!4    c                N   K   | j                  ddd|i|d       d{   S 7 w)z.
        Removes a logged-in session.
        POSTlogoutscopeT)queryjwtno_resolve_jsonN_request)r+   r3   r1   s      r,   sign_outzAsyncGoTrueAdminAPI.sign_out/   s<      ]]E"  # 
 
 	
 
s   %#%c                   K   | j                  dd||j                  d      d|j                  d      t               d{   S 7 w)z;
        Sends an invite link to an email address.
        r/   invitedata)emailr:   redirect_tobodyr<   xformN)r6   getr   )r+   r;   optionss      r,   invite_user_by_emailz(AsyncGoTrueAdminAPI.invite_user_by_email;   sN      ]] '++f*=>M2% # 
 
 	
 
s   ?AAAc                R  K   | j                  dd|j                  d      |j                  d      |j                  d      |j                  d      |j                  di       j                  d      d	|j                  di       j                  d
      t               d{   S 7 w)zX
        Generates email links and OTPs to be sent via a custom email provider.
        r/   zadmin/generate_linktyper;   password	new_emailrA   r:   )rD   r;   rE   rF   r:   r<   r=   N)r6   r@   r
   r+   paramss     r,   generate_linkz!AsyncGoTrueAdminAPI.generate_linkK   s      ]]!

6*G,"JJz2#ZZ4

9b155f= 

9b155mD% # 
 
 	
 
s   BB' B%!B'c                P   K   | j                  dd|t               d{   S 7 w)z
        Creates a new user.

        This function should only be called on a server.
        Never expose your `service_role` key in the browser.
        r/   admin/usersr>   r?   Nr6   r   )r+   
attributess     r,   create_userzAsyncGoTrueAdminAPI.create_user_   s4      ]]%	 # 
 
 	
 
   &$&c                P   K   | j                  dd||dd        d{   S 7 w)z
        Get a list of users.

        This function should only be called on a server.
        Never expose your `service_role` key in the browser.
        GETrK   )pageper_pagec                Z    d| v r!| d   D cg c]  }t        t        |       c}S g S c c}w )Nusers)r	   r   )r:   users     r,   <lambda>z0AsyncGoTrueAdminAPI.list_users.<locals>.<lambda>x   s8    d? 9=WFd+F Fs   ()r2   r?   Nr5   )r+   rS   rT   s      r,   
list_userszAsyncGoTrueAdminAPI.list_usersm   s;      ]]X6	 # 	
 	
 		
 	
rP   c                T   K   | j                  dd| t               d{   S 7 w)z
        Get user by id.

        This function should only be called on a server.
        Never expose your `service_role` key in the browser.
        rR   admin/users/r?   NrM   )r+   uids     r,   get_user_by_idz"AsyncGoTrueAdminAPI.get_user_by_id   s8      ]]3% % # 
 
 	
 
   (&(c                V   K   | j                  dd| |t               d{   S 7 w)z
        Updates the user data.

        This function should only be called on a server.
        Never expose your `service_role` key in the browser.
        PUTr[   rL   NrM   )r+   r]   rN   s      r,   update_user_by_idz%AsyncGoTrueAdminAPI.update_user_by_id   s;      ]]3% %	 # 
 
 	
 
s    )')c                T   K   d|i}| j                  dd| |       d{   S 7 w)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.
        should_soft_deleteDELETEr[   )r>   Nr5   )r+   idrd   r>   s       r,   delete_userzAsyncGoTrueAdminAPI.delete_user   s5      %&89]]8|B4-@t]LLLLr_   c                   K   | j                  dd|j                  d       dt        t        t                     d {   S 7 w)NrR   r[   user_idz/factorsr\   )r6   r@   r   r	   r   rG   s     r,   r'   z!AsyncGoTrueAdminAPI._list_factors   sL      ]]6::i01:.*IJ # 
 
 	
 
s   =AA Ac           	        K   | j                  dd|j                  d       d|j                  d       t        t        t                     d {   S 7 w)Nre   r[   ri   z	/factors/	factor_idr\   )r6   r@   r   r	   r   rG   s     r,   r)   z"AsyncGoTrueAdminAPI._delete_factor   sZ      ]]6::i016::k;R:ST.*JK # 
 
 	
 
s   AAAA)r   strr    zDict[str, str]r!   zOptional[AsyncClient]r"   boolr#   zOptional[str]returnNone)global)r3   rl   r1   r   rn   ro   )r;   rl   rA   r   rn   r   )rH   r   rn   r   )rN   r   rn   r   )NN)rS   intrT   rq   rn   z
List[User])r]   rl   rn   r   )r]   rl   rN   r   rn   r   )F)rf   rl   rd   rm   rn   ro   )rH   r   rn   r   )rH   r   rn   r   )__name__
__module____qualname__r%   r7   rB   rI   rO   rY   r^   rb   rg   r'   r)    r-   r,   r   r      s     "$-1#5 5  	5
 +5 5 5 
5*

 -/

 *
 
	
 
(

$


 (
 
	
$M
-
 
)

.
 
*
r-   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   ru   r-   r,   <module>r~      sE    "  ' ' N N &    9 /a
, a
r-   