mirror of
https://github.com/iio612/DEFENDER.git
synced 2026-02-13 19:24:23 +00:00
45 lines
1.8 KiB
Python
45 lines
1.8 KiB
Python
from typing import TYPE_CHECKING, Optional
|
|
|
|
from starlette.responses import JSONResponse
|
|
from core.classes.interfaces.irpc_endpoint import IRPC
|
|
from core.classes.modules.rpc.rpc_errors import JSONRPCErrorCode
|
|
|
|
if TYPE_CHECKING:
|
|
from core.loader import Loader
|
|
from core.definition import MUser
|
|
|
|
class RPCUser(IRPC):
|
|
def __init__(self, loader: 'Loader'):
|
|
super().__init__(loader)
|
|
|
|
def user_list(self, **kwargs) -> JSONResponse:
|
|
self.reset()
|
|
users = self.ctx.User.UID_DB.copy()
|
|
copy_users: list['MUser'] = []
|
|
|
|
for user in users:
|
|
copy_user = user.copy()
|
|
copy_user.connexion_datetime = copy_user.connexion_datetime.strftime('%d-%m-%Y')
|
|
copy_users.append(copy_user)
|
|
|
|
self.response_model['result'] = [user.to_dict() for user in copy_users]
|
|
|
|
return JSONResponse(self.response_model)
|
|
|
|
def user_get(self, **kwargs) -> JSONResponse:
|
|
self.reset()
|
|
uidornickname = kwargs.get('uid_or_nickname', '')
|
|
|
|
if not uidornickname:
|
|
self.response_model['error'] = self.create_error_response(JSONRPCErrorCode.INVALID_PARAMS, {'uid_or_nickname': 'The param to use is uid_or_nickname'})
|
|
return JSONResponse(self.response_model, self.http_status_code.HTTP_405_METHOD_NOT_ALLOWED)
|
|
|
|
user = self.ctx.User.get_user(uidornickname)
|
|
if user:
|
|
user_copy = user.copy()
|
|
user_copy.connexion_datetime = user_copy.connexion_datetime.strftime('%d-%m-%Y')
|
|
self.response_model['result'] = user_copy.to_dict()
|
|
return JSONResponse(self.response_model)
|
|
|
|
self.response_model['result'] = 'User not found!'
|
|
return JSONResponse(self.response_model, self.http_status_code.HTTP_404_NOT_FOUND) |