from typing import List from apollo_delphi_events.config import OUTPUT_DT_FORMAT, TTL from apollo_delphi_events.constants import EVENT_TYPE_TO_OUTPUT_CODE def format_output_event(event: dict) -> dict: output_event = { "external_id": str(event["id"]), "code": EVENT_TYPE_TO_OUTPUT_CODE[event["meta"].pop("event_type")], "ttl": TTL, "meta": event.pop("meta"), "data": event.pop("data"), } output_event["meta"].pop("type", None) output_event["meta"].pop("domain", None) output_event["data"]["current_event_dt"] = event["created_at"].strftime(OUTPUT_DT_FORMAT) output_event["data"]["content"]["playlist"]["last_updated_at"] = output_event["data"]["content"]["playlist"][ "last_updated_at" ].strftime(OUTPUT_DT_FORMAT) return output_event def format_output(events: List[dict], public: bool = True, unique_key: str = None, unique_mode: str = None) -> dict: output = {"public": public, "data": [format_output_event(e) for e in events]} if unique_mode: # to provide uniqueness within the created events on server-side: Delphi can send duplicates output.update({"unique_mode": unique_mode, "unique_key": unique_key}) return output