from typing import List, Dict, Any from apollo_utils.core.utils.result_types import DictResult 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 charts_feed_messages.constants import Service, USER_DATA_HEADER, CHUNK_SIZE class UserDataClientConfig(BaseConfig): service = Service.USER_DATA def __init__(self): self._load_attrs() super().__init__() class UserDataClient(UserDataClientConfig, BaseApiClient): @request_in_chunks(chunk_size=CHUNK_SIZE, items_kwarg="message_ids", result_type=DictResult) def get_messages_list( self, message_ids: List[int], include: List[str], get_json: bool = True, **params ) -> Dict[str, List[Dict[str, Any]]]: """Get messages by ids with include Args: message_ids: List of message id(s) include: List of fields to include get_json: **params: """ request_body = { "id": message_ids, "include": include } return self.send_request( "api/service/messages/list/", method="POST", data=request_body, headers=USER_DATA_HEADER, get_json=get_json, **params ) @request_in_chunks(chunk_size=CHUNK_SIZE, items_kwarg="feed_messages", result_type=DictResult) def post_messages_feed( self, feed_messages: List[Dict[str, Any]], get_json: bool = True, **params ) -> Dict[str, List[Dict[str, int]]]: """Post Feed Messages Args: feed_messages: list of created feed messages get_json: **params: Returns: """ request_body = { "data": feed_messages, } return self.send_request( "api/service/messages/feed/", method="POST", data=request_body, headers=USER_DATA_HEADER, get_json=get_json, **params )