from typing import Any, Dict, List from apollo_utils.core.utils.result_types import DictResult, ListResult from apollo_utils.job.clients.base.client import BaseApiClient from apollo_utils.job.clients.base.config import BaseConfig from apollo_utils.job.clients.utils.request_in_chunks.sync.request_in_chunks import request_in_chunks from apollo_playlists_messages.config import CHUNK_SIZE, PUBLIC from apollo_playlists_messages.constants import USER_DATA_HEADER, Service, APP_NAME from apollo_playlists_messages.logger import get_logger class UserDataClientConfig(BaseConfig): service = Service.USER_DATA logger = get_logger(APP_NAME) def __init__(self): self._load_attrs() super().__init__() class UserDataClient(UserDataClientConfig, BaseApiClient): @request_in_chunks(items_kwarg="ids", chunk_size=CHUNK_SIZE, result_type=ListResult) def get_events_list( self, ids: List[int], include: List[str] = ("all",), get_json: bool = True, **params ) -> List[Dict[str, Any]]: """Get events by ids with include Args: ids: List of event id(s) include: List of fields to include get_json: **params: """ request_body = { "id": ids, "include": include, } return self.send_request( "api/service/events/list/", method="POST", data=request_body, headers=USER_DATA_HEADER, get_json=get_json, **params, ).get("data", []) @request_in_chunks(items_kwarg="data", chunk_size=CHUNK_SIZE, result_type=DictResult) def post_messages(self, data: List[Dict[str, Any]], **params): """ Args: data: **params: Returns: """ request_body = {"public": PUBLIC, "data": data} return self.send_request( "api/service/messages/", method="POST", data=request_body, headers=USER_DATA_HEADER, get_json=True, **params, )