refactor: AdminActionsがSharedAdminUserActions を継承するように

pull/134/head
yupix 7 months ago
parent 80980cf263
commit d37c7ae058
No known key found for this signature in database
GPG Key ID: 2FF705F5C56D9C06

@ -2,7 +2,7 @@ from __future__ import annotations
from typing import TYPE_CHECKING, Any from typing import TYPE_CHECKING, Any
from mipac.abstract.action import AbstractAction from mipac.actions.admins.user import SharedAdminUserActions
from mipac.http import HTTPClient, Route from mipac.http import HTTPClient, Route
from mipac.models.admin import IndexStat, ModerationLog, ServerInfo, UserIP from mipac.models.admin import IndexStat, ModerationLog, ServerInfo, UserIP
from mipac.models.meta import AdminMeta from mipac.models.meta import AdminMeta
@ -16,10 +16,9 @@ if TYPE_CHECKING:
from mipac.manager.client import ClientManager from mipac.manager.client import ClientManager
class AdminActions(AbstractAction): class AdminActions(SharedAdminUserActions):
def __init__(self, *, session: HTTPClient, client: ClientManager): def __init__(self, *, session: HTTPClient, client: ClientManager):
self.__session = session super().__init__(session=session, client=client)
self.__client = client
async def get_meta(self, detail: bool = False) -> AdminMeta: async def get_meta(self, detail: bool = False) -> AdminMeta:
""" """
@ -31,13 +30,13 @@ class AdminActions(AbstractAction):
detail : bool, optional detail : bool, optional
flag of detail, by default False flag of detail, by default False
""" """
res: IAdminMeta = await self.__session.request( res: IAdminMeta = await self._session.request(
Route("POST", "/api/admin/meta"), Route("POST", "/api/admin/meta"),
json={"detail": detail}, # 現状detailがあってもなんも変わらない json={"detail": detail}, # 現状detailがあってもなんも変わらない
auth=True, auth=True,
lower=True, lower=True,
) )
return AdminMeta(res, client=self.__client) return AdminMeta(res, client=self._client)
async def update_user_note(self, user_id: str, text: str) -> bool: async def update_user_note(self, user_id: str, text: str) -> bool:
""" """
@ -53,7 +52,7 @@ class AdminActions(AbstractAction):
""" """
body = {"userId": user_id, "text": text} body = {"userId": user_id, "text": text}
return bool( return bool(
await self.__session.request( await self._session.request(
Route("POST", "/api/admin/update-user-note"), auth=True, json=body Route("POST", "/api/admin/update-user-note"), auth=True, json=body
) )
) )
@ -64,7 +63,7 @@ class AdminActions(AbstractAction):
) )
return bool( return bool(
await self.__session.request( await self._session.request(
Route("POST", "/api/admin/update-meta"), Route("POST", "/api/admin/update-meta"),
json=body, json=body,
auth=True, auth=True,
@ -73,49 +72,6 @@ class AdminActions(AbstractAction):
) )
) )
async def unsuspend_user(self, user_id: str) -> bool:
"""
Unsuspend user with specified Id
Endpoint: `/api/admin/unsuspend-user`
Parameters
----------
user_id : str
Id of user to unsuspend
Returns
-------
bool
success or failed
"""
return bool(
await self.__session.request(
Route("POST", "/api/admin/unsuspend-user"), json={"userId": user_id}, auth=True
)
)
async def suspend_user(self, user_id: str) -> bool:
"""
Suspends the user for the specified Id
Endpoint: `/api/admin/suspend-user`
Parameters
----------
user_id : str
Id of user to suspend
Returns
-------
bool
success or failed
"""
return bool(
await self.__session.request(
Route("POST", "/api/admin/suspend-user"), json={"userId": user_id}, auth=True
)
)
async def get_moderation_logs( async def get_moderation_logs(
self, self,
limit: int = 10, limit: int = 10,
@ -132,10 +88,10 @@ class AdminActions(AbstractAction):
"userId": user_id, "userId": user_id,
} }
res_moderation_logs: list[IModerationLog] = await self.__session.request( res_moderation_logs: list[IModerationLog] = await self._session.request(
Route("POST", "/api/admin/show-moderation-logs"), json=body, auth=True Route("POST", "/api/admin/show-moderation-logs"), json=body, auth=True
) )
return [ModerationLog(res, client=self.__client) for res in res_moderation_logs] return [ModerationLog(res, client=self._client) for res in res_moderation_logs]
async def get_all_moderation_logs( async def get_all_moderation_logs(
self, self,
@ -154,17 +110,17 @@ class AdminActions(AbstractAction):
} }
pagination = Pagination[IModerationLog]( pagination = Pagination[IModerationLog](
self.__session, Route("POST", "/api/admin/show-moderation-logs"), json=body self._session, Route("POST", "/api/admin/show-moderation-logs"), json=body
) )
while pagination.is_final is False: while pagination.is_final is False:
res_moderation_logs: list[IModerationLog] = await pagination.next() res_moderation_logs: list[IModerationLog] = await pagination.next()
for res_moderation_log in res_moderation_logs: for res_moderation_log in res_moderation_logs:
yield ModerationLog(res_moderation_log, client=self.__client) yield ModerationLog(res_moderation_log, client=self._client)
@cache("server_info") @cache("server_info")
async def get_server_info(self, **kwargs) -> ServerInfo: async def get_server_info(self, **kwargs) -> ServerInfo:
server_info_payload: IServerInfo = await self.__session.request( server_info_payload: IServerInfo = await self._session.request(
Route("POST", "/api/admin/server-info"), auth=True, lower=True Route("POST", "/api/admin/server-info"), auth=True, lower=True
) )
return ServerInfo(server_info_payload) return ServerInfo(server_info_payload)
@ -188,7 +144,7 @@ class AdminActions(AbstractAction):
""" """
body = {"to": to, "subject": subject, "text": text} body = {"to": to, "subject": subject, "text": text}
return bool( return bool(
await self.__session.request( await self._session.request(
Route("POST", "/api/admin/send-email"), auth=True, json=body Route("POST", "/api/admin/send-email"), auth=True, json=body
) )
) )
@ -207,7 +163,7 @@ class AdminActions(AbstractAction):
""" """
body = {"reportId": report_id, "forward": forward} body = {"reportId": report_id, "forward": forward}
return bool( return bool(
await self.__session.request( await self._session.request(
Route("POST", "/api/admin/resolve-abuse-user-report"), auth=True, json=body Route("POST", "/api/admin/resolve-abuse-user-report"), auth=True, json=body
) )
) )
@ -227,21 +183,21 @@ class AdminActions(AbstractAction):
str str
new password new password
""" """
return await self.__session.request( return await self._session.request(
Route("POST", "/api/admin/reset-password"), auth=True, json={"userId": user_id} Route("POST", "/api/admin/reset-password"), auth=True, json={"userId": user_id}
) )
async def get_table_stats(self) -> dict[str, ITableStats]: # TODO: モデルにしてもいいかも async def get_table_stats(self) -> dict[str, ITableStats]: # TODO: モデルにしてもいいかも
return await self.__session.request(Route("POST", "/api/admin/get-table-stats"), auth=True) return await self._session.request(Route("POST", "/api/admin/get-table-stats"), auth=True)
async def get_index_stats(self) -> list[IndexStat]: # TODO: モデルを改めて確認する async def get_index_stats(self) -> list[IndexStat]: # TODO: モデルを改めて確認する
res: list[IIndexStat] = await self.__session.request( res: list[IIndexStat] = await self._session.request(
Route("POST", "/api/admin/get-index-stats"), auth=True Route("POST", "/api/admin/get-index-stats"), auth=True
) )
return [IndexStat(i) for i in res] return [IndexStat(i) for i in res]
async def get_user_ips(self, user_id: str) -> list[UserIP]: async def get_user_ips(self, user_id: str) -> list[UserIP]:
res: list[IUserIP] = await self.__session.request( res: list[IUserIP] = await self._session.request(
Route("POST", "/api/admin/get-user-ips"), Route("POST", "/api/admin/get-user-ips"),
auth=True, auth=True,
json={"userId": user_id}, json={"userId": user_id},
@ -249,12 +205,6 @@ class AdminActions(AbstractAction):
) )
return [UserIP(i) for i in res] return [UserIP(i) for i in res]
async def show_user(self, user_id: str):
res: Any = await self.__session.request(
Route("POST", "/api/admin/show-user"), auth=True, json={"userId": user_id}
)
return res # TODO: 専用のモデルを作るべき
async def show_users( async def show_users(
self, self,
limit: int = 10, limit: int = 10,
@ -274,7 +224,7 @@ class AdminActions(AbstractAction):
"username": username, "username": username,
"hostname": hostname, "hostname": hostname,
} }
res: Any = await self.__session.request( res: Any = await self._session.request(
Route("POST", "/api/admin/show-users"), auth=True, json=body Route("POST", "/api/admin/show-users"), auth=True, json=body
) )

Loading…
Cancel
Save