/
urusai
/
code_sample
Обзор
Документация
Войти
/
urusai
/
code_sample
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/services/logs/base.py
58 строк
2 KB
nick
init
30 сен 2024, 16:12
30 сен 2024, 16:12
c68451c
Код
Авторство
О чём код?
import asyncio from typing import Any, Optional from fastapi.encoders import jsonable_encoder from dto.audit import EventLogCreateDTO from dto.users import FullUserDTO, SmallUserDTO from settings.api.settings import SettingsApplication from const.enums.logs_types import EventLogType from const.enums.logs_actions import EventLogAction from services.http_client.client import HTTPClient class BaseLoggingService: def __init__( self, http_client: HTTPClient, settings_app: SettingsApplication, ): self.http_client = http_client self.settings_app = settings_app async def create( self, user: FullUserDTO, title: str, action: EventLogAction, _type: EventLogType, target: str, after: Optional[dict[str, Any]] = None, before: Optional[dict[str, Any]] = None, ) -> None: url = f"{self.settings_app.LOGS_DOMAIN}/api/v1/logs" small_user = SmallUserDTO( id=user.id, first_name=user.first_name, last_name=user.last_name, login=user.login, ) request_model = EventLogCreateDTO( user=small_user, title=title, log_action=action, log_type=_type, target=target, before=before or {}, after=after or {}, service="nri", ) headers = {"Authorization": user.access_token} _ = asyncio.create_task( self.http_client.request( method="POST", url=url, json=jsonable_encoder(request_model.dict()), headers=headers, ) )