from datetime import datetime from typing import Any, Dict, List from marshmallow.exceptions import MarshmallowError from smelog.factory import BindableLogger from apollo_messages_views.config import FULL_APP_NAME from apollo_messages_views.schemas.factories import get_schema def handler(events: List[Dict[str, Any]], logger: BindableLogger, current_dt: datetime = None): current_dt = current_dt or datetime.utcnow() output_events = [] for event in events: try: output_event = get_schema(event["meta"]["type"], current_dt=current_dt).dump(event) output_events.append(output_event) except MarshmallowError as ex: logger.error(f"{FULL_APP_NAME}.feed_messages handler got broken event:\n" f"{ex}") return output_events