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_push_messages.constants import Service, CHUNK_SIZE, USER_DATA_HEADER 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="feed_messages", result_type=DictResult) def get_feed_messages( self, feed_messages: List[int], include: List[str], get_json: bool = True, **params ) -> Dict[str, List[Dict[str, Any]]]: """ Args: feed_messages: List of feed messages id include: get_json: **params: Returns: List of messages """ body = { "include": include, "id": feed_messages } return self.send_request( "api/service/messages/feed/list/", method="POST", data=body, headers=USER_DATA_HEADER, get_json=get_json, **params ) @request_in_chunks(chunk_size=CHUNK_SIZE, items_kwarg="push_messages", result_type=DictResult) def post_push_messages( self, push_messages: List[Dict[str, Any]], get_json: bool = True, **params ) -> Dict[str, List[Dict[str, Any]]]: request_body = { "data": push_messages, } return self.send_request( "api/service/messages/push/", method="POST", data=request_body, headers=USER_DATA_HEADER, get_json=get_json, **params )