diff --git a/services/reading-list-updater/hive/reading_list_updater/entry.py b/services/reading-list-updater/hive/reading_list_updater/entry.py index 2a6ecc1..ffd9fa2 100644 --- a/services/reading-list-updater/hive/reading_list_updater/entry.py +++ b/services/reading-list-updater/hive/reading_list_updater/entry.py @@ -53,3 +53,17 @@ def from_email_message(cls, email: EmailMessage) -> ReadingListEntry: kwargs["timestamp"] = date.datetime return cls(link, title, notes, **kwargs) + + def as_dict(self) -> dict[str]: + report = { + "meta": { + "timestamp": str(self.timestamp), + "type": "reading_list_entry", + }, + "link": self.link, + } + if self.title: + report["title"] = self.title + if self.notes: + report["notes"] = self.notes + return report diff --git a/services/reading-list-updater/hive/reading_list_updater/service.py b/services/reading-list-updater/hive/reading_list_updater/service.py index f18cae8..f5b766b 100644 --- a/services/reading-list-updater/hive/reading_list_updater/service.py +++ b/services/reading-list-updater/hive/reading_list_updater/service.py @@ -17,6 +17,7 @@ @dataclass class Service: email_queue: str = "readinglist.emails.received" + updates_queue: str = "readinglist.update.requests" on_channel_open: Optional[Callable[[Channel], None]] = None def on_email_received( @@ -30,7 +31,10 @@ def on_email_received( if content_type != "message/rfc822": raise ValueError(content_type) entry = ReadingListEntry.from_email_bytes(body) - raise NotImplementedError(entry) + channel.publish_request( + message=entry.as_dict(), + routing_key=self.updates_queue, + ) def run(self): with blocking_connection(on_channel_open=self.on_channel_open) as conn: