1- import json
2- import logging
3- from typing import Any , Dict , List , Optional , Tuple , Union
1+ from typing import Any , Dict , List , Optional
42import uuid
53
64from .calls import make_request , InvalidUrlSpec
75from .data import Method , TokenType , BugoutUser , BugoutToken , BugoutUserTokens
86
9- logger = logging .getLogger (__name__ )
10-
117
128class UserNotFound (Exception ):
139 """
@@ -69,6 +65,77 @@ def get_user(self, token: uuid.UUID) -> BugoutUser:
6965 result = self ._call (method = Method .get , path = get_user_path , headers = headers )
7066 return BugoutUser (** result )
7167
68+ def get_user_by_id (self , token : uuid .UUID , user_id : uuid .UUID ) -> BugoutUser :
69+ get_user_by_id_path = f"user/{ user_id } "
70+ headers = {
71+ "Authorization" : f"Bearer { token } " ,
72+ }
73+ result = self ._call (
74+ method = Method .get , path = get_user_by_id_path , headers = headers
75+ )
76+ return BugoutUser (** result )
77+
78+ def confirm_email (self , token : uuid .UUID , verification_code : str ) -> BugoutUser :
79+ confirm_user_email_path = "confirm"
80+ data = {
81+ "verification_code" : verification_code ,
82+ }
83+ headers = {
84+ "Authorization" : f"Bearer { token } " ,
85+ }
86+ result = self ._call (
87+ method = Method .post , path = confirm_user_email_path , headers = headers , data = data
88+ )
89+ return BugoutUser (** result )
90+
91+ def restore_password (self , email : str ) -> Dict [str , str ]:
92+ restore_password_path = "password/restore"
93+ data = {
94+ "email" : email ,
95+ }
96+ result = self ._call (method = Method .post , path = restore_password_path , data = data )
97+ return result
98+
99+ def reset_password (self , reset_id : uuid .UUID , new_password : str ) -> BugoutUser :
100+ reset_password_path = "password/reset"
101+ data = {
102+ "reset_id" : reset_id ,
103+ "new_password" : new_password ,
104+ }
105+ result = self ._call (method = Method .post , path = reset_password_path , data = data )
106+ return BugoutUser (** result )
107+
108+ def change_password (
109+ self , token : uuid .UUID , current_password : str , new_password : str
110+ ) -> BugoutUser :
111+ change_password_path = "password/change"
112+ data = {
113+ "new_password" : new_password ,
114+ "current_password" : current_password ,
115+ }
116+ headers = {
117+ "Authorization" : f"Bearer { token } " ,
118+ }
119+ result = self ._call (
120+ method = Method .post , path = change_password_path , headers = headers , data = data
121+ )
122+ return BugoutUser (** result )
123+
124+ def delete_user (
125+ self , token : uuid .UUID , user_id : uuid .UUID , password : str
126+ ) -> BugoutUser :
127+ delete_user_path = f"user/{ user_id } "
128+ data = {
129+ "password" : password ,
130+ }
131+ headers = {
132+ "Authorization" : f"Bearer { token } " ,
133+ }
134+ result = self ._call (
135+ method = Method .delete , path = delete_user_path , headers = headers , data = data
136+ )
137+ return BugoutUser (** result )
138+
72139 # Token module
73140 def create_token (self , username : str , password : str ) -> BugoutToken :
74141 create_token_path = "token"
@@ -79,7 +146,7 @@ def create_token(self, username: str, password: str) -> BugoutToken:
79146 result = self ._call (method = Method .post , path = create_token_path , data = data )
80147 return BugoutToken (** result )
81148
82- def revoke_token (self , token : uuid .UUID ) -> BugoutToken :
149+ def revoke_token (self , token : uuid .UUID ) -> uuid . UUID :
83150 revoke_token_path = "token"
84151 headers = {
85152 "Authorization" : f"Bearer { token } " ,
@@ -89,7 +156,7 @@ def revoke_token(self, token: uuid.UUID) -> BugoutToken:
89156 )
90157 return result
91158
92- def revoke_token_by_id (self , token : uuid .UUID ) -> BugoutToken :
159+ def revoke_token_by_id (self , token : uuid .UUID ) -> uuid . UUID :
93160 revoke_token_path = f"token/{ token } "
94161 result = self ._call (method = Method .delete , path = revoke_token_path )
95162 return result
@@ -135,7 +202,7 @@ def get_user_tokens(
135202 token : uuid .UUID ,
136203 active : Optional [bool ] = None ,
137204 token_type : Optional [TokenType ] = None ,
138- ):
205+ ) -> BugoutUserTokens :
139206 get_user_tokens_path = "tokens"
140207 headers = {
141208 "Authorization" : f"Bearer { token } " ,
0 commit comments