from datetime import datetime from typing import List, Dict, Any from marshmallow import Schema from charts_feed_messages.schemas import FeedMessageSchema def create_feed_message(schema: Schema, message: Dict[str, Any]) -> Dict[str, Any]: """Create Feed Message by removing redundant fields, extending existing and adding additional data to the original message Args: schema: Marshmallow schema obj instance message: Returns: """ return schema.load(message) def get_feed_message_schema(): """Get Feed Message schema with updated context to be used when we get new ttl from Basic Message information """ schema = FeedMessageSchema() schema.context = {"utcnow": datetime.utcnow()} return schema def get_feed_messages(messages: List[Dict[str, Any]]) -> List[Dict[str, Any]]: """Handle List of basic messages to create Feed Message from each Args: messages: List of deserialized basic messages Returns: List of feed messages ready to be sent to User Data Api """ result = [] schema = get_feed_message_schema() for message in messages: result.append(create_feed_message(schema, message)) return result