from typing import Any, Dict, List from apollo_utils.core.utils.result_types import DictResult from apollo_utils.job.clients.base.client import BaseApiClient from apollo_utils.job.clients.utils.request_in_chunks.sync.request_in_chunks import request_in_chunks from juno_filters_messages import config from juno_filters_messages.clients.base_config import ApiConfig from juno_filters_messages.constants import CHUNK_SIZE, Service, USER_DATA_HEADER class UserDataClientConfig(ApiConfig): service = Service.USER_DATA class UserDataClient(UserDataClientConfig, BaseApiClient): def get_settings(self, settings_type: str = "web", settings_version: str = "1") -> List[dict]: result = self.send_request( "api/service/users/settings/list/", method="POST", data={"settings": {"type": settings_type, "version": settings_version}}, headers=USER_DATA_HEADER, get_json=True, ) return result["data"] def get_messages(self, event_id: int) -> List[dict]: result = self.send_request( "api/service/messages/list/", method="POST", data={"event_id": event_id}, headers=USER_DATA_HEADER, get_json=True, ) return result["data"] @request_in_chunks(chunk_size=CHUNK_SIZE, items_kwarg="data", result_type=DictResult) def post_messages(self, data: List[Dict[str, Any]]) -> Dict[str, Any]: return self.send_request( "api/service/messages/", method="POST", data={"public": config.MESSAGE_IS_PUBLIC, "data": data}, headers=USER_DATA_HEADER, get_json=True, )